社区系统项目复盘-2

本文介绍了Spring MVC中如何使用ThreadLocal和拦截器实现用户登录状态的管理。ThreadLocal用于线程隔离的数据存储,替代session。拦截器则用于在请求处理前后插入额外的逻辑,如检查登录状态,并在必要时展示或清除用户信息。文章还提到了自定义注解的方式增强拦截器的功能,以及注册、登录和账号设置等用户管理流程。

登录模块

重要知识点:

  1. ThreadLocal,Hostholder采用Threadlocal持有用户信息,用于代替session对象
    • ThreadLocal采用线程隔离的方式存放数据,可以避免多线程之间出现数据访问冲突。
    • ThreadLocal提供set方法,能够以当前线程为key存放数据。
    • ThreadLocal提供get方法,能够以当前线程为key获取数据。
    • ThreadLocal提供remove方法,能够以当前线程为key删除数据。
  2. 拦截器
  • 拦截器示例

    • 定义拦截器,实现HandlerInterceptor

      在controller/interceptor路径下定义拦截器,使用@Compont注解,implements HandlerInterceptor,里面有三个方法可以重写

      • preHandle() // 在Controller之前执行,若返回false,则终止执行后续的请求。
      • postHandle() // 在Controller之后执行,模版之前执行。
      • afterCompletion() // 在模版引擎TemplteEngine之后执行。
    • 配置拦截器,为他指定拦截、排除的路径

      WebMvcConfig implements WebMvcConfigurer,实现WebMvcConfigurer接口

      首先使用@Autowired注解注入拦截器,然后重写addInterceptors()方法

      https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/E5A630C2-3AE5-4D32-8251-762AF7B232E0/8DD543E3-6659-4C30-B98C-2D044469E02E_2/xjLap3R3bhLaxe8Gk47bPUys5PkekLHoKL5hRyoMN90z/Image.png

  • 拦截器应用(显示登录信息)

    https://res.craft.do/user/full/fd148a50-4a5b-9a85-bec3-e1645571e2c7/doc/E5A630C2-3AE5-4D32-8251-762AF7B232E0/C65470A1-69EC-4BCC-9395-0F23ED132715_2/275aMHWJnw8VGiEeR6ecJzCWKH2hTDo63NOHwiFYk8Mz/Image.png

    • 在请求开始时查询登录用户
    • 在本次请求中持有用户数据
    • 在模板视图上显示用户数据
    • 在请求结束时清理用户数据
    • 提示:拦截器在controller执行前执行preHolder,根据登录凭证(这里的登录凭证是从cookie中获得的,该cookie不能由@CookieValue获得,只能从request请求中获得指定cooki
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值