struts2的执行原理(执行流程,过滤器和拦截器)
来源:互联网 发布:淘宝电子商务公司名称 编辑:程序博客网 时间:2024/04/30 09:38
一个请求在Struts2框架中的处理大概分为以下几个步骤:
1 客户端发送请求;
2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action。FilterDispatcher的功能如下:
(1)执行Actions (2)清除ActionContext (3)维护静态内容 (4)清除request生命周期内的XWork的interceptors
4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper
拦截器与过滤器:
1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。
2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。
3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。
4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。
5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。
在上述过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。
Struts2的目标很简单--使Web开发变得更加容易。为了达成这一目标,Struts2中提供了很多新特性,比如智能的默认设置、annotation的使用以及"惯例重于配置"原则的应用,而这一切都大大减少了XML配置。Struts2中的Action都是POJO,这一方面增强了Action本身的可测试性,另一方面也减小了框架内部的耦合度,而HTML表单中的输入项都被转换成了恰当的类型以供action使用。开发人员还可以通过拦截器(可以自定义拦截器或者使用Struts2提供的拦截器)来对请求进行预处理和后处理,这样一来,处理请求就变得更加模块化,从而进一步减小耦合度。模块化是一个通用的主题--可以通过插件机制来对框架进行扩展;开发人员可以使用自定义的实现来替换掉框架的关键类,从而获得框架本身所不具备的功能;可以用标签来渲染多种主题(包括自定义的主题);Action执行完毕以后,可以有多种结果类型--包括渲染JSP页面,Velocity和Freemarker模板,但并不仅限于这些。
- struts2的执行原理(执行流程,过滤器和拦截器)
- Struts2中拦截器与过滤器的执行顺序
- Struts2中拦截器与过滤器的执行顺序
- Struts2中拦截器与过滤器的执行顺序
- Struts2中拦截器与过滤器的执行顺序
- Struts2中拦截器与过滤器的执行顺序
- struts2的执行流程(执行原理)
- struts2执行流程与拦截器介绍
- struts2的请求流程,过滤器和拦截器区别
- 拦截器的概述和struts2的执行流程(十)
- java拦截器,过滤器,监听器的区别和执行顺序
- java拦截器,过滤器,监听器的区别和执行顺序
- 拦截器和过滤器监听器的区别执行顺序
- struts2 工作原理和执行流程
- struts2的执行流程及工作原理
- struts2的执行流程、工作原理
- struts2的执行流程、工作原理
- Struts2的执行原理&工作流程
- Linux网络编程——多播
- 创建型[单例模式]
- sklearn 数据缺失值处理
- Linux 网络编程——TCP编程之客户端
- 朴素贝叶斯——理论篇
- struts2的执行原理(执行流程,过滤器和拦截器)
- linux驱动程序开发 1
- android json解析及简单例子
- Linux网络编程--tcp服务器
- 使用 tag 文件定义自定义标签
- nyoj 1238 最少换乘 【最短路径-Dijksra】
- ImageView设置selector不起作用原因
- 用swap方法强行释放STL容器占用的内存
- 项目需求:将购物车中的商品添加到订单表和订单商品表