codecamp

拦截器的使用

拦截器是在执行Action类方法前或后执行的类方法,可以注解方式指定,也可以在配置文件myhibernate.xml中配置。

分为全局拦截器:所有的控制层的Action类方法都会被拦截执行

类拦截器:只拦截指定的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
{

}

则该拦截器对该类里面的所有方法都会进行拦截执行


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>

多个拦截器以英文模式的逗号,分隔开



POST/GET限制
别名的使用
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }