提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
拦截器
HandlerInterceptor接口中设置了三个拦截位置的方法,今天的案例主要围绕登陆拦截来写拦截器。
1.编写一个拦截器实现HandlerInterceptor接口
逻辑是获取请求中的session,查看对应的loginUser是否为空,为空则拦截
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String requestURI = request.getRequestURI();
log.info(requestURI);
HttpSession session = request.getSession();
Object loginUser = session.getAttribute("loginUser");
if (loginUser != null) {
return true;
}
// request.setAttribute("msg","请先登陆");
session.setAttribute("msg","请先登陆");
// response.sendRedirect("/");
request.getRequestDispatcher("/").forward(request,response);
return false;
}
}
2.拦截器注册到容器中(实现WebMvcConfigurer的addInterceptors)
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**","/js/**");
}
}
3.指定拦截规则
“/”,"/login","/css/","/fonts/","/images/","/js/"这些请求都不会被拦截