一.struts2框架简介 Struts2以WebWork优秀的设计思想为基础,吸收了Struts1的部分优点,建立了一个兼容WebWork和Struts1的框架,实现了MVC设计模式.Struts2是Struts的下一代产品,它在Struts1和WebWork的技术基础上进行了合并,是一种全新的框架.Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这使得业务逻辑控制器能够与ServletAPI完全脱离开. 二.Struts2的特性1.上手非常容易,可以使用起步教程,使用模板工程或者Maven原型建立struts2工程. 2.良好的设计.struts2中想要处理和HTTP相关的操作,只需要使用Struts框架的接口即可. 3.标签库功能强大,种类丰富.Struts2中所有的标签自带了Table内容,可以方便的处理格式. 4.支持POJO(Plain Ordinary java Object/PlainOld java Object,普通的javaBean)表单.Struts2中可以直接使用javabean获得客户的收入或者将属性表示出来,可以使用任意合适的类型来接受页面传来的数据或者数据表现出来. 5.支持众多的其他开源组件或技术扩展.Struts2可以方便的使用spring管理Struts的action创建,通过使用Spring可以充分的利用Spring的依赖功能,并且能够很好的集成其他的框架. 三.Struts2执行流程 (1)客户端浏览器发出HTTP请求。 (2)根据web.xml配置,该请求被FilterDispatcher接收。 (3)根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。 (4)Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。 ( 5)Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。 ( 6)返回HTTP响应到客户端浏览器。 # i9 _$ d1 a+ |$ a( o9 a$ s8 y
四.Struts2框架工作原理(1)客户端初始化一个执行Servlet容器的请求,这个请求经过一系列的过滤器(Filter),接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action,其中ActionMapper在Web应用启动时根据配置信息加载生成. (2)如果AcitonMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy,ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类.ActionProxy创建一个ActionInvocation的实例,ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及相关拦截器的调用. (3)一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果.返回结果通常是一个不要被表示的JSP. 五.Struts2框架实现MVC设计模式
6 [6 Z. q i( F! q! ?
六.Struts2与Struts1,WebWork比较1.Struts1 Struts1的核心是控制器,由两部分组成:核心控制器和业务逻辑控制器.核心控制器是ActionServlet,由Struts1提供,业务逻辑控制器是用户自定义的action,有应用开发者提供. 整个应用由客户端请求驱动,客户端向web发送的请求被struts1的核心控制器ActionServlet拦截,ActionServlet根据请求决定是否调用业务逻辑控制器处理用户请求,当用户请求完成后,其处理结果通过jsp呈现给用户.如果用户只是希望得到某个URL资源,得有ActionServlet将被请求的资源转发给用户. 2.WebWork WebWork是建立在称为XWork的Command模式框架之上的强大的基于Web的MVC框架.它描述了从客户端的一次请求到最后服务器响应的整个执行过程. WebWork由Actions,Results,Interceptors三个关键部分组成.其中一个Action代表一次请求或调用.Action类要实现Action接口,它要实现默认的execute方法,并返回一个在配置文件中定义的Result.Results是一个结果页面的定义.它用来指示Actio执行之后,如果显示结果.Interceptors是WebWork的拦截器,拦截Action的请求,在Action执行之前或之后调用拦截方法. 相对于Struts,WebWork的优点(1)aciton无需与Servlet API耦合,更容易测试.(2)action无需与WebWork耦合,代码重用率更高.(3)支持更多的表现层技术,有更好的适应性. 3.Struts2 Struts2是用户了WebWork和Struts的优点,但是更胜过它们.Struts2的优势所在: (1)Struts2更加优雅一些,至少Action变成了一个纯粹的POJO,而不再需要实现任何一个接口. (2)Struts2全面应有DOJO. (3)Struts借鉴了Spring的方式,提供了对action名称通配的支持. (4)Struts2引入了消息存储拦截器MessageStoreInterceptor用于存放,检索各种提示,错误消息等,在一个session生命中都可使用. (5)struts可以使用任何数据访问技术. 七.总结 这些是Struts2的一些宏观的内容,在每次的学习总,宏观把控好了,至少在细节方面就不会走偏了,更可能让你的学习加速度达到最大.宏观了解一下Struts2的知识,更加有助于以后更好的的学习Struts2. : G5 m; u+ U9 \% {
/ }2 w& U, Q' D b0 y2 H5 n
|