这里写目录标题
十二、SpringMVC 拦截器
JavaWeb中有Filter过滤器,它的作用就是在Servlet执行的前后分别完成一些功能。首先要实现Filter接口创建过滤器,另外要进行配置,指定它所过滤的请求。执行的主要方法是doFilter(请求,响应,过滤链),主要的处理逻辑都在该方法中完成,包括Servlet执行的前和后两个部分。
SpringMVC提供了中央调度器,中央调度器是Servlet,因此它提供的过滤器基本上都是针对调度器。
如果设计者需要在控制器的执行前后或试图渲染后执行一些功能,如何实现?
此时可以通过拦截器来完成。
拦截器在项目中主要可以用来书写日志,现代项目中用得比较多的就是对用户的登录情况进行拦截,以确定用户是否合法。
拦截器如何使用
1、实现HandlerIntercepter接口(里面是默认方法,说明此版本的接口实现在jdk1.8之后)
接口中三个方法的执行时机及顺序
public class MyInterceptor1 implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("1 请求处理前");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("1 请求处理后");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("1 视图渲染后");
}
}
public class MyInterceptor2 implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("2 请求处理前");
return true;
}
@Override
public void<