SPRINGBOOT 2.X 拦截器使用方式

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来修改默认的映射(我这里没有配置,使用默认的配置)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值