1. 程式人生 > >struts2框架之攔截器(參考第二天學習筆記)

struts2框架之攔截器(參考第二天學習筆記)

xxx java clas 完成 攔截 銷毀 == 情況 配置

攔截器

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框架之攔截器(參考第二天學習筆記)