关于spring MVC拦截器

本文讲述了在SpringMVC中如何配置和使用自定义拦截器`CartIntercepot`,包括重写`HandlerInterceptor`的`preHandle`方法以及在`WebMvcConfigurer`的`addInterceptors`方法中注册拦截器,确保其对所有请求生效。
摘要由CSDN通过智能技术生成

都怨年轻的时候没好好干基础,现在还整这些。真的辣鸡。
我们想让拦截器生效,需要用两个地方

第一个地方 先配置拦截器,让类继承HandlerInterceptor 类 然后重写preHandle方法,这样就可以重写拦截器里面的方法了。

public class CartIntercepot  implements HandlerInterceptor {

    public static ThreadLocal<UserInfoTo> threadLocal = new ThreadLocal<>();


    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 获取会话信息,获取登录用户信息
        HttpSession session = request.getSession();
        MemberRespVo member = (MemberRespVo) session.getAttribute(AuthConstant.LOGIN_USER);
        // 判断是否登录,并封装User对象给controller使用
        UserInfoTo user = new UserInfoTo();
        if (member != null) {
            // 登录状态,封装用户ID,供controller使用
            user.setUserId(member.getId());
        }
        // 获取当前请求游客用户标识user-key
        Cookie[] cookies = request.getCookies();
        if (ArrayUtils.isNotEmpty(cookies)) {
            for (Cookie cookie : cookies) {
                String name = cookie.getName();
                if (name.equals(CartConstant.TEMP_USER_COOKIE_NAME)){
                    user.setUserKey(cookie.getValue());
                    user.setTempUser(true);
                }

            }
        }
        // 判断当前是否存在游客用户标识
        if (StringUtils.isBlank(user.getUserKey())) {
            // 无游客标识,分配游客标识
            user.setUserKey(UUID.randomUUID().toString());
        }

        // 封装用户信息(登录状态userId非空,游客状态userId空)
        threadLocal.set(user);
        return true;
    }

但是我们重写了拦截器,但是只是写了一个类,把他放起来,我们并没有让拦截器生效,如果想让拦截器生效。我们就需要把拦截器放到WebMvcConfigurer的配置类里面,上代码

@Configuration
public class GulimallWebConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CartIntercepot()).addPathPatterns("/**");

    }
}

里面的new CartIntercepot 就是自己写的拦截器,这样就会使拦截器生效。然后addPathPatterns是指对内些请求拦截。/**等于所有全生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值