W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
攔截器是在執(zhí)行Action類方法前或后執(zhí)行的類方法,可以注解方式指定,也可以在配置文件myhibernate.xml中配置。
分為全局攔截器:所有的控制層的Action類方法都會被攔截執(zhí)行
類攔截器:只攔截指定的Action類里面的所有方法
方法攔截器 : 只攔截指定的Action類里面的特定的方法
攔截器的編寫
package demo.interceptor;
import org.myhibernate.mvc.intercept.ActionInvocation;
import org.myhibernate.mvc.intercept.Interceptor;
public class DemoInterceptor implements Interceptor
{
public void doIntercept(HttpServletRequest request, HttpServletResponse response,ActionInvocation invocation)
{
System.out.println("DemoInterceptor doIntercept before");
invocation.invoke();
System.out.println("DemoInterceptor doIntercept after");
}
}
1、全局攔截器
在web.xml的過濾器中配置全局攔截器如下
<filter>
<filter-name>/filter</filter-name>
<filter-class>org.myhibernate.mvc.filter.DispatchFilter</filter-class>
<init-param>
<param-name>global.interceptor</param-name>
<param-value>demo.interceptor.DemoInterceptor</param-value>
</init-param>
</filter>
修改之前的h1()方法,如下
@ActionAnnotation(interceptors={DemoInterceptor.class})
public void h1()
{
System.out.println("h1 hello word");
out.print("h1 hello word");
}
在瀏覽器中訪問h1方法,控制臺輸出如下
2、類攔截器
類攔截器配置方法如下
@ActionAnnotation(interceptors={DemoInterceptor.class})
public class HelloWord extends Action
{
}
則該攔截器對該類里面的所有方法都會進行攔截執(zhí)行
3、方法攔截器
方法攔截器配置方法如下
@ActionAnnotation(interceptors={DemoInterceptor.class})
public void h1()
{
System.out.println("h1 hello word");
out.print("h1 hello word");
}
方法攔截器只攔截指定的方法
也可以在配置文件myhibernate.xml中配置攔截器,如下
<?xml version="1.0" encoding="UTF-8" ?>
<mappings>
<interceptors>
<action name="helloword" interceptor="demo.action.Interceptor2">
<method name="h1" interceptor="demo.action.Interceptor2" ></method>
<method name="h2" interceptor="demo.action.Interceptor2,demo.action.TestInterceptor" ></method>
</action>
</interceptors>
</mappings>
多個攔截器以英文模式的逗號,分隔開
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: