理解攔截器 1.1. 什么是攔截器: 攔截器,在AOP(Aspect-Oriented Programming)中用于在某個方法或字段被訪問之前,進(jìn)行攔截然后在之前或之后加入某些操作。攔截是AOP的一種實(shí)現(xiàn)策略。 在Webwork的中文文檔的解釋為——攔截器是動態(tài)攔截Action調(diào)用的對象。它提供了一種機(jī)制可以使開發(fā)者可以定義在一個action執(zhí)行的前后執(zhí)行的代碼,也可以在一個action執(zhí)行前阻止其執(zhí)行。同時也是提供了一種可以提取action中可重用的部分的方式。 談到攔截器,還有一個詞大家應(yīng)該知道——攔截器鏈(Interceptor Chain,在Struts 2中稱為攔截器棧Interceptor Stack)。攔截器鏈就是將攔截器按一定的順序聯(lián)結(jié)成一條鏈。在訪問被攔截的方法或字段時,攔截器鏈中的攔截器就會按其之前定義的順序被調(diào)用。 1.2. 攔截器的實(shí)現(xiàn)原理: 大部分時候,攔截器方法都是通過代理的方式來調(diào)用的。Struts 2的攔截器實(shí)現(xiàn)相對簡單。當(dāng)請求到達(dá)Struts 2的ServletDispatcher時,Struts 2會查找配置文件,并根據(jù)其配置實(shí)例化相對的攔截器對象,然后串成一個列表(list),最后一個一個地調(diào)用列表中的攔截器。 2. 攔截器的配置 Struts 2已經(jīng)為您提供豐富多樣的,功能齊全的攔截器實(shí)現(xiàn)。大家可以至struts2的jar包內(nèi)的struts-default.xml查看關(guān)于默認(rèn)的攔截器與攔截器鏈的配置。 Struts2(XWork)提供的攔截器的功能說明: 1、攔截器:Alias Interceptor 2、攔截器:Chaining Interceptor 3、攔截器:Checkbox Interceptor 4、攔截器:Cookies Interceptor 5、攔截器:Conversion Error Interceptor 6、攔截器:Create Session Interceptor 7、攔截器:Debugging Interceptor 8、攔截器:Execute and Wait Interceptor 9、攔截器:Exception Interceptor 10、攔截器:File Upload Interceptor 11、攔截器:I18n Interceptor 12、攔截器:Logger Interceptor 13、攔截器:Message Store Interceptor 14、攔截器:Model Driven Interceptor 15、攔截器:Scoped Model Driven 16、攔截器:Parameters Interceptor 17、攔截器:Prepare Interceptor 18、攔截器:Scope Interceptor 19、攔截器:Servlet Config Interceptor 20、攔截器:Static Parameters Interceptor 21、攔截器:Roles Interceptor 22、攔截器:Timer Interceptor 23、攔截器:Token Interceptor 24、攔截器:Token Session Interceptor 25、攔截器:Validation Interceptor 26、攔截器:Workflow Interceptor 27、攔截器:Parameter Filter Interceptor 28、攔截器:Profiling Interceptor
...... |