Struts Struts2 WebWork 比较
StrutsStruts2WebWork都是基于MVC架构的轻量及框架。在众多框架中,最具代表性的就是StrutsWebWork,而Struts2则综合了二者优点,它比过去所有其他的MVC框架更加优秀。
MVC模型是一种交互界面的结构组织模型,能够使软件的计算机模型独立于界面的构成。MVCTrygve Reenskaug提出,首先被用在SmallTalk中,MicrosoftMFC的基础类也是基于MVC的。
Struts2从名字上看是Struts的升级版,与Struts有着很近的血缘关系;事实上其与WebWork有着更多的相似之处反而与Struts框架有着几乎完全不通的体系结构。(我觉的之所以命名为Struts2,而不是WebWork2,还在与Struts的超牛名气和SSH框架整合应用的巨大人气;这样命名会使Struts的使用者乐于继续学习并使用,哪怕实际上与Struts有者很大的差别;另一方面还会使WebWork的使用者很快上手)。Struts2框架的核心部分是基于WebWork设计思想的,最明显的是大量拦截器的使用。
1.1Struts框架:
最早的MVC框架,完全基于前端控制器模式开发,最突出缺点:代码与Servlet API耦合过于紧密。
执行流程:
1)客户端浏览器发出请求
2)服务器端的 Struts 中心类 ActionServlet 找到 struts-config.xml 文件,并放入内存,
将文件中的内容作为请求路径映射。  
3ActionServlet 类在 struts-config.xml 文件中找到相关的请求路径映射后添充

ActionForm 
类,将前台传进来的表单域打包成 Bean  
4)转到 Action 类进行业务逻辑功能的实现,比如增、删、改、查数据库中的数据。
 
5)通过 struts-config.xml 文件的映射,找到逻辑处理结束后显示给客户端用户看到

的页面,转发功能的实现是通过 ActionForward 对象。
6)将页面返回给客户端。
1.2Struts2框架
综合了StrutsWebWork的所有优点,核心设计思想与WebWork相同。
 
执行流程:
1)客户端提交一个(HttpServletRequest)请求,如
http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)请求。
 2请求被提交到一系列的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、 FilterDispatcher)。注意:这里是有顺序的,先ActionContext CleanUp,再其他过滤器(Othter FiltersSiteMesh等),最后到FilterDispatcher
  3FilterDispatcher是控制器的核心,就是MVCStruts 2实现中控制层(Controller)的核心。
4  FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServlet Request)请求,如果ActionMapper决定需要调用某个ActionFilterDispatcher则把请求的处理交给ActionProxy
 5 ActionProxy通过Configuration Managerstruts.xml)询问框架的配置文件,找到需要调用的Action类。例如,用户注册示例将找到UserReg类。
  6ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。
 7一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result
1.3WebWork框架
最突出特点是代码不在以来ServletAPI
执行流程:
(1)        ServletDispatcher接收客户端请求
(2)        ServletDispatcher根据请求找到制定Action,并调用Action处理请求信息
(3)        Action处理完毕返回一个结果映射,改映射制定具体试图信息。
(4)        由试图信息找到制定JSP界面,显示给客户端。
 
参考资料:
5. 《开发者突击: Struts2 核心技术与 JavaEE 框架整合开发实战》 P6-1 5
参考资料 2 5 很详细,讲的很好,可以参考。