当前位置 : 主页 > 编程语言 > c++ >

【Java.Spring.MVC】使用HandlerInterceptor拦截请求

来源:互联网 收集:自由互联 发布时间:2021-07-03
gistfile1.txt Spring的handler mapping机制提供了handler interceptors,可以用来为特定的请求添加特定的功能,如,检测资金额等。handler mapping的拦截器必须实现HandlerInterceptor的接口。该接口定义了
gistfile1.txt
Spring的handler mapping机制提供了handler interceptors,可以用来为特定的请求添加特定的功能,如,检测资金额等。

handler mapping的拦截器必须实现HandlerInterceptor的接口。该接口定义了三个方法:

    preHandler() - 在实际的handler被执行前被调用

    postHandler() - 在handler被执行后被调用

    afterCompletion() - 当request处理完成后被调用

preHandler()方法返回一个布尔值。可以使用该方法继续或者中断执行链。当返回true,继续执行链;如果返回false,则停止后续的执行。

Interceptor使用interceptors属性进行配置,该属性为HandlerMapping类的属性。

例如:
package org.jxnd.handlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;



public class MyHandlerInterceptor implements HandlerInterceptor{

	@Override
	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		System.out.println("最后执行,释放资源");
	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2, ModelAndView arg3) throws Exception {
		System.out.println("生成视图之前");
	}

	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2) throws Exception {
		System.out.println("请求之前");
		return true;	//放行
	}
}
网友评论