先配置一个Component组件
继承HandlerInterceptorAdapter 类,重写SysInterceptor 方法,中间编写拦截的条件。返回false即代表进行拦截。
@Component
public class SysInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HttpSession session=request.getSession();
User user=(User) session.getAttribute(CodeUtils.USER_SESSION);
if(user==null) {
response.sendRedirect("/userLogin.html");
return false;
}
return true;
}
}
编写配置类
继承WebMvcConfigurationSupport 这个类,重写addInterceptors方法,最后添加需要拦截的路径即可。
@Configuration
public class StaticConfig extends WebMvcConfigurationSupport {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注册TestInterceptor拦截器
InterceptorRegistration registration = registry.addInterceptor(new SysInterceptor());
registration.addPathPatterns("/userCenter.html");
registration.addPathPatterns("/collection/addColl");
registration.addPathPatterns("/userCollecion.html");
}
}
同时重写addresourcehandlers方法可以为Springboot添加静态资源映射。
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/")
.addResourceLocations("classpath:/templates/");
registry.addResourceHandler("/static/img/**")
.addResourceLocations("file:" + "classpath:/templates/");
registry.addResourceHandler("/static/js/**")
.addResourceLocations("file:" + "classpath:/templates/");
registry.addResourceHandler("/static/css/**")
.addResourceLocations("file:" + "classpath:/templates/");
super.addResourceHandlers(registry);
}