Struts2默认拦截器栈及内建拦截器使用详解

Struts2内建拦截器介绍:
 
alias  (别名拦截器):容许参数在跨越多个请求时使用不一样别名,该拦截器可将多个Action采用不一样名字连接起来,而后用于处理同一信息。 
autowiring  (自动装配拦截器):主要用于当Struts2和Spring整合时,Struts2可使用自动装配的方式来访问Spring容器中的Bean。 
chain  (链拦截器):构建一个Action链,使当前Action能够访问前一个Action的属性,通常和<result type="chain" .../>一块儿使用。 
checkbox  (多选框拦截器):将没有选中的checkbox项设置为false,协助管理多选框。在HTTP请求里,那些没有被选中的项一般没有任何值。 
conversionError  (转换器错误拦截器):这是一个负责处理类型转换错误的拦截器,它负责将类型转换错误从 ActionContext  中取出,并转换成Action的FieldError错误。 
createSession  (建立Session拦截器):该拦截器负责建立一个HttpSession对象,主要用于那些须要有HttpSession对象才能正常工做的拦截器中。 
clearSession  (清除Session拦截器):负责销毁HttpSession对象. 
debugging  (调试拦截器):当使用Struts2的开发模式时,这个拦截器会提供更多的调试信息。 
execAndWait  (执行和等待拦截器):后台执行Action时,给用户显示一个过渡性的等待页面。 
externalRef  (扩展拦截器):负责扩展引用 
exception  (异常拦截器):将Action抛出的异常映射到结果,这样就经过重定向自动处理异常。 
fileUpload  (文件上传拦截器):这个拦截器主要用于文件上传,它负责解析表单中文件域的内容。 
i18n  (国际化拦截器):主要负责把用户所选的语言、区域放入用户Session中。 
logger  (日志拦截器):主要是输出Action的名字,提供简单的日志输出。 
modelDriven  (模型驱动拦截器):这是一个用于模型驱动的拦截器,当某个Action类实现了ModelDriven接口时,它负责把 getModel  ()方法的结果堆入ValueStack中。 
scopedModelDriven  (做用域模型驱动拦截器):若是一个Action实现了一个ScopedModelDriven接口,该拦截器负责从指定生存范围中找出指定的Model,并将经过setModel方法将该Model传给Action实例。 
params  (参数过滤拦截器):这是一个最基本的拦截器,它负责解析HTTP请求中的参数,并将参数值设置成Action对应的属性值。 
prepare  (预备拦截器):若是action实现了Preparable接口,将会调用该拦截器的prepare()方法。 
staticParams  (静态参数拦截器):这个拦截器负责将xml中<action>标签下<param>标签中的参数传入action。 
scope  (做用域拦截器):这是范围转换拦截器,它能够将Action状态信息保存到HttpSession范围,或者保存到 ServletContext  范围内。 
servletConfig  (Servlet配置拦截器):若是某个Action须要直接访问Servlet API,就是经过这个拦截器实现的,它提供访问HttpServletRequest和HttpServletResponse的方法,以map方式访问。 
roles  (角色拦截器):这是一个JAAS(Java Authentication and Authorization Service,Java受权和认证服务)拦截器,只有当浏览者取得合适的受权后,才能够调用被该拦截器拦截的Action。 
timer  (计时拦截器):这个拦截器负责输出Action的执行时间,在分析该Action的性能瓶颈时比较有用。 
token  (令牌拦截器):这个拦截器主要用于阻止重复提交,它检查传到Action中的token,从而防止屡次提交。 
tokenSession  (令牌会话拦截器):这个拦截器的做用与前一个基本相似,只是它把非法提交的数据保存在HttpSession中,不跳转到错误页面,再次生成与第一次相同的响应页面 
validation  (验证拦截器):经过执行在xxxAction-validation.xml中定义的校验器,从而完成数据校验。 
workflow  (工做流拦截器):这个拦截器负责调用Action类中的validate方法,若是校验失败,则不执行业务方法,而是返回input的逻辑视图。 
jsonValidation  (json拦截器):验证失败时,能够将fieldError和actionErrors信息序列化成json,返回给客户端 
profiling  (概要拦截器):容许Action记录简单的概要信息。 
actionMappingParams  (Action映射拦截器):Parameters set by the action mapping are not set/not available through ParameterAware  
annotationWorkflow  (注解工做流拦截器):利用注解替代XML配置,使用annotationWorkflow拦截器可使用@After、@Before、@BeforeResult等注解,执行流程为before-execute-beforeResult-after顺序 

store (消息存储拦截器):在会话中为Action存储和检索消息、字段错误以及Action错误,该拦截器要求Action实现ValidationAware接口。json


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------app


注意:Struts包在继承“struts-defaust”包后,若是该包没有显式定义interceptor,系统会默认给你添加下图的拦截器栈:jsp




这个拦截器栈里面包含了不少经常使用和必须的拦截器,若是在Struts里配置自定义拦截器后这个拦截器栈将失效,如想继续在Action里面使用,除了引入自定义拦截器外,还必须引入上图这个名为"defaultStack"的拦截器栈!格式以下:性能


<package name="mypackage" extends="struts-default">spa


<!-- 定义自定义拦截器 -->debug

<interceptors>3d

<interceptor name="myinterceptor" class="com.test.interceptors.myinterceptor">调试

<interceptors>
日志


<action name="myaction">xml

<result>/success.jsp</result>

<result>/error.jsp</result>

<!-- 引入自定义拦截器 -->

<interceptor-ref name="myinterceptor" />

<!-- 引入系统默认拦截器栈 -->

<interceptor-ref name="defaultStack" />

</action>


</package>

地方地方