学习总结

一、基础准备

1. 实现效果

2. 数据表

2.1 登陆日志信息表

2.3 员工表

二、代码实现

1. SysLogLogin 实体类

@Data
public class SysLogLogin {
/** 主键 */
private Long id; /** 登录用户 */
private Employee employee; /** 登陆时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date loginTime; /** IP地址 */
private String ipAddress; }

2. LogAspect AOP切面类

@Aspect
@Component
public class LogAspect { @Autowired
private SysLogLoginMapper sysLogLoginMapper; // 在 Controller 中 login() 执行完之后执行这个方法
// returning:返回值
@AfterReturning(value = "execution(* *..controller.*.login(..))", returning = "result")
public void loginLog(Object result) {
// 获取 HttpServletRequest 对象
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest();
// ((JsonResult) result).isSuccess() 这是我写的工具类,你可以根据具体的返回值类型判断是否登录成功
// 如果登录成功就插入登录日志信息数据
if (((JsonResult) result).isSuccess()) {
// 创建日志对象
SysLogLogin sysLogLogin = new SysLogLogin();
// 获取 IP 地址
String addr = request.getRemoteAddr();
// UserContext.getEmployee() 是我写的一个工具方法,你自己写一个就好了
// 也就是把员工的数据存入到实体对象的字段上,后面连表查询方便
sysLogLogin.setEmployee(UserContext.getEmployee());
sysLogLogin.setLoginTime(new Date());
sysLogLogin.setIpAddress(addr);
// 把登录日志信息存到数据库
sysLogLoginMapper.insert(sysLogLogin);
}
}
}

3. SysLogLoginMapper mapper接口

public interface SysLogLoginMapper {
int insert(SysLogLogin record);
}

4. SysLogLoginMapper.xml 添加的 XML 文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yy.homework.mapper.SysLogLoginMapper" >
<resultMap id="BaseResultMap" type="com.yy.homework.domain.SysLogLogin" >
<id column="id" property="id" />
<result column="login_time" property="loginTime" />
<result column="ip_address" property="ipAddress" /> <result column="e_id" property="employee.id" />
<result column="e_username" property="employee.username" />
<result column="e_name" property="employee.name" />
</resultMap>
<insert id="insert" useGeneratedKeys="true" keyProperty="id" >
insert into sys_log_login (employee_id, login_time, ip_address)
values (#{employee.id}, #{loginTime}, #{ipAddress})
</insert>
</mapper>

5. applicationContext.xml 添加的 XML 文件

<!-- 包扫描 -->
<context:component-scan base-package="com.yy.homework.aspects"/>
<!-- 配置登陆日志的 AOP 注解-->
<aop:aspectj-autoproxy/>

总结

以上就是使用 ssm 实现登录日志记录的功能了,代码仅供参考,欢迎讨论交流。

使用 ssm 实现登录日志记录的更多相关文章

  1. win7或win2008 R2 被远程登录日志记录 系统日志

    事件查看器 → Windows 日志 → 安全 (win7 事件查看器 打开方式 :计算机 右键   → 管理  → 计算机管理 → 系统工具 → 事件查看器 windows server 2008 ...

  2. win7或windows server 2008 R2 被远程登录日志记录 系统日志

    事件查看器 → Windows 日志 → 安全 (win7 事件查看器 打开方式 :计算机 右键   → 管理  → 计算机管理 → 系统工具 → 事件查看器 windows server 2008 ...

  3. iptables log日志记录功能扩展应用:iptables自动配置临时访问策略,任意公网登录服务器

    一.修改日志记录: 1. 修改配置文件: vi /etc/rsyslog.conf 添加以下内容 #iptables log kern.=notice /var/log/iptables.log 2. ...

  4. 记录Windows远程登录日志(转)

    1.建立一个名为RDPlog.bat的批处理文件,内容为: echo @offdate /t >>Z:\IIS\RDPlog.txt time /t >>Z:\IIS\RDPl ...

  5. 按时按登录IP记录Linux所有用户操作日志的方法(附脚本)

    PS:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所 ...

  6. 按时按登录IP记录Linux所有用户操作日志的方法

    背景:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所 ...

  7. RMS Server打开或关闭日志记录

    原文: https://technet.microsoft.com/zh-cn/library/cc732758 在 Active Directory Rights Management Servic ...

  8. PHP日志记录规范PSR-3

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  9. springmvc+log4j操作日志记录,详细配置

    没有接触过的,先了解一下:log4j教程 部分内容来:log4j教程 感谢! 需要导入包: log包:log4j-12.17.jar 第一步:web.xml配置 <!-- log4j配置,文件路 ...

随机推荐

  1. [源码解析] NVIDIA HugeCTR,GPU 版本参数服务器 --(9)--- Local hash表

    [源码解析] NVIDIA HugeCTR,GPU 版本参数服务器 --(9)--- Local hash表 目录 [源码解析] NVIDIA HugeCTR,GPU 版本参数服务器 --(9)--- ...

  2. linux echo用法和实例

    echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串.linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下 ...

  3. LabVIEW,控件快捷菜单,温度转换

    目前正在自学LabVIEW,深感困难重重,我将偶尔发表一些自己的收获,自认为算是干货了, 搜到这篇随笔的朋友们或多或少遇到了些许困难,希望这能帮助到你们. 内容:练习使用LabVIEW中的控件快捷菜单 ...

  4. laravel7 webuploader上传图片

    webuploader上传 前提工作: 1>了解 代码如下:1.app_path() app_path函数返回app目录的绝对路径: $path = app_path(); 你还可以使用app_ ...

  5. ref属性

    ref属性 1.被用来给元素或组件注册引用信息(id的替代者) 2.应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc) 3.使用方式: 打标识:<h1 ref=& ...

  6. mybatis crud 学习总结02

    1.db.properties 原因:数据库的连接直接写到配置(mybati-config.xml)里存在安全隐患 解决:将配置的信息放到一个文件中管理 右键resources --> File ...

  7. 【图片+代码】:GCC 链接过程中的【重定位】过程分析

    作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++.嵌入式.Linux. 关注下方公众号,回复[书籍],获取 Linux.嵌入式领域经典书籍:回复[PDF],获取所有原创文章( PDF 格式). ...

  8. CF809E题解

    给定一个排列 \(a_i\) 和一棵树,求: \[\frac 1 {n(n-1)}\sum_{i=1}^n\sum_{j=1}^n \varphi(a_i \times a_j) \times dis ...

  9. LGP3449题解

    其实每个串都不是回文串也能做的说... 题意:给定 \(n\) 个互不相同的串,两两拼接一共能够拼出 \(n^2\) 个串,问这 \(n^2\) 个串中有几个回文串. 首先假设拼接出来的串是 \(AB ...

  10. Java 8 + 10 = Java 18

    明天Java 18将正式发布, 虽然它不是长期支持 (LTS) 版本,但它却实现了九个 JEP(在Java 18列出).有哪些特性值得关注呢?今天胖哥为你提前解读.再看.点赞.转发.关注来一波吧. J ...