0.1步骤
1.创建一个普通类实现HandlerInterceptor接口
2.实现preHandle()、postHandle()和afterCompletion(),在preHandle()中制定拦截规则
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//登录逻辑检查
HttpSession session = request.getSession();
Object user = session.getAttribute("loginUser"); //取出用户
if (user!=null){
//放行
return true;
}
//拦截住,未登录,跳转到登录页
request.setAttribute("msg","请先登录");
request.getRequestDispatcher("/").forward(request,response);
return false;
}
3.配置类实现WebMvcConfigurer接口,将拦截器注册容器中并放行静态资源
@Configuration
public class AdminWebConfig implements WebMvcConfigurer {
@Bean
public Filter filter(){ //Filter就是实现了HandlerInterceptor接口的类
return new Filter();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(filter()) //把拦截器加入进来
.addPathPatterns("/**") //拦截所有请求包括静态请求
.excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**","/js/**"); //放行的请求
}
}