攔截器的使用

2018-09-11 12:21 更新

攔截器是在執(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方法,控制臺輸出如下

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>

多個攔截器以英文模式的逗號,分隔開



以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號