更新時間:2022-08-23 10:32:33 來源:動力節(jié)點(diǎn) 瀏覽939次
首先我們先來了解一下AOP的概念;面向切面的編程,或AOP, 是一種編程技術(shù),允許程序模塊化橫向切割關(guān)注點(diǎn),或橫切典型的責(zé)任劃分,如日志和事務(wù)管理。
在AOP(Aspect-Oriented Programming)中用于在某個方法或字段被訪問之前,進(jìn)行攔截然后在之前或之后加入某些操作。攔截是AOP的一種實(shí)現(xiàn)策略。
攔截器是動態(tài)攔截Action調(diào)用的對象。它提供了一種機(jī)制可以使開發(fā)者可以定義在一個action執(zhí)行的前后執(zhí)行的代碼,也可以在一個action執(zhí)行前阻止其執(zhí)行。同時也是提供了一種可以提取action中可重用的部分的方式。
攔截器棧(Interceptor Stack)類似于過濾器鏈。攔截器棧就是將攔截器按一定的順序聯(lián)結(jié)成一條鏈。在訪問被攔截的方法或字段時,攔截器棧的攔截器就會按其之前定義的順序被調(diào)用。
也可以叫做攔截器鏈(Interceptor Stack),攔截器棧一詞更明確的表名了連接器鏈的實(shí)現(xiàn)方式。
Struts2的攔截器和Filter類似。在執(zhí)行Action的execute方法之前,Struts2會首先執(zhí)行在struts.xml中引用的攔截器,在執(zhí)行完所有引用的攔截器的intercept方法后,會執(zhí)行Action的execute方法。
當(dāng)請求到達(dá)Struts 2的ServletDispatcher時,Struts 2會查找配置文件,并根據(jù)其配置實(shí)例化相對的攔截器對象,然后串成一個列表(list),最后一個一個地調(diào)用列表中的攔截器。
初級 202925
初級 203221
初級 202629
初級 203743