//拦截器的配置和启动类需放到同一包下
@Component
public class LoginInterceptor implements
HandlerInterceptor {
//在请求处理之前进行调用(Controller方法调用之前
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
String uri=request.getRequestURI();
if(uri.indexOf("/login")>-1) {
return true;
}
Login log=(Login) request.getSession().getAttribute("login");
if(log!=null) {
return true;
}else {
request.setAttribute("error", "账号或密码错误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
return false;
}
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle被调用");
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
System.out.println("afterCompletion被调用");
}
}
//拦截器
@SpringBootConfiguration
public class MySpringMvcConfig extends WebMvcConfigurerAdapter{
@Autowired
private LoginInterceptor interceptor;
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(interceptor).addPathPatterns("/**");
}
}