有些时间,我总是忘记为什么有struts2? struts2到底是个什么东西?(虽然平时写很多代码,但是偶尔会冒出这个问题,呵呵,做个记录)
1.Struts2是什么?
java web应用框架,封装MVC框架的思想和servlet
2.为什么会有Struts?
早期大家都用MVC来使项目的流程更加清晰,更加易于维护,但是各个公司对MVC的理解不同。导致许多争议,但都说自己的才是真正的MVC。
所以sun公司就制定了一个规范来解决这个问题。那就是定义了Struts2框架。(当然不仅仅是这个方面)
(打个比方:你们公司老板不固定上下班。有一天老板说早上9点上班,5点下班,做个规定。当然做这个规定给公司会带来很多好处)
4.Struts2运行原理?
上一个官方原理图
运行原理:
一个请求在Struts2框架中的处理大概分为以下几个步骤
1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求
2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,
这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是
(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。
在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper
在上述过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。
更好明白原理请看struts2入门案例:http://blog.csdn.net/todaymz/article/details/8743712
5.Struts2优缺点?
(网络搜集,未证实)
优点:
1.Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发的过程。
2.使用OGNL进行参数传递
3.强大的拦截器
4.易于测试
5.易于扩展的插件机制
6.模块化
7.全局结果与声明式异常
缺点:
对Servlet的依赖性过强
对Action执行的控制困难
对事件支持不够
struts2对ajax的支持还不太理想。
6.Struts2重要知识?
OGNL
XWOrk
ValueStack
支持EL
Action核心
Result基本原理
Struts核心标记库
拦截器
非UI标记
资源文件与国际化
7.Struts2和Struts1比较?
Struts2和Struts1都是MVC框架,Struts1对service依赖更大,Struts2是Webwork2基础上面发展而来的,并非Struts1的升级。
下面给点阿帕奇公司公布的比较文档:
http://www.cnblogs.com/tongzhiyong/archive/2007/02/24/655178.aspx
----------------------我是分割线---------------------------
转载请说明出处:http://blog.csdn.net/todaymz/article/details/8744038