# 软件开发与管理 - springboot **Repository Path**: lang-haixia/web-framework-springboot ## Basic Information - **Project Name**: 软件开发与管理 - springboot - **Description**: 本仓库用于软件开发与管理课程,项目采用springboot技术 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 123 - **Created**: 2021-06-08 - **Last Updated**: 2021-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 软件开发与管理 - springboot #### 作业十一:使用springboot实现登录与注册 1. 使用idea创建spring Initializer项目,dependencies选择:Lombok,spring web,mybatis framework,mysql driver. 2. 创建entity包,编写用户实体类,此处使用lombok,添加注解@Data,实现set、get方法 3. 创建Mapper包,编写UserMapper接口,里面包含四个方法 3.1 查询所有用户信息: List findAll(); 3.2 根据用户名查询记录: User findByUserName(String userName); 3.3 根据用户名查找密码: String findPwdByName(String userName); 3.4 插入用户: void save(User user); 4. 在resources下创建mapper包,编写mapper.xml文件,里面包括上面提到的四个方法的SQL语句 5. 在resources下的application.properties文件中,添加连接数据库需要的配置 6. 创建service包,编写UserService.java文件:里面包含注册与登录的业务逻辑 7. 创建controller包,编写UserController.java文件:调用了service层的注册与登录的方法 8. 在resources下static包下创建静态资源文件:login.html和register.html #### 作业十三:使用缓存技术实现用户连续输入三次密码错误,锁定用户1分钟 1. 导入redis依赖文件:spring-boot-starter-data-redis 2. 建立login_log和register_log数据库表,在原来的tab_user表里新增了loginTimes(登录成功次数)和loginFailedTimes(登录失败次数) 3. entity层新增了loginLog和registerLog,分别与数据库的login_log和register_log内的字段表相对应 4. 新建dao层 4.1 新建userDao.java: 包含以下方法: findUserByUsername:通过用户名判断用户是否存在 findUserByUserNameAndPassword:通过用户名和密码判断用户是否存在 increaseLoginTimes:用户登录成功,更新登录成功次数 increaseLoginFailedTimes:用户登录失败,更新登录失败次数 registerDao:注册成功后,将用户信息插入到tab_user表中 4.2 新建LoginLogDao.java: insertLoginLog方法:用户登录成功后,将用户插入登录日志表 4.3 新建RegisterLogDao.java: insertRegisterLog:用户注册成功后,将用户插入注册日志表 5. 新建UserService01.java: 定义登录失败次数上线(FAIL_TIMES)、redis记录用户登录失败次数key(FAIL_KEY)、时间间隔(TIME_INTERVAL):10分钟内用户登录失败次数不能超过3次,超过则返回相关上限提示 方法包括: (1)getRedisCounter:根据key获取计数器 (2)login:实现登录业务逻辑,如果用户登录失败次数超过三次,锁定用户1分钟;登录成功后,更新登录成功次数,更新登录日志 (3)register:实现注册业务逻辑,首先判断用户是否为空、密码是否为空、用户是否存在,否则注册成功,将注册用户添加到注册表中,同时更新tab_user表 6. controller层:登录注册分别调用service层的方法。 ####作业十四:任务调度:每天凌晨2点,统计每个用户的全部登录次数,包括成功次数和失败次数,写入数据库的统计表 1. 新建task_log数据库表:包括taskId,name,loginTimes,loginFailedTimes,time等字段 2. 在dao层新建taskDao:包括insertTaskLog方法,将用户插入task_log表中 3. 在dao层userDao里添加findUserTimes方法:查询用户登录失败和成功次数 4. 在service层下新建UserTask.java:实现每天凌晨2点,统计每个用户的全部登录次数,包括成功次数和失败次数,写入数据库的统计表。