一、學習案例:關於攔截器的瞭解,我們肯定不再單純地編碼。我會帶大家通過研讀源碼瞭解攔截器的實現方式,以及學習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了,背下的東西過一段時間肯定會模糊,以致忘記。我們必須要理解,如果實在看不懂那也別背,敲代碼論證,或者百度案例調試,只有這樣的進步纔會促使我們技術的成長。
四、參考項目:因爲我們主要是對源碼分析,而項目只是讓大家對流程瞭解和掌握。這一章,我們就不提供項目演示了,其實也沒什麼可演示的,大家多看看源碼,分析下MethodFilterInterceptorUtil和ActionInvocation兩個接口即可。
五、每日一樂:
火車站,我緊緊抓住她正要從我的口袋中抽離的手說:“別走。”
她的眼眶一點一點的溼潤,顫抖着說:“能不能放手,
能不能給我留下一點美好的回憶,畢竟這是我第一次當小偷。”
最終解釋權歸愛尚合夥人(www.23hhr.com)所有,轉載請註明出處。