使用 ssm 实现登录日志记录
使用 ssm 实现登录日志记录
学习总结
一、基础准备
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 实现登录日志记录的更多相关文章
- win7或win2008 R2 被远程登录日志记录 系统日志
事件查看器 → Windows 日志 → 安全 (win7 事件查看器 打开方式 :计算机 右键 → 管理 → 计算机管理 → 系统工具 → 事件查看器 windows server 2008 ...
- win7或windows server 2008 R2 被远程登录日志记录 系统日志
事件查看器 → Windows 日志 → 安全 (win7 事件查看器 打开方式 :计算机 右键 → 管理 → 计算机管理 → 系统工具 → 事件查看器 windows server 2008 ...
- iptables log日志记录功能扩展应用:iptables自动配置临时访问策略,任意公网登录服务器
一.修改日志记录: 1. 修改配置文件: vi /etc/rsyslog.conf 添加以下内容 #iptables log kern.=notice /var/log/iptables.log 2. ...
- 记录Windows远程登录日志(转)
1.建立一个名为RDPlog.bat的批处理文件,内容为: echo @offdate /t >>Z:\IIS\RDPlog.txt time /t >>Z:\IIS\RDPl ...
- 按时按登录IP记录Linux所有用户操作日志的方法(附脚本)
PS:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所 ...
- 按时按登录IP记录Linux所有用户操作日志的方法
背景:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所 ...
- RMS Server打开或关闭日志记录
原文: https://technet.microsoft.com/zh-cn/library/cc732758 在 Active Directory Rights Management Servic ...
- PHP日志记录规范PSR-3
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- springmvc+log4j操作日志记录,详细配置
没有接触过的,先了解一下:log4j教程 部分内容来:log4j教程 感谢! 需要导入包: log包:log4j-12.17.jar 第一步:web.xml配置 <!-- log4j配置,文件路 ...
随机推荐
- 矩池云 | 使用LightGBM来预测分子属性
今天给大家介绍提升方法(Boosting), 提升算法是一种可以用来减小监督式学习中偏差的机器学习算法. 面对的问题是迈可·肯斯(Michael Kearns)提出的:一组"弱学习者&quo ...
- linux作业--第十二周
1.主从复制及主主复制的实现 2.xtrabackup实现全量+增量+binlog恢复库 3.MyCAT实现MySQL读写分离 4.ansible常用模块介绍
- LGP5204题解
@CF1327F 最小值看着有点怪,先转化成最大值吧...反正没啥区别... 考虑把最大值相同的区间和限制为这个最大值的区间都拿出来.然后离散化.问题变为让所有区间都满足最值为 \(c\). 考虑 D ...
- 《shader入门精要》13.2再谈运动模糊中片元着色器的世界坐标的计算
具体在书p275页 这里为啥需要除D.w呢. 首先我们得到的NDC的坐标是已经归一化的,但是CurrenViewProjectionMatrix的作用,是把世界空间转化为尚未归一化的裁剪空间. 这里看 ...
- 商品模型:SPU、商品、SKU概念模型设计
商品系统是电商SaaS.新零售SaaS最基础.最核心的系统之一.商品系统几乎需要支撑所有业务系统,商品详情.购物车.订单.履约.结算.售后.库存.供应链等,都需要依赖商品系统的能力.为了保障业务的稳定 ...
- MATLAB2018a安装
1:同时选中进行解压 2:解压完后打开"setup.exe"进入安装步骤 3:选择"使用文件安装密钥" 4:接受条款,下一步 5:复制密钥 09806-0744 ...
- 【死磕NIO】— 跨进程文件锁:FileLock
大家好,我是大明哥,一个专注于[死磕 Java]系列创作的程序员. [死磕 Java ]系列为作者「chenssy」 倾情打造的 Java 系列文章,深入分析 Java 相关技术核心原理及源码 死磕 ...
- redis持久化 RDB与AOF
redis持久化 RDB与AOF RDB与AOF区别 rdb: 基于快照的持久化,速度更快,一般用做备份,主从复制也是依赖于rdb持久化功能 aof:以追加的方式记录redis操作日志的文件,可以最大 ...
- 给windows右键添加快捷启动程序
给windows右键添加快捷启动程序 修改点击空白处的右键 运行--redegit 打开注册表 展开第一个H..C..R 找到 Direcory,展开 找到Background 展开 右键shell, ...
- 什么?Android上面跑Linux?
前言 众所周知,现在程序员因为工作.个人兴趣等对各种系统的需求越来越大,部分人电脑做的还是双系统.其中,比较常见的有各种模拟器.虚拟机在windows上面跑Android.Linux,大家估计都习以为 ...