学习总结

一、基础准备

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. Linux下配置远程免密登录

    第一步: 输入ssh-keygen: [root@localhost zookeeper-3.5.7]# ssh-keygen Generating public/private rsa key pa ...

  2. gitee的使用

    git clone git add . # 跟踪所有改动过的文件 git commit -m "commit message" # 提交所有更新过的文件 git checkout ...

  3. js-表格

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. yum源出现 AppStream‘ 缓存失败,忽略这个 repo。同步仓库 ‘base‘ 缓存失败,忽略这个 repo 的问题解决办法

    今天安装Wget时出现如下错误 到 /etc/yum.repos.d/目录下编辑CentOS-Base.repo ,更改为如下内容. vim CentOS-Base.repo # CentOS-Bas ...

  5. 巧用"记事本"让病毒无效运行

    电脑中毒后,许多朋友会打开"进程管理器",将几个不太熟悉的程序关闭掉,但有时会碰到这种情况:关掉一个, 再去关闭另外一个时,刚才关闭的那个马上又运行了.再从注册表里先把启动项删除后 ...

  6. 【公告】淘宝 npm 域名即将切换 && npmmirror 重构升级

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 前言 本文将包括两部分内容: 淘宝 npm 域名即将停止解析 npmmirror 镜像站大重构升级 原淘宝 npm 域名即将停止解析 正如在< ...

  7. Oracle视图(view)传参数教程

    废话不多说,直接上例子! 创建包: create or replace package p_view_param is function set_param(num number) return nu ...

  8. 5月16日 python学习总结 DBUtils模块、orm 和 cookie、session、token

    一.DBUtils模块 介绍 The DBUtils suite is realized as a Python package containing two subsets of modules, ...

  9. Pulsar 也会重复消费?

    背景 许久没有分享 Java 相关的问题排查了,最近帮同事一起排查了一个问题: 在使用 Pulsar 消费时,发生了同一条消息反复消费的情况. 排查 当他告诉我这个现象的时候我就持怀疑态度,根据之前使 ...

  10. (leetcode)链表反转-c语言实现

    反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 使用迭代方法,代码 ...