💡 基于SpringBoot + Mybatis + Redis 开发的一个问答社区,实现了基本的登录注册、发帖、评论、点赞、回复等功能。
-
主要功能:
- 使用 ThreadLocal 保存用户状态,通过拦截器拦截请求,根据自定义注解判断用户登录状态
- 使用 Ajax 异步发帖、发送私信、评论
- 使用 Redis 实现点赞、关注功能,优化登录模块——存储登录凭证、缓存用户信息
SpringMVC 中的 Interceptor 拦截请求是通过 HandlerInterceptor 来实现的。主要作用是拦截用户的请求并进行相应的处理,比如判断用户是否登录。HandlerInterceptor 中实现了三个方法:
-
preHandle():在 Controller 中方法调用之前执行,若返回值为 true,则继续执行下一个 handle,否则停止执行
-
postHandle():在 Controller 中方法调用之后,DispatcherServlet 进行视图的渲染之前执行(前提是 preHandle() 返回 true)
-
afterCompletion():该方法将在整个请求完成之后,也就是DispatcherServlet渲染了视图执行(前提是 preHandle() 返回 true)
该项目中,每次请求都会检查 request 中的 login_ticket,把找到的 user 信息存在 ThreadLocal 中,在完成请求的处理后自动释放。