案例 在做登录案例的时候,自定义了一个登录拦截器。
public class LoginHandlerInterceptor implements HandlerInterceptor { /** * 目标方法执行之前 * @param request * @param response * @param handler * @return * @throws Exception */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Object user = request.getSession().getAttribute("loginUser"); if(user == null){ //未登录,拦截并返回登录页 request.setAttribute("msg", "没有权限,请先登录"); request.getRequestDispatcher("/index.html").forward(request, response); return false; }else { //已登录,放行 return true; } } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } } //注册拦截器 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**") .excludePathPatterns("/index.html","/","","/user/login"); }注册拦截器时,排除路径"/static/**"
@Override public void addInterceptors(InterceptorRegistry registry) { //添加拦截器类 registry.addInterceptor(loginHandlerInterceptor) //拦截要求 .addPathPatterns("/**") //对哪些请求放行 .excludePathPatterns("index.html","/","/login","/static/**"); }