s2sh的MVC执行流程和执行原理
=======================执行流程
1. 从页面开始,提交表单或者点击链接会触发一个action
2. action交给struts2处理,读取src目录struts.xml文件,在配置中找到对应的action
3. 根据class="XXXAction"交给Spring(为什么struts的action会交给spring处理呢?
原因是:Struts2提供一个jar包:struts2-spring-plugin-2.1.2.jar,有个struts.properties文件配置了这样一句话:struts.objectFactory.spring.autoWire = name。
也就是有了上面那个jar包之后,根据name自动提交给Spring处理),读取Spring容器的配置文件/WebRoot/WEB-INF/applicationContext.xml文件。 根据applicationContext.xml配置文件找到xxx.xxx.action.xxxAction类,
其中有一个属性xxxService,并提供了setxxxService()方法,由applicationContext.xml文件得知该xxxService对象由Spring容器依赖注入,set注入。
4. 取得xxxService对象(接口对接口实现类的一个引用)后,调用它的方法。后面的就是访问DAO了,一长串省略号代替
5.执行的结果会在action的对应的方法中以字符串的形式给出。然后根据配置文件中的result.找到下一步要执行的动作,是跳转到页面显示还是继续交给其他的action处理。
6. 显示页面。 =========================
执行原理
在struts-config.xml 中的action的type实现spring 的请求代理 。
而在spring的配置文件中对action类进行注入。
action类中注入service 而在service中注入dao. 当服务器起动时,spring会对类自动设置 。
当访问*.do时。它的执行的顺序。
从action --->service----->dao.然后反回。
最新文章
- jvm内存区域
- AngularJs2 学习之路-笔记1-Atscript Ts ES6包含关系
- Windows 2012 R2图标以及字体颜色发生变化更改成默认设置
- XHTML与HTML的区别
- mysql死锁问题分析
- 使用C#开发屏幕保护程序步骤
- tomcat bug之部署应用的时候经常会发上startup failed due to previous errors
- java基础之 switch
- 关于a标签的target属性
- IOS缓存之NSCache缓存
- HDU5780 gcd 欧拉函数
- android 注销
- ueditor 百度编辑器 自定义图片上传路径和格式化上传文件名
- js触摸屏案例
- Enze fourth day(循环语句 一)
- [DP之树形DP]
- HDU 5534 Partial Tree
- JS框架设计读书笔记之-选择器引擎01
- UVA 11825 Hackers' Crackdown
- PEM routines:PEM_read_bio:no start line