首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

S2SH配备部署日志切面拦截器

2012-07-22 
S2SH配置部署日志切面拦截器0.为了防止service切面影像hibernate过滤器参数,需声明设定后者初始参数。2.创

S2SH配置部署日志切面拦截器
0.为了防止service切面影像hibernate过滤器参数,需声明设定后者初始参数。



2.创建日志拦截器类
/** * 保存操作日志 *  * @param obj * @param logIp * @param logUserId * @param logUserName * @param logType * @param bizType1 */public void saveLog(Object obj, String logIp, String logUserId,String logUserName, String logType, String bizType1) {try {// 初始化log表CahsmsLog log = new CahsmsLog();if (null != obj) // 业务操作{Object logRecordPk = "";//主键值if (obj instanceof List) {List logList = new ArrayList<CahsmsLog>();List list = (List) obj;// 获取物理表名AbstractEntityPersister classMetadata = (SingleTableEntityPersister) this.logDao.getSessionFactory().getClassMetadata(list.get(0).getClass());for (int i = 0; i < list.size(); i++) {log=new CahsmsLog();if (classMetadata != null) {String logTable = classMetadata.getTableName();log.setLogTable(logTable);}// 获取主键值logRecordPk = this.logDao.getSessionFactory().getCurrentSession().getIdentifier(list.get(i));if(logRecordPk instanceof String )//非联合主键{log.setLogRecordPk((String)logRecordPk);}else//联合主键{Field[] field = logRecordPk.getClass().getDeclaredFields();String logRecordPkValue="";//主键值for(int j=0;j<field.length;j++){String attributeName = field[j].getName(); //获取属性的名字String methodName=attributeName.substring(0, 1).toUpperCase() + attributeName.substring(1);Method m = logRecordPk.getClass().getMethod("get"+methodName);String attributeValue = (String) m.invoke(logRecordPk); //调用getter方法获取属性值logRecordPkValue+=attributeName+":"+attributeValue;if(j<field.length-1){logRecordPkValue+=",";}}log.setLogRecordPk(logRecordPkValue);}log.setLogId(DataTypeUtil.getDateTimeStemp(GlobalConstants.PREFIX_LOG)+ i);// 日志idlog.setLogDate(new Date(new Date().getTime()));// 获取操作时间log.setLogUserId(logUserId);// 登陆用户idlog.setLogUserName(logUserName);// 登陆用户姓名log.setLogIp(logIp);// ip地址log.setLogType(logType);// 操作类型(C:Create;R:// Read;U:Update;D:Delete)log.setBizType1(bizType1);// 业务大类(1:登陆;2:业务操作;3:退出)logList.add(log);}this.logDao.getHibernateTemplate().getSessionFactory().getCurrentSession().setFlushMode(FlushMode.AUTO);this.logDao.saveList(logList);this.logDao.getHibernateTemplate().getSessionFactory().getCurrentSession().flush();} else {// 获取物理表名AbstractEntityPersister classMetadata = (SingleTableEntityPersister) this.logDao.getSessionFactory().getClassMetadata(obj.getClass());if (classMetadata != null) {String logTable = classMetadata.getTableName();log.setLogTable(logTable);}// 获取主键值logRecordPk = this.logDao.getSessionFactory().getCurrentSession().getIdentifier(obj);if(logRecordPk instanceof String )//非联合主键{log.setLogRecordPk((String)logRecordPk);}else//联合主键{Field[] field = logRecordPk.getClass().getDeclaredFields();String logRecordPkValue="";//主键值for(int j=0;j<field.length;j++){String attributeName = field[j].getName(); //获取属性的名字String methodName=attributeName.substring(0, 1).toUpperCase() + attributeName.substring(1);//设置属性值的方法名Method m = logRecordPk.getClass().getMethod("get"+methodName);String attributeValue = (String) m.invoke(logRecordPk); //调用getter方法获取属性值logRecordPkValue+=attributeName+":"+attributeValue;if(j<field.length-1){logRecordPkValue+=",";}}log.setLogRecordPk(logRecordPkValue);}log.setLogId(DataTypeUtil.getDateTimeStemp(GlobalConstants.PREFIX_LOG));// 日志idlog.setLogDate(new Date(new Date().getTime()));// 获取操作时间log.setLogUserId(logUserId);// 登陆用户idlog.setLogUserName(logUserName);// 登陆用户姓名log.setLogIp(logIp);// ip地址log.setLogType(logType);// 操作类型(C:Create;R:// Read;U:Update;D:Delete)log.setBizType1(bizType1);// 业务大类(1:登陆;2:业务操作;3:退出)this.logDao.getHibernateTemplate().getSessionFactory().getCurrentSession().setFlushMode(FlushMode.AUTO);this.logDao.save(log);this.logDao.getHibernateTemplate().getSessionFactory().getCurrentSession().flush();}}else//登录和退出操作{log.setLogId(DataTypeUtil.getDateTimeStemp(GlobalConstants.PREFIX_LOG));// 日志idlog.setLogDate(new Date(new Date().getTime()));// 获取操作时间log.setLogUserId(logUserId);// 登陆用户idlog.setLogUserName(logUserName);// 登陆用户姓名log.setLogIp(logIp);// ip地址log.setLogType(logType);// 操作类型(C:Create;R:// Read;U:Update;D:Delete)log.setBizType1(bizType1);// 业务大类(1:登陆;2:业务操作;3:退出)this.logDao.getHibernateTemplate().getSessionFactory().getCurrentSession().setFlushMode(FlushMode.AUTO);this.logDao.save(log);this.logDao.getHibernateTemplate().getSessionFactory().getCurrentSession().flush();}} catch (Exception e) {e.printStackTrace();}}

热点排行