struts2 Struts比较

来源:互联网 发布:php经典书籍 编辑:程序博客网 时间:2024/06/13 18:56
MVC模型是一种交互界面的结构组织模型,能够使软件的计算机模型独立于界面的构成。MVCTrygveReenskaug提出,首先被用在SmallTalk中,MicrosoftMFC的基础类也是基于MVC的。
Struts2从名字上看是Struts的升级版,与Struts有着很近的血缘关系;事实上其与WebWork有着更多的相似之处反而与Struts框架有着几乎完全不通的体系结构。(我觉的之所以命名为Struts2,而不是WebWork2,还在与Struts的超牛名气和SSH框架整合应用的巨大人气;这样命名会使Struts的使用者乐于继续学习并使用,哪怕实际上与Struts有者很大的差别;另一方面还会使WebWork的使用者很快上手)。Struts2框架的核心部分是基于WebWork设计思想的,最明显的是大量拦截器的使用。

1.1Struts框架:

最早的MVC框架,完全基于前端控制器模式开发,最突出缺点:代码与ServletAPI耦合过于紧密。
执行流程:
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)。注意:这里是有顺序的,先ActionContextCleanUp,再其他过滤器(Othter FiltersSiteMesh等),最后到FilterDispatcher
 3FilterDispatcher是控制器的核心,就是MVCStruts 2实现中控制层(Controller)的核心。
4 FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServletRequest)请求,如果ActionMapper决定需要调用某个ActionFilterDispatcher则把请求的处理交给ActionProxy
 5 ActionProxy通过ConfigurationManagerstruts.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界面,显示给客户端。 

 

struts2 action之间带参数跳转

       <action  name="Contents"  class ="action.Contents">             
               <result  name="success">/user/newinfo.jsp</result>
               <result name="answer"type="redirectAction">
               <param name="actionName">ContView</param>
               <paramname="id">${id}</param>
                <paramname="item">${item}</param>
               </result>
               <interceptor-refname="token"></interceptor-ref>
         <interceptor-refname="defaultStack"></interceptor-ref>
         <resultname="invalid.token">/user/newinfo.jsp</result> 
          </action>

 

网上文章讲的type="redirect"或type="redirect-action">都不知他们怎么用的,我实验根本就不能运行,

害死人啊!

原创粉丝点击