Struts的過(guò)濾器本身提供了類(lèi)似AOP,java.servlet.Filter的過(guò)濾攔截功能,所以對(duì)Action以及Action的方法的攔截可以用更加“Struts”的Interceptor來(lái)實(shí)現(xiàn)。
Interceptor可以直接攔截到Action的方法層面,只要在Interceptor.intercept()中判斷方法是否需要被攔截即可實(shí)現(xiàn),Struts本身提供了抽象類(lèi)MethodFilterInterceptor用來(lái)解決這類(lèi)問(wèn)題。
public class MyMethodInterceptor extends MethodFilterInterceptor { @Override PRotected String doIntercept(ActionInvocation invocation) throws Exception { //do something }}通過(guò)繼承MethodFilterInterceptor,重寫(xiě)doIntercept(),即可在實(shí)現(xiàn)攔截器功能的同時(shí),具有MethodFilterInterceptor提供的指定方法攔截策略的配置能力,配置方式和Parameters攔截器的配置方法類(lèi)似。
直接在Interceptor-ref中配置<interceptor-ref name="validation"> <param name="excludeMethods">myValidationExcudeMethod</param></interceptor-ref>或者在Interceptor Stack中配置<action name="myAction" class="myActionClass"> <interceptor-ref name="myStack"> <param name="myMethodInterceptor.excludeMethods">hello</param> </interceptor-ref></action>MethodFilterInterceptor提供了兩個(gè)可以設(shè)置的參數(shù): * excludeMethods - 指示需要排除的方法名 * includeMethods - 指示需要包括的方法名
includeMethods的優(yōu)先級(jí)大于excludeMethods.
一些Struts自帶的攔截器也是基于MethodFilterInterceptor實(shí)現(xiàn)的,比如常見(jiàn)的ValidationInterceptor。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注