java web程序实现痕迹保留

请问在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

%d自程序开始后消耗的秒数 %t表示日志记录请求生成的线程 %p表示日志语句的优先级别

%r与日志请求相关的类别名称 %c日志消息所在的类名 %m%n表示日志消息的内容

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死了