拦截器与过滤器参考:https://blog.csdn.net/ws_kfxd/article/details/85235639
一、定义拦截器
package com.ws.common;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/*
* 拦截器
*/
@Component
public class MyInterceptor implements HandlerInterceptor{
//controller前执行
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HttpSession session=request.getSession();
if(session.getAttribute("user")==null||"".equals(session.getAttribute("user"))) {
request.getRequestDispatcher("/WEB-INF/jsp/fail.jsp").forward(request, response);
return false;
}
return true;
}
//controller方法后执行
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
//视图页面渲染后执行
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
二、注册拦截器
package com.ws.common;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/*
* 注册拦截器
*/
@SpringBootConfiguration
public class WebMvcConfig implements WebMvcConfigurer{
@Autowired
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
//addPathPatterns("/**") 拦截的路径; excludePathPatterns("/login") 不拦截的路径
registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
}
}