拦截器类: import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class MyInterceptor implements HandlerInterceptor{ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException{ //通常会通过equest.getSession()判断是否登入,或者权限控制 //这里默认如果参数中有usercode=xzq即任务已登入 /*if("xzq".equals(request.getParameter("usercode"))){ return true; } //如果不通过,返回false进行拦截,调整到指定页面 response.sendRedirect("redirect:/index.html"); return false;*/ //注释拦截,便于其他方法的调用 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView){ //System.out.println("在请求不报异常,顺利完成后执行"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex){ //System.out.println("无论请求是否异常,最后都会执行。用于清理资源,关闭连接等"); } }
配置类:
import org.springframework.boot.SpringBootConfiguration; import org.springframework.web.servlet.config.annotation.InterceptorRegistration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; //配置类 @SpringBootConfiguration //旧的版本可能是不是实现WebMvcConfigurer接口,而是继承WebMvcConfigurerAdapter类 public class MyMvConfigurer implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { // 多个拦截器组成一个拦截器链, MyInterceptor()为自己定义的拦截器 InterceptorRegistration ir = registry.addInterceptor(new MyInterceptor()); //用于添加拦截规则,/**表示拦截所有请求 ir.addPathPatterns("/**"); //排除拦截,/error是spring boot中的默认处理异常的url //这里给/test07路径开放出来 ir.excludePathPatterns("/error","/test07"); } }