Struts2的介绍及总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Struts2在WebWork基础上发展起来的,可扩展的JAVA EE web框架。
框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。
Action类:Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。
Struts2提供一个ActionSupport基类去实现常用的接口。
Action接口不是必须的,任何有execute标识的POJO 对象都可以用作Struts2的Action对象。
线程模式:Struts2Action对象为每一个请求产生一个实例,因此没有线程安全问题。
Servlet依赖:Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。
如果需要,Struts2 Action仍然可以访问初始的request和response。
但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
可测试性:Struts2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。
捕获输入:Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。
Action属性能够通过web页面上的taglibs访问。
表达式语言:Struts 2 使用"ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。
ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
Struts2不仅支持JSTL,
Struts2 还可使用OGNL进行类型转换。
提供基本和常用对象的转换器。
校验:Struts2支持通过validate方法和XWork校验框架来进行校验。
XWork 校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性。
一个请求在Struts 2框架中的处理大概分为以下几个步骤。
客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入
http://localhost: 8080/xxx/xxx/Reg.action就是提交一个(HttpServletRequest)请求。
请求被提交到一系列(主要是3层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、FilterDispatcher)。
注意:这里是有顺序的,先ActionContext CleanUp,再其他过滤器(Othter Filters、SiteMesh等),最后到FilterDispatcher。
FilterDispatcher是控制器的核心,就是MVC的Struts 2中实现控制层(Controller)的核心。
FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServlet Request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。
ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类。
例如,用户注册示例将找到UserReg类。
ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。
但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。
一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。