SPRINGBOOT 2.X 拦截器使用及静态资源配置
这里使用的是springboot的2.X版本拦截器,和2.0之前的稍微不同,WebMvcConfigurerAdapter被deprecated(不赞成使用),虽然继承WebMvcConfigurerAdapter这个类虽然有此便利,但在Spring5.0里面已经deprecated了,所以这里实现WebMvcConfigurer 接口。
实现方法
实现一个HandlerInterceptor接口的类并打上注解@Component,并配置好拦截的内容
@Component
public class CheckLoginInteceptor implements HandlerInterceptor {
//log日志
Logger log=LoggerFactory.getLogger(CheckLoginInteceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession httpSession=request.getSession();
//这个是自己定义的用户实体类
ContractorUser contractorUser=new ContractorUser();
//在session中取出用户数据
contractorUser= (ContractorUser) httpSession.getAttribute("user");
if (contractorUser==null){
log.warn("未登录!");
//未登录或者session过期在这里执行跳转登录页面
response.sendRedirect("/login");
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
实现一个 WebMvcConfigurer 接口并打上注解@Configuration把实现HandlerInterceptor的拦截器添加到实现的WebMvcConfigurer的类
这里的addResourceLocations可以把文件映射到本地的绝对路径
@Configuration
public class WebAppConfig implements WebMvcConfigurer {
@Autowired
private CheckLoginInteceptor checkLoginInteceptor;
//配置拦截的资源以及放行的资源
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(checkLoginInteceptor)
.addPathPatterns("/**")
.excludePathPatterns("/login")
//放行静态资源
.excludePathPatterns("/img/**","/css/**","/fonts/**","/js/**");
}
//配置静态资源的位置
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
}
}
前端显示的资源路径
<script src="/js/jquery.min.js "></script>
到这里就完成了,有问题留言,有空就帮你回答
注意:
SpringBoot的默认静态资源的路径为:(此路径可在源码查看到)
classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/
优先级顺序为:META-INF/resources > resources > static > public
我们可以通过修改spring.mvc.static-path-pattern来修改默认的映射(我这里没有配置,使用默认的配置)