对struts拦截器的理解
什么是AOP?
AOP是面向切片编程;可以通过预编译的方式;
什么是拦截器?
在Webwork文档中解释为:动态拦截Action调用的对象;它 是 一种机制;是Action执行前后的代码;
Struts2提供的拦截器功能:
|
拦截器 |
名字 |
说明 |
|
Alias Interceptor |
alias |
在不同请求之间将请求参数在不同名字件转换,请求内容不变 |
|
Chaining Interceptor |
chain |
让前一个Action的属性可以被后一个Action访问,现在和chain类型的result(<result type=”chain”>)结合使用。 |
|
Checkbox Interceptor |
checkbox |
添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox。 |
|
Cookies Interceptor |
cookies |
使用配置的name,value来是指cookies |
|
Conversion Error Interceptor |
conversionError |
将错误从ActionContext中添加到Action的属性字段中。 |
|
Create Session Interceptor |
createSession |
自动的创建HttpSession,用来为需要使用到HttpSession的拦截器服务。 |
|
Debugging Interceptor |
debugging |
提供不同的调试用的页面来展现内部的数据状况。 |
|
Execute and Wait Interceptor |
execAndWait |
在后台执行Action,同时将用户带到一个中间的等待页面。 |
|
Exception Interceptor |
exception |
将异常定位到一个画面 |
|
File Upload Interceptor |
fileUpload |
提供文件上传功能 |
|
I18n Interceptor |
i18n |
记录用户选择的locale |
|
Logger Interceptor |
logger |
输出Action的名字 |
|
Message Store Interceptor |
store |
存储或者访问实现ValidationAware接口的Action类出现的消息,错误,字段错误等。 |
|
Model Driven Interceptor |
model-driven |
如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中。 |
|
Scoped Model Driven |
scoped-model-driven |
如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法将其放入Action内部。 |
|
Parameters Interceptor |
params |
将请求中的参数设置到Action中去。 |
|
Prepare Interceptor |
prepare |
如果Acton实现了Preparable,则该拦截器调用Action类的prepare方法。 |
|
Scope Interceptor |
scope |
将Action状态存入session和application的简单方法。 |
|
Servlet Config Interceptor |
servletConfig |
提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问。 |
|
Static Parameters Interceptor |
staticParams |
从struts.xml文件中将<action>中的<param>中的内容设置到对应的Action中。 |
|
Roles Interceptor |
roles |
确定用户是否具有JAAS指定的Role,否则不予执行。 |
|
Timer Interceptor |
timer |
输出Action执行的时间 |
|
Token Interceptor |
token |
通过Token来避免双击 |
|
Token Session Interceptor |
tokenSession |
和Token Interceptor一样,不过双击的时候把请求的数据存储在Session中 |
|
Validation Interceptor |
validation |
使用action-validation.xml文件中定义的内容校验提交的数据。 |
|
Workflow Interceptor |
workflow |
调用Action的validate方法,一旦有错误返回,重新定位到INPUT画面 |
|
Parameter Filter Interceptor |
N/A |
从参数列表中删除不必要的参数 |
|
Profiling Interceptor |
profiling |
通过参数激活profile |
在struts.xml文件中定义拦截器,拦截器栈
|
<package name="my" extends="struts-default" namespace="/manage"> <interceptors> <!-- 定义拦截器 --> <interceptor name="拦截器名" class="拦截器实现类"/> <!-- 定义拦截器栈 --> <interceptor-stack name="拦截器栈名"> <interceptor-ref name="拦截器一"/> <interceptor-ref name="拦截器二"/> </interceptor-stack> </interceptors> ...... </package> |
3. 使用拦截器
一旦定义了拦截器和拦截器栈后,就可以使用这个拦截器或拦截器栈来拦截Action了。拦截器的拦截行为将会在Action的exceute方法执行之前被执行。
|
<action name="userOpt" class="org.qiujy.web.struts2.action.UserAction"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> <!-- 使用拦截器,一般配置在result之后, --> <!-- 引用系统默认的拦截器 --> <interceptor-ref name="defaultStack"/> <interceptor-ref name="拦截器名或拦截器栈名"/> </action> |
浙公网安备 33010602011771号