Day13-作业(SpringBootWeb AOP)

作业1:完成课上所讲解的 事务管理 及 AOP 的所有练习。【代码能多敲几遍就多敲几遍】


作业2:整理当天课上所讲解的内容Xmind,包括新知识


作业3:基于springAOP技术完成如下需求。

需求:

记录当前 tlias 智能学习辅助系统中所有员工的登录操作,无论登录成功还是失败,都需要记录日志。日志信息包含如下信息:

  • 用户名 (登录时,输入的用户名) ----- 【提示:用户名在原始方法执行时的参数中】

  • 密码 (登录时,输入的密码) -------- 【提示:密码在原始方法执行时的参数中】

  • 操作时间 (什么时间,员工登录的)

  • 登录是否成功 ------ 【提示:密码在原始方法执行后的返回值中】

  • 登录成功后,下发的jwt令牌 ------ 【提示:密码在原始方法执行后的返回值中】

  • 登录操作耗时

提示:

  • 获取到原始方法运行的参数,也是可以根据实际情况强转的。 比如:

//获取方法参数
Object[] args = proceedingJoinPoint.getArgs();
Emp emp = (Emp)args[0];
  • 原始方法运行的结果虽然是Object,但是我们可以根据实际切入点表达式匹配的方法, 根据情况来进行强转的 ,比如:

//调用原始方法
Object obj = proceedingJoinPoint.proceed();


//获取登录结果,是否成功
Result result = (Result) obj;

表结构:

在tlias系统的数据库 tlias 中,创建如下表结构。

-- 登录日志表
create table emp_login_log(
    id int unsigned primary key auto_increment comment 'ID',
    username varchar(20) comment '用户名',
    password varchar(32) comment '密码',
    login_time datetime comment '登录时间',
    is_success tinyint unsigned comment '是否成功, 1:成功, 0:失败',
    jwt varchar(1000) comment 'JWT令牌',
    cost_time bigint unsigned comment '耗时, 单位:ms'
) comment '登录日志表';

实体类:

package com.itheima.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class EmpLoginLog {
    private Integer id; //ID
    private String username; //登录用户名
    private String password; //登录密码
    private LocalDateTime loginTime; //登录时间
    private Short isSuccess; //是否登录成功, 1:成功, 0:失败
    private String jwt; //成功后, 下发的JWT令牌
    private Long costTime; //登录耗时, 单位:ms
}

最终,员工在登录页面执行登录操作,输入的信息,登录成功还是失败,如果成功了,下发的jwt令牌是什么,全部都需要记录到数据库表中。 最终表中存储的数据样例如下:


作业4:基于springAOP技术完成如下需求。

需求:

记录当前tlias智能学习辅助系统中文件上传操作的日志。日志信息包含如下信息:

  • 原始文件名 【提示: 从文件上传的方法的运行参数中获取】

  • 文件大小,单位:字节【提示: 从文件上传的方法的运行参数中获取】

  • 文件拓展名, 如:.jpg【提示: 从文件上传的方法的运行参数中获取】

  • 文件上传时间

  • 阿里云OSS中文件访问的url【提示: 从文件上传的方法的运行返回值中获取】

提示:

  1. 获取上传文件的原始名称: multipartfile.getOriginalFilename();

  2. 获取上传文件的大小: multipartfile.getSize()

表结构:

在tlias系统的数据库 tlias 中,创建如下表结构。

-- 文件上传日志表
create table file_upload_log(
    id int unsigned primary key auto_increment comment 'ID',
    filename varchar(100) comment '原始文件名',
    size bigint comment '文件大小, 单位:字节',
    extname varchar(10) comment '文件后缀名,如:.jpg',
    url varchar(300) comment '阿里云OSS访问url',
    upload_time datetime comment '上传时间'
) comment '文件上传日志表';

实体类:

package com.itheima.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class FileUploadLog {
    private Integer id; //ID
    private String filename; //原始文件名
    private Long size; //文件大小, 单位:字节
    private String extname; //文件拓展名, 如:.jpg
    private String url; //阿里云OSS文件url
    private LocalDateTime uploadTime; //文件上传时间
}

最终,员工在进行文件上传操作时,需要记录文件的详细信息到 file_upload_log 表中 。 最终表中存储的数据样例如下:

你可能感兴趣的:(Web开发阶段-作业,AOP)