springmvc 学习路线梳理(拦截器)

练习

1.定义拦截器
   实现Interceptor接口
//交给spring管理,同时要能扫描到
@Configuration
@Slf4j
public class TokenInterceptor implements HandlerInterceptor {

    //请求之前执行
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.info("开始获取token");
        String token = "";
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            for (Cookie cookie:cookies){
                if(cookie.getName().equals("token")){
                    token = cookie.getValue();
                }
            }
        }
        if(StringUtils.isBlank(token)){
            response.setStatus(401);
            return false;
        }

        //最后一定要返回 true,否则就不能执行业务逻辑
        return  true;

    }

    //请求之后执行
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle ... ");
    }
    
    //完成之后执行
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion ...");
    }
}
2.定义配置类

   定义一个类继承 WebMvcConfigurationSupport 实现里面的 addInterceptors()的方法

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {

    //将刚才定义的拦截器注入
    @Resource
    private TokenInterceptor tokenInterceptor;


    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        //添加拦截器
        registry.addInterceptor(tokenInterceptor)
                //拦截所有的请求
                .addPathPatterns("/**")
                //排除的请求
                .excludePathPatterns("/login");
    }

    //添加放行的资源
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("").addResourceLocations("");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值