Struts 2的拦截器
需积分: 0 137 浏览量
更新于2011-01-12
收藏 193KB PPT 举报
Struts2 拦截器是该框架的核心组件之一,主要负责在Action执行前后插入额外的功能处理。拦截器是基于Java的动态代理机制实现的,它允许开发者在不修改Action类本身的情况下,增加新的功能或者改变Action的行为。下面将详细阐述Struts2拦截器的概念、原理、配置以及使用方法。
**概念和原理**
Struts2的拦截器是一个动态拦截Action调用的对象,它允许在Action执行前或执行后插入自定义代码。拦截器通过拦截器链(Interceptor Chain)的形式工作,即一系列拦截器按照预设顺序进行调用。当请求到达Struts2的ServletDispatcher时,框架会解析配置文件,实例化相应的拦截器,并形成一个调用列表,按照列表顺序逐一执行。
**拦截器链**
拦截器链是多个拦截器按照特定顺序组成的序列。每个拦截器都有机会在Action执行前后执行其定制逻辑。如果一个拦截器决定阻止Action的执行,那么后续的拦截器都不会被调用。拦截器链的配置允许开发者灵活地调整业务流程。
**拦截器实现原理**
当请求到达Struts2时,框架会查找配置文件,如`struts-default.xml`,其中包含了默认的拦截器及其配置。这些拦截器实例化后形成一个列表,然后由ServletDispatcher按照配置的顺序逐一调用。拦截器的调用过程类似于链式调用,每个拦截器执行完毕后会传递控制权给下一个拦截器,直到整个链执行完成。
**拦截器的配置**
1. **自定义拦截器**: 开发者可以通过实现`com.opensymphony.xwork2.interceptor.Interceptor`接口或继承`AbstractInterceptor`抽象类来创建自定义拦截器。
2. **配置拦截器**: 在Struts2的配置文件(如`struts.xml`或`struts-default.xml`)中,使用`<interceptors>`标签定义拦截器,`<interceptor>`标签定义单个拦截器,通过`name`属性指定拦截器名,`class`属性指定拦截器类全路径。
3. **拦截器栈**: 使用`<interceptor-stack>`标签定义拦截器栈,它可以包含多个`<interceptor-ref>`标签,用于引用已定义的拦截器,并定义它们的执行顺序。
4. **引用拦截器**: 在`<action>`标签内,使用`<interceptor-ref>`标签引用拦截器栈或单个拦截器,定义Action应使用的拦截器列表。
5. **参数配置**: 可以通过`<param>`标签为拦截器传递参数,例如:`<param name="key">value</param>`。
**拦截器配置示例**
```xml
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="timer" class="..."/>
<interceptor name="logger" class="..."/>
<interceptor-stack name="myStack">
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
</interceptor-stack>
</interceptors>
<action name="login" class="tutorial.Login">
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
<result name="input">/login.jsp</result>
<result name="success" type="redirectAction">/secure/home</result>
</action>
</package>
```
在这个例子中,`login` Action会先经过名为`timer`的拦截器,然后是`logger`拦截器,最后才执行Action本身。如果在拦截器栈`myStack`中定义了拦截器,也可以通过引用`myStack`来一次性应用多个拦截器。
**内置拦截器**
Struts2提供了许多内置的拦截器,例如:
- `fileUpload`:处理文件上传。
- `i18n`:提供国际化支持。
- `params`:将请求参数注入到Action中。
开发者可以根据需要选择或自定义拦截器,以满足不同的业务需求。拦截器使得Struts2更加灵活和可扩展,是构建企业级Web应用的重要工具。
sspg62
- 粉丝: 0
- 资源: 5
最新资源
- 基于ssh员工管理系统
- 5G SRM815模组原理框图.jpg
- T型3电平逆变器,lcl滤波器滤波器参数计算,半导体损耗计算,逆变电感参数设计损耗计算 mathcad格式输出,方便修改 同时支持plecs损耗仿真,基于plecs的闭环仿真,电压外环,电流内环
- 毒舌(解锁版).apk
- 显示HEX、S19、Bin、VBF等其他汽车制造商特定的文件格式
- 操作系统实验 Ucore lab5
- 8bit逐次逼近型SAR ADC电路设计成品 入门时期的第三款sarADC,适合新手学习等 包括电路文件和详细设计文档 smic0.18工艺,单端结构,3.3V供电 整体采样率500k,可实现基
- 操作系统实验 ucorelab4内核线程管理
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无刷电机 提供源码,原理图
- Matlab Simulink#直驱永磁风电机组并网仿真模型 基于永磁直驱式风机并网仿真模型 采用背靠背双PWM变流器,先整流,再逆变 不仅实现电机侧的有功、无功功率的解耦控制和转速调节,而且能实