请问在java web项目中如何做到保留用户操作痕迹的功能?
我想要实现的效果是:
当XX用户登录到系统后,记住XX的每一个操作。记录结果如,XX于XX时间进入XX页面做了XX(增删改)操作...于XX时间退出系统(不论用户是关闭浏览器,点击系统提供的退出按钮还是直接关闭电脑).
大概的想法就如上所述,如果有什么没有说清楚的地方,请给我留言,谢谢^_^
SSH框架使用中,每一个框架都提供给用户记录日志的相关接口,你可以使用Struts中的Log4j将日志以不同方式记录,如存储到数据库中,也可以使用Hibernate提供给你的一个接口并实现该接口实现,甚至可以使用
web.xml文件:
webAppRootKey
swing.root
<!--=================由Sprng载入的Log4j配置文件位置======================-->
log4jConfigLocation
/WEB-INF/classes/log4j.properties
<!--==========Spring默认刷新Log4j配置文件的间隔,单位为millisecond=============-->
log4jRefreshInterval
60000
<!--==========配置Spring log4j Config loader==========-->
org.springframework.web.util.Log4jConfigListener
log4j.properties文件:
#LOGGERS
#TRACE DEBUG INFO WARN ERROR FATAL
log4j.rootLogger=ERROR,console,file
#APPENDERS
#ConsoleAppender输出到控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender
#DailyRollingFileAppender每天产生一个日志文件
#RollingFileAppender文件大小到达指定尺寸的时候产生一个新的文件
#FileAppender 文件
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=${swing.root}/WEB-INF/logs/swing.log
#LAYOUTS
#SimpleLayout包括日志消息的级别和信息字符串
#PatternLayout可以灵活的指定布局模式
#HTMLayout以HTML表格形式布局
#TTCCLayout包括日志产生的时间,线程和类别等信息
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%t %p %c-- %m%n--%d{yyyy-mm-dd hh:mm:ss}
相当与用户行为日志吧。
可以在每个用户事件发生的时候,把这部分操作记录下来。
可以存放到数据库,或者日志文件。
你需要做的是:
1.定义用户行为
2.设计存储方式,结构
3.找到行为发生的代码行,插入记录行为的代码。
具体实现,我建议AOP。
想简单一点的话,就使用log4j,
想复杂的话,使用AOP最好.
这种“操作日志记录”是很多项目中都采用的“用户行为痕迹记录”方式,特别是敏感和重要的数据操作。
实现的方法有很多种,像拦截器、切面AOP、日志Log。主要的原理就是用户在进行操作的时间点触发“操作痕迹记录”事件来记录用户操作信息。用户操作痕迹信息可以按用户行为、功能点、系统模块、操作群体、敏感等级...来分类记录;记录的操作信息保存在数据库DB、文本Txt、日志文件;有点像流水号~~
用户登录到系统后,通过Session\Cookie获取到用户信息,记录用户操作痕迹记录。用户退出系统、关闭窗口、关闭电脑、的时候可以通过:
1.用户退出系统时,注销Session或Cookie时触发事件,记录用户退出系统操作。
2.关闭窗口时,会触发一个页面窗口的unLoad()事件,记录用户退出系统操作。
异常退出怎么捕获呢?比如IE死了