


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SSMAOP日志1.数据库与表结构1.1.日志表信息描述sysLog1.2.sql语句CREATE TABLE sysLog(id VARCHAR2(32) default SYS_GUID() PRIMARY KEY,visitTime timestamp, username VARCHAR2(50), ip VARCHAR2(30),url VARCHAR2(50),executionTime int, method VARCHAR2(200)1.3.实体类北京市昌平区建材城西路 龙办公楼一层:序号字段名称字段类型字段描述1idVARCHAR2主键 无意义uuid2visitTimetim
2、estamp时间3usernameVARCHAR2操作者用户名4ipVARCHAR2ip5urlVARCHAR2url6executionTimeint执行时长7methodVARCHAR方法public class SysLog private String id; private Date visitTime;private String visitTimeStr; private String username; private String ip;private String url; private Long executionTime; private String method;
3、2.基于AOP日志处理2.1. 页面syslog-list.jsp详细内容请查看 中页面信息2.2. 创建切面类处理日志北京市昌平区建材城西路 龙办公楼一层:Component Aspectpublic class LogAop Autowiredprivate HttpServletRequest request;Autowiredprivate ISysLogService sysLogService;private Date startTime; / 时间private Class executionClass;/ 的类private Method executionMethod; /
4、的方法/ 主要获取 时间、 的类、 的方法Before("execution(* com.itheima.ssm.controller.*.*(.)")public void doBefore(JoinPoint jp) throws NoSuchMethodException, SecurityException startTime = new Date(); / 时间/ 获取 的类executionClass = jp.getTarget().getClass();/ 获取 的方法String methodName = jp.getSignature().getName
5、();/ 获取 的方法的名称Object args = jp.getArgs();/ 获取 的方法的参数if (args = null | args.length = 0) / 无参数executionMethod = executionClass.getMethod(methodName); / 只能获取无参数方法 else / 有参数,就将args中所有元素遍历,获取对应的Class,装入到一个Class Class classArgs = new Classargs.length;北京市昌平区建材城西路 龙办公楼一层:for (int i = 0; i < args.length;
6、 i+) classArgsi = argsi.getClass();executionMethod = executionClass.getMethod(methodName, classArgs);/ 获取有参数方法/ 主要获取日志中其它信息,时长、ip、url. After("execution(* com.itheima.ssm.controller.*.*(.)") public void doAfter(JoinPoint jp) throws Exception / 获取类上的RequestMapping对象if (executionClass != SysL
7、ogController.class) RequestMapping classAnnotation = (RequestMapping)executionClass.getAnnotation(RequestMapping.class); if (classAnnotation != null) / 获取方法上的RequestMapping对象RequestMapping methodAnnotation = executionMethod.getAnnotation(RequestMapping.class);if (methodAnnotation != null) String url
8、 = "" / 它的值应该是类上的RequestMapping的value+方法上的RequestMapping的valueurl = classAnnotation.value()0 + methodAnnotation.value()0; SysLog sysLog = new SysLog();/ 获取 时长Long executionTime = new Date().getTime() - startTime.getTime();/ 将sysLog对象属性封装sysLog.setExecutionTime(executionTime); sysLog.setUrl
9、(url);/ 获取ipString ip = request.getRemoteAddr(); sysLog.setIp(ip);/ 可以通过securityContext获取,也可以从request.getSession中获取SecurityContext context = SecurityContextHolder.getContext(); / request.getSession().getAttribute("SPRING_SECURITY_CONTEXT")String username = (User) (context.getAuthentication
10、().getPrincipal().getUsername();sysLog.setUsername(username);sysLog.setMethod("类名" + executionClass.getName() + "方法名" + executionMethod.getName();sysLog.setVisitTime(startTime);/ 调用Service,调用dao将sysLog insert数据库sysLogService.save(sysLog);在切面类中我们需要获取登录用户的username,还需要获取ip地址,我们怎么处理?
11、username获取SecurityContextHolder获取ip地址获取ip地址的获取我们可以通过request.getRemoteAddr()方法获取到。在Spring中可以通过ReqontextListener来获取request或session对象。2.3.SysLogControllerRequestMapping("/sysLog") Controllerpublic class SysLogController Autowiredprivate ISysLogService sysLogService;RequestMapping("/findA
12、ll.do")public M AndView findAll() throws Exception M AndView mv = new M AndView();List<SysLog> sysLogs = sysLogService.findAll(); mv.addObject("sysLogs", sysLogs); mv.setViewName("syslog-list");return mv;2.4.Service北京市昌平区建材城西路 龙办公楼一层:Service Transactionalpublic class S
13、ysLogServiceImpl implements ISysLogService Autowiredprivate ISysLogDao sysLogDao;Overridepublic void save(SysLog log) throws Exception sysLogDao.save(log);Override2.5.Daopublic interface ISysLogDao Select("select * from syslog") Results(Result(id=true,column="id",property="i
14、d"), Result(column="visitTime",property="visitTime"), Result(column="ip",property="ip"), Result(column="url",property="url"), Result(column="executionTime",property="executionTime"), Result(column="method",property="method"), Result(column="username",property="username")public List<SysLog> findAll() throws Exception;Insert("insert into syslog(visitTime,username,ip,url,exe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 不同行业保安技术设备比较计划
- 向学习型组织转型的路径计划
- 2024年贵州省自然资源厅下属事业单位真题
- 软件设计师选拔标准2025年试题及答案
- 2024年甘肃省教育厅下属事业单位真题
- 2025年战略目标与运营风险的交互影响试题及答案
- 山东省青岛十五中学2025届七年级数学第二学期期末教学质量检测试题含解析
- 法学概论摸索与前行试题及答案
- 财务风险对公司战略的影响试题及答案
- 2025届河南省汤阴县七下数学期末预测试题含解析
- 全国海洋知识竞赛考试题库及答案解析(800题版)
- 5 25我爱我心理活动周-主题班会
- 保洁外包可行性方案
- 防灾避险功能绿地规划
- 大型车祸急救护理
- 无人机装调检修工培训计划及大纲
- 水域救援培训课件
- 英文介绍饺子
- 空调维护保养报告范本
- 钦州市中益环保公司利用建筑垃圾制砖项目环境影响报告表
- 02《心肺复苏术》教案
评论
0/150
提交评论