Struts2的攔截器體系是一種AOP設(shè)計(jì)哲學(xué)。Strut2的攔截器可以動(dòng)態(tài)地?cái)r截發(fā)送到指定Action的請(qǐng)求,通過(guò)攔截器機(jī)制,可以在Action執(zhí)行前后插入某些代碼,通過(guò)這種方式可以把多個(gè)Action中需要重復(fù)指定的代碼提取出來(lái),在攔截器中定義,從而提供更好的代碼重用。攔截器體系是Struts2的一個(gè)重要組成部分,Struts2框架就是由大量的內(nèi)置攔截器來(lái)實(shí)現(xiàn)的。另外,它是即插即用的,即當(dāng)我們需要使用某個(gè)攔截器時(shí),只需要在配置文件中應(yīng)用中該攔截器即可,如果不需要使用攔截器,也只需要取消在配置文件中該攔截器,不管是否應(yīng)用某個(gè)攔截器,對(duì)于整個(gè)Strut2框架不會(huì)有任何影響的。
Struts框架提供了很多攔截器,它實(shí)現(xiàn)Struts2的大部分功能,能滿意大部分應(yīng)用的能用功能,但要實(shí)現(xiàn)系統(tǒng)邏輯相關(guān)的功能時(shí),需要使用用戶自定義攔截器:
如果用戶要開(kāi)發(fā)自己的攔截類,需要實(shí)現(xiàn)Interceptor接口,它包括三個(gè)方法:
Init()
destroy()
intercept(ActionInvocation action)
一般來(lái)說(shuō)只需要實(shí)現(xiàn)最后一個(gè)方法即可,所以Struts2提供了一個(gè)AbstractInterceptor類,它提供了init和destory方法的空實(shí)現(xiàn)。在實(shí)際的開(kāi)發(fā)中時(shí),只需要繼承AbstractInterceptor來(lái)實(shí)現(xiàn)自定義攔截器。下面實(shí)現(xiàn)一個(gè)簡(jiǎn)單的攔截器: