编程经验系列Java开云kaiyun(中国)习杂谈(九):Struts2

时间:2008-10-06 16:54:00   来源:开云网页版     [字体: ]
简短回顾一段历史:随着时间的推移,Web应用框架经常变化的需求,产生了几个下一代 Struts的解决方案。其中的Struts Ti 继续坚持 MVC模式的基础上改进,继续Struts的成功经验。 WebWork项目是在2002年3月发布的,它对Struts式框架进行了革命性改进,引进了不少新的思想,概念和功能,但和原Struts代码并不兼 容。WebWork是一个成熟的框架,经过了好几次重大的改进与发布。在2005年12月,WebWork与Struts Ti决定合拼, 再此同时,Struts Ti 改名为 Struts Action Framework 2.0,成为Struts真正的下一代。
  看看Struts-2的处理流程:
  1) Browser产生一个请求并提交框架来处理:根据配置决定使用哪些拦截器、action类和结果等。
  2) 请求经过一系列拦截器:根据请求的级别不同拦截器做不同的处理。这和Struts-1的RequestProcessor类很相似。
  3) 调用Action: 产生一个新的action实例,调用业务逻辑方法。
  4) 调用产生结果:匹配result class并调用产生实例。
  5) 请求再次经过一系列拦截器返回:过程也可配置减少拦截器数量
  6) 请求返回用户:从control返回servlet,生成Html.
  这里很明显的一点是不存在FormBean的作用域封装,直接可以从Action中取得数据。 这里有一个Strut-2配置的web.xml文件:
  controller
  org.apache.struts.action2.dispatcher.FilterDispatcher
  cotroller
  /*
  注意到以往的servlet变成了filter,ActionServlet变成了FilterDispatcher,*.do变成了/*.filter 配置定义了名称(供关联)和filter的类。filter mapping让URI匹配成功的的请求调用该filter.默认情况下,扩展名为 ".action ".这个是在default.properties文件里的 "struts.action.extension "属性定义的。