记录每个操作的用户信息

需求: 记录每个操作的用户信息(日志信息),使用aop切面编程

建表:
在这里插入图片描述

@Component
@Aspect // 切面
public class RecordLogAop {

    @Autowired
    LogService logServiceImpl;

    // 先定义一个方法-表示我们的切点(多个连接点)
    @Pointcut("execution(* cn.wolfcode.controller.*.*(..))")  // controller包下的所有类的所有方法都要执行
    public void pointCut(){

    }

    // 切点的执行之前去执行
    @Before("pointCut()")
    public void before(){
        // 怎么记录? ip uid-用户标志 用户操作 时间-获取系统时间 (这些均从HttpServletRequest中获取)
        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
        ServletRequestAttributes sra = (ServletRequestAttributes) requestAttributes;
        HttpServletRequest request = sra.getRequest();
        String ip = request.getRemoteAddr(); // ip
        String requestURI = request.getRequestURI(); // 用户操作就是请求的链接
        String uid = null;
        if(requestURI.endsWith("/login")){
            uid = request.getParameter("username");
        }else{
            Object userInfo = request.getSession().getAttribute("userInfo");
            uid = userInfo != null?((T_User)userInfo).getUcode():"null";
        }
        //uid -用户标志--用户在登录时从参数中获取(上面)

        // 调用Service层
        T_Log t_log = new T_Log();
        t_log.setIp(ip);
        t_log.setOperation(requestURI);
        t_log.setOptime(new Timestamp(System.currentTimeMillis()));
        t_log.setUid(uid);
        logServiceImpl.addLog(t_log);
    }
}

通过Session去获取用户的ip地址、操作(请求链接)等数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

午觉千万别睡过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值