1.Understanding Interceptors(理解拦截器的工作原理)
拦截器主要是为了完成action执行前的有些准备工作,以及action完成的有些扫尾工作。
拦截器可以中端action的执行过程。
拦截器定义在拦截器栈中,并且按照一定的顺序执行。
struts2拦截器的调用主要通过ActionProxy所代理的action对象来实现interceptor的调用。
2.Configuring Interceptors
拦截器可以是包级别或者action级别。并且能够覆盖。
3.Stacking Interceptors
可以参考struts-default.xml中的配置。
4.Framework Interceptors(框架定义好的拦截器)
详细参考struts应用。
Method Filtering
方法过滤
例如validation中可以过滤那些方法需要表单验证,那些方法不需要
Interceptors that extends this capability include:
TokenInterceptor
TokenSessionStoreInterceptor
DefaultWorkflowInterceptor
ValidationInterceptor
可以定配置的参数有
excludeMethods - method names to be excluded from interceptor processing
includeMethods - method names to be included in interceptor processing
如果一个方法同时存在于以上两个参数则includeMethods优先。
Interceptor Parameter Overriding
重写以上参数的形式有如下两种
拦截器主要是为了完成action执行前的有些准备工作,以及action完成的有些扫尾工作。
拦截器可以中端action的执行过程。
拦截器定义在拦截器栈中,并且按照一定的顺序执行。
struts2拦截器的调用主要通过ActionProxy所代理的action对象来实现interceptor的调用。
2.Configuring Interceptors
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="timer" class=".."/>
<interceptor name="logger" class=".."/>
</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>
拦截器可以是包级别或者action级别。并且能够覆盖。
3.Stacking Interceptors
可以参考struts-default.xml中的配置。
4.Framework Interceptors(框架定义好的拦截器)
详细参考struts应用。
Method Filtering
方法过滤
例如validation中可以过滤那些方法需要表单验证,那些方法不需要
Interceptors that extends this capability include:
TokenInterceptor
TokenSessionStoreInterceptor
DefaultWorkflowInterceptor
ValidationInterceptor
可以定配置的参数有
excludeMethods - method names to be excluded from interceptor processing
includeMethods - method names to be included in interceptor processing
如果一个方法同时存在于以上两个参数则includeMethods优先。
Interceptor Parameter Overriding
重写以上参数的形式有如下两种
<action name="myAction" class="myActionClass">
<interceptor-ref name="defaultStack">
<param name="validation.excludeMethods">myValidationExcludeMethod</param>
<param name="workflow.excludeMethods">myWorkflowExcludeMethod</param>
</interceptor-ref>
</action>
<action name="myAction" class="myActionClass">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="params"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="params"/>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">myValidationExcudeMethod</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">myWorkflowExcludeMethod</param>
</interceptor-ref>
</action>