Struts2拦截器介绍

Struts2 拦截器在访问某个 Action 方法之前或之后实施拦截, Struts2 拦截器是可插拔的, 拦截器是 AOP 的一种实现.

拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链. 在访问被拦截的方法时, Struts2拦截器链中的拦截器就会按其之前定义的顺序被依次调用

每个拦截器都是实现了 com.opensymphony.xwork2.interceptor.Interceptor接口的 Java 类:
该接口内的方法有:
init: 该方法将在拦截器被创建后立即被调用, 它在拦截器的生命周期内只被调用一次. 可以在该方法中对相关资源进行必要的初始化
intercept: 每拦截一个动作请求, 该方法就会被调用一次.
destroy: 该方法将在拦截器被销毁之前被调用, 它在拦截器的生命周期内也只被调用一次.

Struts2 会依次调用为某个 Action 注册的每一个拦截器的 interecept 方法.
每次调用 intercept 方法时, Struts2 会传递一个 ActionInvocation 接口的实例.
ActionInvocation: 代表一个给定动作的执行状态, 拦截器可以从该类的对象里获得与该动作相关联的 Action 对象和 Result 对象. 在完成拦截器自己的任务之后, 拦截器将调用 ActionInvocation 对象的 invoke 方法前进到 Action 处理流程的下一个环节.
还可以调用 ActionInvocation 对象的 addPreResultListener 方法给 ActionInvocation 对象 “挂” 上一个或多个 PreResultListener 监听器. 该监听器对象可以在动作执行完毕之后, 开始执行动作结果之前做些事情
AbstractInterceptor 类实现了 Interceptor 接口. 并为 init, destroy 提供了一个空白的实现

Struts2自带的拦截器:

拦截器名字说明
Alias Interceptoralias在不同请求之间将请求参数在不同名字件转换,请求内容不变
Chaining Interceptorchain让前一个Action的属性可以被后一个Action访问,现在和chain类型的result()结合使用
Checkbox Interceptorcheckbox添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox
Cookies Interceptorcookies使用配置的name,value来是指cookies
Conversion Error InterceptorconversionError将错误从ActionContext中添加到Action的属性字段中
Create Session InterceptorcreateSession自动的创建HttpSession,用来为需要使用到HttpSession的拦截器服务
Debugging Interceptordebugging提供不同的调试用的页面来展现内部的数据状况
Execute and Wait InterceptorexecAndWait在后台执行Action,同时将用户带到一个中间的等待页面
Exception Interceptorexception将异常定位到一个页面
File Upload InterceptorfileUpload提供文件上传功能
I18n Interceptori18n记录用户选择的locale
Logger Interceptorlogger输出Action的名字
Message Store Interceptorstore存储或者访问实现ValidationAware接口的Action类出现的消息,错误,字段错误等
Model Driven Interceptormodel-driven如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中
Scoped Model Drivenscoped-model-driven如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法将其放入Action内部
Parameters Interceptorparams将请求中的参数设置到Action中去
Prepare Interceptorprepare如果Acton实现了Preparable,则该拦截器调用Action类的prepare方法
Scope Interceptorscope将Action状态存入session和application的简单方法
Servlet Config InterceptorservletConfig提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问
Static Parameters InterceptorstaticParams从struts.xml文件中将常量的内容设置到对应的Action中
Roles Interceptorroles确定用户是否具有JAAS指定的Role,否则不予执行
Timer Interceptortimer输出Action执行的时间
Token Interceptortoken通过Token来避免双击,表单重复提交
Token Session InterceptortokenSession和Token Interceptor一样,不过双击的时候把请求的数据存储在Session中
Validation Interceptorvalidation使用action-validation.xml文件中定义的内容校验提交的数据
Workflow Interceptorworkflow调用Action的validate方法,一旦有错误返回,重新定位到INPUT画面
Parameter Filter InterceptorN/A从参数列表中删除不必要的参数
Profiling Interceptorprofiling通过参数激活profile

Coding Diary

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值