struts2 Struts比较

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界面,显示给客户端。 

 

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>
                <param name="id">${id}</param>
                 <param name="item">${item}</param>
                </result>
                <interceptor-ref name="token"></interceptor-ref>
          <interceptor-ref name="defaultStack"></interceptor-ref>
          <result name="invalid.token">/user/newinfo.jsp</result> 
           </action>

 

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

害死人啊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值