Struts2拦截器实现日志管理系统 (同理实现权限,模块点击计数器等)
来源:互联网 发布:淘宝无线优惠券 编辑:程序博客网 时间:2024/05/01 23:47
最近一个项目客户要求能够监控用户对系统的详细操作步骤,比如某人在某时间删除了某个模块的某条数据,经过一番斟酌,决定用struts2的拦截器功能实现日志管理系统,因为系统是旧系统(SSH架构)了,用struts2就可以不用修改系统的原有的类或者方法,而且可以精确到用户的具体操作,并且所有的日志管理代码直接写在拦截器里即可。代码如下:
代码只是当时写的一个简单测试例子,可以进行优化,将各个acton及对应的方法及操作等都可以进行配置,如配置到一个xml文件当中,以后系统中新增加了action去修改xml文件就可以了。这样就不用去写大量的if,也不用每次有新增action来改日志管理系统的代码了。
- @SuppressWarnings("serial")
- public class LogInterceptor extends AbstractInterceptor{
- private String logName;
- private String logContent;
- protected Logger log = Logger.getLogger(getClass());
- public void init() {
- }
- @Override
- public String intercept(ActionInvocation ai) throws Exception {
- Map session = ai.getInvocationContext().getSession();
- Object action = ai.getAction();
- String method = ai.getProxy().getMethod();
- try{
- if(StringUtils.isBlank(method)) method = "method";
- SysUser sysUser = (SysUser)session.get(Constants.SESSION_USER_KEY);
- String userName = "";
- if(sysUser!=null) userName = sysUser.getUserName();
- String currentTime = TimeHelper.getCurrentTime();
- String logContentHead = "用户"+userName+currentTime;
- ai.invoke();//执行被拦截action
- if (action instanceof SysOrgAction) {
- if(method.equals("save")){
- logName = "保存部门";
- logContent = logContentHead +"保存部门:"+ai.getStack().findValue("sysOrg.orgName");
- log.info(logContent);
- addSysLog(logName,logContent);
- }
- if(method.equals("delete")){
- logName = "删除部门";
- logContent = logContentHead +"删除"+((String[])(ai.getStack().findValue("flag_id"))).length+"条部门信息";
- log.info(logContent);
- addSysLog(logName,logContent);
- }
- }
- if (action instanceof SysOrgForAdmAction) {
- if(method.equals("save")){
- logName = "保存单位";
- logContent = logContentHead +"保存单位:"+ai.getStack().findValue("sysOrg.orgName");
- log.info(logContent);
- addSysLog(logName,logContent);
- }
- if(method.equals("delete")){
- logName = "删除单位";
- logContent = logContentHead +"删除1条单位信息";
- log.info(logContent);
- addSysLog(logName,logContent);
- }
- }
- if (action instanceof SysUserAction || action instanceof SysUserForAdmAction) {
- if(method.equals("save")){
- logName = "保存用户";
- logContent = logContentHead +"保存用户:"+ai.getStack().findValue("sysUser.userName");
- log.info(logContent);
- addSysLog(logName,logContent);
- }
- if(method.equals("delete")){
- logName = "删除用户";
- logContent = logContentHead +"删除"+((String[])(ai.getStack().findValue("flag_id"))).length+"条用户信息";
- log.info(logContent);
- addSysLog(logName,logContent);
- }
- }
- }catch(Exception e){
- e.printStackTrace();
- }
- return Action.SUCCESS;
- }
- /**
- * 插入系统日志
- * @param logName
- * @param logContent
- */
- private void addSysLog(String logName,String logContent){
- HttpServletRequest request = ServletActionContext.getRequest();
- SysLogService sysLogService = (SysLogService)ApplicationContextFactory.getApplicationContext().getBean("sysLogService");
- SysLog sysLog = new SysLog();
- sysLog.setLogName(logName);
- sysLog.setLogContent(logContent);
- sysLog.setLogType(Constants.LOG_TYPE_SYS);
- sysLog.setLogTime(TimeHelper.getCurrentTime());
- sysLog.setLogIp(request.getRemoteAddr());
- sysLog.setLogKey(logName);
- sysLogService.saveLog(sysLog);
- }
- }
- Struts2拦截器实现日志管理系统 (同理实现权限,模块点击计数器等)
- Struts2拦截器实现日志管理系统
- Struts2拦截器实现日志管理系统
- 通过struts2拦截器实现权限管理
- struts2中利用拦截器实现权限管理
- 商城项目用拦截器实现日志管理模块
- struts2实现权限拦截
- 用struts2拦截器实现权限检查
- struts2 实现权限控制拦截器
- struts2拦截器实现权限控制
- 用struts2拦截器实现权限检查
- Struts2 拦截器 实现登录权限
- struts2拦截器实现权限控制
- Struts2—拦截器实现权限控制
- struts2拦截器实现权限控制
- 【Struts2进阶】Struts2拦截器实现基于Url的权限管理
- 使用拦截器或者AOP实现权限管理(OA系统中实现权限控制)
- springboot 实现拦截器权限过滤,以及用拦截器实现操作日志功能(二)
- Restaurant LA4851
- 使用JavaScript库还是自写代码
- 2012年BNU新生程序设计大赛解题报告【非官方版】
- T-SQL 查询优化之扫描搜寻
- wm_ncpaint消息
- Struts2拦截器实现日志管理系统 (同理实现权限,模块点击计数器等)
- 周星驰 周润发等都是黑道大哥难怪那么红什么都敢演!
- warning: deprecated conversion from string constant to "char *"
- 著名硬件黑客黄欣国正在设计开源笔记本
- NASA:世界末日谣言不攻自破
- NASA 上线开源网站
- struts2文件上传的采用的三种方式解析和上传下载讲解
- Windows Phone 7系统简介
- Windows Phone 7被成功解锁