SpringMVC 中的 Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆等操作。
SpringMVC 拦截器的定义方式
- 实现接口
- 继承适配器
案例实操
实现接口
实现 HandlerInterceptor 接口方式定义我们的拦截器代码如下:
public class MyInterceptor implements HandlerInterceptor{
/**
* preHandle 在请求方法拦截前执行
* 返回 true 代表对当前请求进行放行处理
*/
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
System.out.println("action 之前执行!!!");
return true; //继续执行 action
}
/**
* 请求执行后,生成视图前执行
*/
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("Action 执行之后,生成视图之前执行!!");
}
/**
* 在请求方法执行后进行拦截
*/
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("方法执行后进行拦截。。释放资源。。。");
}
}
对应配置有两种方式:
配置方式一(拦截所有请求配置方式):
<mvc:interceptors>
<!-- 使用 bean 定义一个 Interceptor
直接定义在 mvc:interceptors 根下面的 Interceptor 将拦截所有的请求 -->
<bean class="com.xxx.interceptors.MyInterceptor" />
</mvc:interceptors>