1、Struts 2概述(免费传播文档 从我做起)Struts 1.0原理ActionServletJSPJavaBean 数据库数据库ActionActionForm,ActionMapping123456开发时只需关注:两个核心组件 :ActionFormAction一个配置文件1、页面提交的数据封装到ActionForm中2、通过请求路径查找 Struts-config.xml中 Action的配置,找到并调用对应的 ActionController(控制器 ) Model(模型 ) View(视图 ) 查找 ActionMapping,找到正确的JSP页面,并转发配置文件struts-co
2、nfig.xml 配置 Form Bean和 Action Bean 服务器启动时, Struts装载 struts-config.xml信息Struts 1.0的缺点所支持的表现层技术比较单一只支持 JSP, 不支持目前流行的 FreeMarker、 Velocity等与 Servlet API耦合严重,难于测试它完全是基于 Servlet API的,所以在 Struts 1的业务逻辑控制器内,充满了大量的 Servlet API。Servlet严重依赖于 Web 服务器,尤其是HttpServletRequest和 HttpServletResponse两个参数,通常由Web 容器负责实例
3、化。一旦脱离了 Web 服务器, Action将很难测试。属于侵入式设计Action中包含了大量的 Struts1.0的 API , 影响了代码的重构。一旦系统需要重构时,这些 Action类将完全没有利用价值,成为一堆废品。Struts2Struts2是在 WebWork2基础发展而来的。和 struts1一样, Struts2也属于 MVC框架。不过有一点大家需要注意的是:尽管 Struts2和 struts1在名字上的差别不是很大,但Struts2和 struts1在代码编写风格上几乎是不一样的。那么既然有了 struts1,为何还要推出 struts2。主要是因为 struts2有以下
4、优点:1 在软件设计上 Struts2没有像 struts1那样跟 Servlet API和 struts API有着紧密的耦合, Struts2的应用可以不依赖于 Servlet API和 struts API。 Struts2的这种设计属于无侵入式设计,而 Struts1却属于侵入式设计。public class OrderListAction extends Action public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletRe
5、sponse response)throws Exception 2 Struts2提供了拦截器,实现如权限拦截等功能。3 Strut2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。在Struts1中,如果我们要实现同样的功能,就必须向 Struts1的底层实现 BeanUtil注册类型转换器才行。4 Struts2提供支持多种表现层技术,如: JSP、 freeMarker、 Velocity等5 Struts2的输入校验可以对指定方法进行校验,解决了 Struts1长久之痛。6 提供了全局范围、包范围和 Action范围的国际化资源文件管理实现Struts 1.0的缺点pub
6、lic class LoginAction extends Actionpublic ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws AuctionExceptionLoginForm loginForm = (LoginForm)form;/当用户名为 scott,密码为 tiger时返回成功if (“scott”.equals(loginForm.getUsername() elseret
7、urn mapping.findForward(“error“);业务逻辑控制器必须继承 Struts 1提供的 Action类/将其强制类型转换为登录用的ActionForm返回一个 ActionForward对象Struts 2Struts 2以 WebWork 优秀的设计思想为核心,吸收了 Struts 1的部分优点,建立了一个兼容 WebWork 和 Struts 1的 MVC框架。WebWork WebWork 是由 OpenSymphony组织开发的,致力于组件化和代码重用的 J2EE Web 框架 WebWork 支持更多的表现层技术,有更好的适应性。 例如: Velocity、
8、 FreeMarker WebWork 采用了一种更加松耦合的设计,让 Action不再与 Servlet API耦合。使单元测试更加方便。 Action无须与 WebWork 耦合,具有更好的代码重用率。什么是 Struts2? Struts框架架构Struts2的体系与 Struts1.x体系差别非常大,因为 Struts2使用了 WebWork 的设计核心 (XWork )。在 Struts2中使用拦截器来处理用户请求,从而允许用户业务逻辑控制器与Servlet API分离。MVC / Struts2架构Struts 2控制器业务逻辑 控制 器 ActionStruts 2 的业务控制器并没有与ServletAPI耦合,所以无法处理客户请求,而 Struts 2提供了系列拦截器负责将HttpServletRequest请求中的参数解析出来,然后输出给 Action 。