Struts,Struts2及WebWork比较
Struts,Struts2及WebWork都是基于MVC架构的轻量及框架。在众多框架中,最具代表性的就是Struts及WebWork,而Struts2则综合了二者优 点,它比过去所有其他的MVC框架更加优秀。
MVC模 型是一种交互界面的结构组织模型,能够使软件的计算机模型独立于界面的构成。MVC有Trygve Reenskaug提出,首先被用在SmallTalk中,Microsoft的MFC的基础类也是基于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 文件,并放入内 存,
将文件 中的内容作为请求路径映射。
(3)ActionServlet 类 在 struts-config.xml 文件中找到相关的请求路径映射后添充
ActionForm 类,将前台传进来的表单域打包成 Bean。
(4)转到 Action 类进行业务逻辑 功 能的实现,比如增、删、改、查数据库中的数据。
(5)通过 struts-config.xml 文件的映射,找到 逻辑处理结束后显示给客户端用户看到
的页面,转发功能的实现是通过 ActionForward 对 象。
将文件 中的内容作为请求路径映射。
(3)ActionServlet 类 在 struts-config.xml 文件中找到相关的请求路径映射后添充
ActionForm 类,将前台传进来的表单域打包成 Bean。
(4)转到 Action 类进行业务逻辑 功 能的实现,比如增、删、改、查数据库中的数据。
(5)通过 struts-config.xml 文件的映射,找到 逻辑处理结束后显示给客户端用户看到
的页面,转发功能的实现是通过 ActionForward 对 象。
(6)将页面返回给客户端。
1.2Struts2框架
综 合了Struts和WebWork的 所有优点,核心设计思想与WebWork相 同。
执 行流程:
(1) 客户端提交一个(HttpServletRequest) 请求,如
http://localhost: 8080/bookcode/ch2/Reg.action就 是提交一个(HttpServletRequest) 请求。
http://localhost: 8080/bookcode/ch2/Reg.action就 是提交一个(HttpServletRequest) 请求。
(2)请 求被提交到一系列的过滤器(Filter), 如(ActionContextCleanUp、 其他过滤器(SiteMesh等)、 FilterDispatcher)。 注意:这里是有顺序的,先ActionContext CleanUp, 再其他过滤器(Othter Filters、SiteMesh等), 最后到FilterDispatcher。
(3)FilterDispatcher是 控制器的核心,就是MVC的Struts 2实 现中控制层(Controller) 的核心。
(4) FilterDispatcher询 问ActionMapper是 否需要调用某个Action来 处理这个(HttpServlet Request) 请求,如果ActionMapper决 定需要调用某个Action,FilterDispatcher则 把请求的处理交给ActionProxy。
(5) ActionProxy通 过Configuration Manager(struts.xml) 询问框架的配置文件,找到需要调用的Action类。 例如,用户注册示例将找到UserReg类。
(6)ActionProxy创 建一个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-15
参考资料2和5很详细,讲的很 好,可以参考。
没有评论:
发表评论