Struts2之攔截器原理分析及使用-再中

一、學習案例:關於攔截器的瞭解,我們肯定不再單純地編碼。我會帶大家通過研讀源碼瞭解攔截器的實現方式,以及學習struts2的編碼方式。

 

二、案例分析:

a)MethodFilterInterceptor方法攔截器,如果沒指定includeMethods,也沒指定excludeMethods,則所有方法都會被攔截,即所有方法默認includeMethods

 

b)對於指定了includeMethods,而不在其中的方法則不會被攔截。

 

d)怎麼攔截,攔截什麼都是由MethodFilterInterceptorUtil.applyMethod(..., ..., ...)指定的。有興趣的朋友可以分析下其實現邏輯。

 

c)ActionInvocation中有個addPreResultListener(PreResultListener listener)方法,其含義就是:在action執行之後,在結果渲染之前,在這兩個時間點之間會接收通知,通知傳入參數對象執行處理。此處使用了觀察者模式,如果對觀察者模式瞭解,那麼源碼就很容易看懂了,大家可以自行查閱,在此就不多講了。

1、創建監聽類使之實現PreResultListener接口,實現beforeResult(..., ...)方法,此處就是填寫結果被渲染之前的處理邏輯。

2、在攔截器中通過invocation.addPreResultListener(new 監聽類)添加此功能。

3、一般也沒什麼用,反正我是沒用過。有興趣的朋友自行了解。

 

 

 

 

三、經驗之談:

a)對於知識點的掌握不是背下了就OK了,背下的東西過一段時間肯定會模糊,以致忘記。我們必須要理解,如果實在看不懂那也別背,敲代碼論證,或者百度案例調試,只有這樣的進步纔會促使我們技術的成長。

 

四、參考項目:因爲我們主要是對源碼分析,而項目只是讓大家對流程瞭解和掌握。這一章,我們就不提供項目演示了,其實也沒什麼可演示的,大家多看看源碼,分析下MethodFilterInterceptorUtilActionInvocation兩個接口即可。

 

五、每日一樂:

火車站,我緊緊抓住她正要從我的口袋中抽離的手說:別走。

她的眼眶一點一點的溼潤,顫抖着說:能不能放手,

能不能給我留下一點美好的回憶,畢竟這是我第一次當小偷。” 

 

 

最終解釋權歸愛尚合夥人(www.23hhr.com)所有,轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章