社区系统项目复盘-2

登录模块

重要知识点:

  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请求中获得指定cookie(封装为一个工具类),)获得用户信息,然后存到hostHolder中(这里的用户信息,是通过ThreadLocal来持有的,代替了session,hostHolder也封装为了一个工具类),在controller执行后,模版之前执行postHandle,将用户信息存到modelandview中,用来写出到模板,在模板执行后执行afterCompletion,清空hostHolder中的用户信息,节省内存空间。
  • 拦截器应用(检查登录状态)

    • 使用拦截器的另一种方法

      • 首先定义自定义注解。
      @Target(ElementType.METHOD)
      @Retention(RetentionPolicy.RUNTIME)
      public @interface  LoginRequired {
      }
      
      • 在需要拦截的方法前标注自定义注解
      • 拦截所有请求,只处理带有该注解的方法
      @Component
      public class LoginRequiredInterceptor implements HandlerInterceptor {
          @Autowired
          private HostHolder hostHolder;
          @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
              // 首先判断拦截到的是不是一个方法
              if(handler instanceof HandlerMethod){
                  // 获取拦截到的Method对象
                  HandlerMethod handlerMethod = (HandlerMethod) handler;
                  Method method = handlerMethod.getMethod();
                  // 获取Method的注解
                  LoginRequired longinRequired = method.getAnnotation(LoginRequired.class);
                  // 如果有loginRequired注解但是没有登录,说明当前方法需要登录,但是没有登录,那么拒绝后续请求,强制重定向到登录页面
                  if(longinRequired != null && hostHolder.getUser() == null){
                      response.sendRedirect(request.getContextPath()+"/login");
                      return false;
                  }
              }
              return true;
          }
      }
      
    • 自定义注解

      • 常用的元注解:@Targrt、@Retention、@Document、@Inherited
        • @Targrt:自定义注解可以作用在哪里、
        • @Retention:自定义注解什么时候有效、编译时?运行时?
        • @Document:生成文档时要不要把注解也带上去、
        • @Inherited:用于继承
      • 如何读取注解:利用反射Method
        • Method.getDeclaredAnnotations()
        • Method.getAnnotation(Class annotationClass)

注册

  • 访问注册页面、提交注册数据、发送邮件激活、激活注册账号
    在这里插入图片描述

登录

  • 访问登录页面,生成验证码,提交登录数据,显示登录信息,退出功能
    在这里插入图片描述

账号设置

  • 访问账号设置页面,修改头像,修改密码,检查登录状态
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IT项目复盘会议模板用于总结和评估已完成的IT项目,以确定项目的成功与短板,并为未来的项目提供改进和学习的机会。以下是一个常见的IT项目复盘会议模板的简要内容: 1. 会议目的: - 确定项目成功的关键因素和挑战 - 分享项目经验和教训 - 提供改进建议和措施 2. 项目概述: - 提供项目背景和目标 - 明确项目范围和时间表 3. 成功因素: - 总结项目的成功因素,例如团队合作、领导支持、资源管理等 - 强调成功因素的积极影响和实施方法 4. 挑战和教训: - 讨论项目中的挑战和困难 - 反思潜在的教训和应对方法,包括项目管理、沟通、风险管理等方面 5. 项目绩效评估: - 评估项目的时间表、预算和质量目标的达成情况 - 分析任何超出或不足的情况,并确定其中的原因 6. 改进建议: - 提供项目改进的建议和措施 - 确定未来项目中需要避免的问题,并提出解决方案 7. 团队反馈: - 鼓励团队成员分享对项目的观点和经验 - 倾听并考虑团队成员提出的意见和建议 8. 行动计划: - 制定行动计划,明确改进措施和责任人 - 确定实施时间表和监控方法 9. 会议总结: - 概括会议讨论的要点和重点 - 强调重要的改进措施和下一步行动 IT项目复盘会议模板的内容可以根据实际项目的需要进行调整和添加,以确保全面而有针对性的评估和总结。该模板有助于促进项目范围、进度和质量的改进,提高项目的成功率和效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值