登录模块
重要知识点:
- ThreadLocal,Hostholder采用Threadlocal持有用户信息,用于代替session对象
- ThreadLocal采用线程隔离的方式存放数据,可以避免多线程之间出现数据访问冲突。
- ThreadLocal提供set方法,能够以当前线程为key存放数据。
- ThreadLocal提供get方法,能够以当前线程为key获取数据。
- ThreadLocal提供remove方法,能够以当前线程为key删除数据。
- 拦截器
-
拦截器示例
-
定义拦截器,实现HandlerInterceptor
在controller/interceptor路径下定义拦截器,使用@Compont注解,implements HandlerInterceptor,里面有三个方法可以重写
- preHandle() // 在Controller之前执行,若返回false,则终止执行后续的请求。
- postHandle() // 在Controller之后执行,模版之前执行。
- afterCompletion() // 在模版引擎TemplteEngine之后执行。
-
配置拦截器,为他指定拦截、排除的路径
WebMvcConfig implements WebMvcConfigurer,实现WebMvcConfigurer接口
首先使用@Autowired注解注入拦截器,然后重写addInterceptors()方法

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

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

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

被折叠的 条评论
为什么被折叠?



