SpringMVC框架 |Interceptor拦截器的使用


一、拦截器介绍

SpringMVC提供了拦截器机制,允许在目标方法允许之前或之后进行一些其他处理。

SpringMVC提供的拦截器是一个接口HandlerInterceptor

在这里插入图片描述

  • preHandle:在目标方法前调用;返回true,(chain.doFilter)放行;返回false不放行。
  • postHandle:在目标方法调用之后运行。
  • afterCompletion:在请求整个完成(来到目标页面)之后运行,即资源响应之后。(注意:afterCompletion类似于finally,总是会执行)

二、拦截器的使用步骤

1.实现HandlerInterceptor接口

  • 使用拦截器需要实现HandlerInterceptor接口,重写其中的方法。
public class MyFirstInterceptor implements HandlerInterceptor {

	/**
	 * 目标方法运行之前
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		System.out.println("MyFirstInterceptor...preHandle");
		return true;
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println("MyFirstInterceptor...postHandle");

	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		System.out.println("MyFirstInterceptor...afterCompletion");

	}

}

2.配置拦截器

拦截所有请求

	<mvc:interceptors>
		<bean class="com.gql.controller.MyFirstInterceptor"></bean>
	</mvc:interceptors>

拦截指定请求

		<mvc:interceptor>
			<mvc:mapping path="/test01"/>
			<bean class="com.gql.controller.MyFirstInterceptor"></bean>
		</mvc:interceptor>

三、拦截器的执行顺序

单拦截器的执行顺序

在这里插入图片描述
如上图,假设在前端页面发送请求,经过处理器后返回到响应页面,在配置好单个## 多拦截器的执行顺序

在这里插入图片描述

如上图,假设在前端页面发送请求,经过处理器后返回到响应页面,在配置好两个拦截器的情况下,整个流程执行结果Console打印如下:

MyFirstInterceptor...preHandle
MySecondInterceptor...preHandle
handler:test01...//处理器执行
MySecondInterceptor...preHandle
MyFirstInterceptor...postHandle
success.jsp//返回到响应页面
MySecondInterceptor...preHandle
MyFirstInterceptor...afterCompletion
发布了459 篇原创文章 · 获赞 1493 · 访问量 51万+

猜你喜欢

转载自blog.csdn.net/weixin_43691058/article/details/105636891