struts2框架之攔截器(參考第二天學習筆記)
攔截器
1. 什麽是攔截器
1). 與JavaWeb中的Filter比較相似。
2). 攔截器只能攔截Action!!!
2. Struts中定義了很多攔截器,其中defaultStack中的攔截器會在每個Action之前執行。
3. 已經知道的攔截器
1). params
2). converterError
3). validation
4). workflow
=====================
3. 自定義攔截器
1). 寫一個攔截器類
* 實現Interceptor接口(基本不用)
> void init() --> 當攔截器對象創建之後,馬上調用,完成初始化工作。
> void destroy() --> 當攔截器對象被銷毀之前,會被調用。
> String intercept(ActionInvocation) --> 每次攔截器時。返回值為結果名稱,與execute()相同。
* 繼承AbstractInterceptor類(比較常用)
* 繼承MethodFilterInterceptor類(特殊情況下使用)
2). 配置它
> 定義攔截器
> 在action中引用攔截器
----------
自定義:
1. 寫My1Intercetpor,繼承AbstractInterceptor
重寫intercetpor方法
其中放行:invocation.invoke()
2. 配置
1). 定義攔截器:
<interceptors>
<intercptor name="xxx" class="..."/>
</ ...>
2). 在<action>引用攔截器
<action>
<interceptor-ref name="xxx"/>
</action>
如果你在<acton>中指定了攔截器,那麽默認攔截器就不會再執行!!!
第一種方法:
<action>
<interceptor-ref name="defaultStack" />
<interceptor-ref name="my1" />
</action>
第二種方法:
<interceptor-stack name="myStack">
<interceptor-ref name="my1" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
...
<action>
<interceptor-ref name="myStack"/>
</action>
第三種方式:
指定當前<package>的默認攔截器棧為myStack
<default-interceptor-ref name="myStack" />
struts2框架之攔截器(參考第二天學習筆記)