学习总结

一、基础准备

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. Ajax的疑难杂种详解

    跨域问题 如图所示,这是通过jquery封装的ajax请求了一个本地的php文件(无框架),console提示CORS策略已阻止"来自来源"的"null":请求 ...

  2. python实现四则运算题库

    #主函数(main.py) from generator import Ari_Expression from infixTosuffix import infix_to_suffix import ...

  3. 矩池云 | 利用LSTM框架实时预测比特币价格

    温馨提示:本案例只作为学习研究用途,不构成投资建议. 比特币的价格数据是基于时间序列的,因此比特币的价格预测大多采用LSTM模型来实现. 长期短期记忆(LSTM)是一种特别适用于时间序列数据(或具有时 ...

  4. PHP动态修改配置文件

    文件结构: index.php 主页 config 配置文件 doUpdate.php 修改功能页 index.php <html> <head> <title>修 ...

  5. php 23种设计模式 - 责任链模式

    责任链模式 责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行 ...

  6. 跑马灯带你深入浅出TextView的源码世界

    一.背景 想必大家平时也没那么多时间是单独看源码,又或者只是单纯的看源码遇到问题还是不知道怎么从源码的角度解决. 但是大家平时开发过程中肯定会遇到这样或那样的小问题,通过百度.Google搜索都无果, ...

  7. Linux 中如何使用 Htop 监控工具?【网络安全】

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 一.Htop 界面展示 "Htop 是一个用于 Linux/Unix 系统的交互式实时进程监控应用程序,也是 top 命令的替代品,它是所 ...

  8. 放在initramfs的ko会先加载,还是/lib/modules/下面的ko会先加载?

    如果是在switchroot时加载,用的是initramfs,在switchroot后,用的是硬盘上的,有些ko放到initramfs中,但是switchroot前不加载的话,用的还是硬盘上的,关键看 ...

  9. [SPDK/NVMe存储技术分析]013 - libibverbs API应用案例分析

    本文是对论文Dissecting a Small InfiniBand Application Using the Verbs API所做的中英文对照翻译 Dissecting a Small Inf ...

  10. swing 实现用户登录注册界面(不使用数据库)

    swing 实现用户登录注册界面(不使用数据库) 实现的功能 先说一下具体实现的功能吧:用户注册后会将注册的对象存入内存中,登录时会遍历注册的对象列表,判断是否登录成功: 登录和注册界面: 本次实验分 ...