天天看點

Struts2 in action讀書筆記(4)

第四章 Adding workflow with interceptor(下)

16. 攔截器隻能通過XML檔案來配置,不支援Java annotations方式。

17. 在struts.xml類型的檔案聲明中,interceptors包含一個package中所有的攔截器和攔截器棧

例如struts-default.xml檔案中:

interceptor用于描述一個攔截器,僅僅是将攔截器名同class對應起來,并不和任何action相結合

interceptor-stack和interceptorref用于定義攔截器棧

default-interceptor-ref用于指定一個package預設的攔截器(棧)

18. 通常情況下,自己定義的actions所在的package通常繼承自struts-default.xml,是以也會預設繼承defaultStack攔截器棧

可以根據自己的需要修改action的參數,加入需要的攔截器如下所示:

當然timer和logger攔截器并沒有做什麼工作,一般需要在最後加上defaultStack攔截器棧或者自己定義的其他攔截器棧,例如缺少了params攔截器,request中的資料都無法儲存到action中,更不要說其他工作了

19. 設定攔截器的參數,例如defaultStack攔截器棧中的workflow攔截器

<interceptor-ref name="workflow">
    <param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
           

覆寫攔截器的參數,例如覆寫defaultStack攔截器棧中的workflow攔截器的參數

20. 實作自己的攔截器通常需要繼承AbstractInterceptor或者實作Interceptor

21. SessionAware接口

Actions that want access to the user's HTTP session should implement this interface.

接口包含的方法

22. ActionInvocation的一個重要方法

Map session = actionInvocation.getInvocationContext().getSession();