SpringMVC拦截器

本文最后更新于:5 天前

SpringMVC拦截器Interceptor

1、SpringMVC拦截器用于对控制其方法进行前置、后置处理

2、拦截器的底层实现技术是AOP

3、拦截器必须实现HandlerInterceptor接口

使用场景

权限控制、登录拦截、字符集管理、国际化等,可以做到不修改原始代码的情况下实现功能。

例子

配置文件 applicationContext.xml

1
2
3
4
5
6
7
8
<beans ...>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
</beans>

实现HandlerInterceptor接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class MyInterceptor implements HandlerInterceptor {
// 运行Controller内方法前执行
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("进入 preHandle 方法..." + request.getRequestURL().toString());
return true;//返回true,请求会送达Controller方法执行;返回false,请求中断,postHandle方法也不会执行
}

// Controller内方法执行完后,视图渲染前执行(得到结果但响应还没真正返回时)
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("进入 postHandle 方法..." + request.getRequestURL().toString());
}

// 后置方法,上面两个方法执行完后执行。无论preHandle返回true或false都会执行
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("进入 afterCompletion 方法..." + request.getRequestURL().toString());
}
}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!