最近这两周都在做一个日志管理的模块,在别人搭好的spring-springMVC-mybatis框架下实现系统操作日志入库并显示的功能。

心路历程:最先想到的是原始办法,用jdbc连接数据库,在每个controller里的每个方法都调用一次插入数据库方法,想想就非常复杂,而且添加一个方法就要再添加一个入库操作,于是放弃了;然后在网上搜日志管理模块,发现很多人都用SpringAOP注解来做,AOP(横向切面编程),听起来非常高大上有没有,然而非常不适合像我一样的菜鸟新手;想了好几天,终于让我想到了一个非常简单易操作的方法,用springMVC自带的拦截器拦截请求,解析并插入数据库。

因为每个方法在调用的时候都会经过springMVC的拦截器,只需要解析每个方法的url,然后采用字符串拼接就OK了,是不是非常非常非常简单,可把我给厉害坏了,叉会腰。

@Overridepublic boolean preHandle(final HttpServletRequest request,HttpServletResponse response, Object handler){JSONObject requestBody = new JSONObject();JSONObject params = new JSONObject();JSONObject headers = new JSONObject();Enumeration<String> em = request.getHeaderNames();while (em.hasMoreElements()) {String s = em.nextElement();headers.put(s, request.getHeader(s));}requestBody.put("headers", headers);Enumeration<String> pem = request.getParameterNames();while (pem.hasMoreElements()) {String s = pem.nextElement();headers.put(s, request.getParameter(s));}String path = request.getServletPath();LogForm log = new LogForm();String content = requestBody.toJSONString();log.setLog_operation(request.getRequestURI());log.setLogin_username("用户名");SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    log.setCreatetime(df.format(System.currentTimeMillis()));//获取当前时间插入数据库String requestUrl = request.getRequestURI(); logService.insertLog(log);if(uncheckUrls.contains(requestUrl)){ return true;        }if(request.getSession().getAttribute("user") == null && !path.contains("login.do")){try {request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");  response.setContentType("text/html;charset=UTF-8"); StringBuffer sb = new StringBuffer();sb.append("<script type='text/javascript'>");                    sb.append("alert('请重新登录!!!');");                    sb.append("window.location.href ='**'");sb.append("</script>");response.getWriter().print(sb.toString());                  return true;} catch (IOException e) {e.printStackTrace();return false;}             }else{return true;          }           }

用springMVC拦截器实现操作日志管理功能相关推荐

  1. 基于springMVC拦截器实现操作日志统计

    2019独角兽企业重金招聘Python工程师标准>>> 1.spring配置文件配置. <!-- 拦截器 --><mvc:interceptors><! ...

  2. SpringMVC拦截器2(资源和权限管理)(作为补充说明)

    SpringMVC拦截器(资源和权限管理) 1.DispatcherServlet SpringMVC具有统一的入口DispatcherServlet,所有的请求都通过DispatcherServle ...

  3. Java Servlet 过滤器与 springmvc 拦截器的区别?

    前言:在工作中,遇到需要记录日志的情况,不知道该选择过滤器还是拦截器,故总结了一下. servlet 过滤器 定义 java过滤器能够对目标资源的请求和响应进行截取.过滤器的工作方式分为四种 应用场景 ...

  4. 在拦截器里放入参数 controller_干货|SpringMVC拦截器的使用详解

    一.拦截器简介 Spring MVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理. 常见应用场景 1.日志记录:记录请求信息的日志,以便进行信息监控.信 ...

  5. Spring+SpringMVC+MyBatis深入学习及搭建(十七)——SpringMVC拦截器

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7098753.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十六)--S ...

  6. SpringMVC拦截器HandlerInterceptor原理及使用

    在使用SpringMVC拦截器的时候,我们接触的最多的便是HandlerInterceptor接口,因为我们所有的自定义拦截器都必须要实现HandlerInterceptor接口,那么就先从Handl ...

  7. 跨域请求/SpringMVC拦截器

    <!-- 开启允许跨域 --> <mvc:cors> <mvc:mapping path="/**"/> </mvc:cors> S ...

  8. SpringMVC拦截器与Filter过滤器

    SpringMVC拦截器与Filter过滤器 SpringMVC拦截器与Filter过滤器 Spring MVC拦截器的定义 SpringMVC拦截器的配置 SpringMVC拦截器HandlerIn ...

  9. SpringMVC与JSON传值,取值,使用SpringMVC实现文件的上传与下载,SpringMVC拦截器

    一. JSON 1.1 什么是JSON 在实际开发中,通常需要和别的系统交换数据,数据交换的格式通常有XML和JSON等: JSON(JavaScript Object Notation:JavaSc ...

  10. springmvc拦截器对请求参数解密_springMvc使用拦截器自定义处理参数

    前言: 这两天开发遇到一个需求,那就是在后台接收到请求后,能不能自定义添加参数呢? 我们知道request中是能获取到前端获取的参数的,但是在后端不能再往parameter中添加参数了,虽然可以使用r ...

最新文章

  1. 小数据集同样重要!掌握处理它的7种方法
  2. Java Inner Class 内部类
  3. codeforces1471 D. Strange Definition
  4. 线段树(单点更新(模板)) 之 hdu 1166
  5. django-模型类管理器-create方法-models属性
  6. 计算机基础知识背诵口诀,内部资料--教育基础知识背诵口诀(一遍记住)
  7. Go 神坑 1 —— interface{} 与 nil 的比较
  8. go语言垃圾回收机制详解
  9. [2014-12-30]如何动态构造Lambda表达式(动态构造Lambda查询条件表达式)
  10. 产品能力提升|《点石成金·访客至上的Web和移动可用性设计秘籍》
  11. Unity遮罩简单复刻2D平台《Unbound: Worlds Apart》游离于世界之海的双重世界效果
  12. linux下开机自动启动文件夹在哪里设置,Linux设置开机自启动的方法【linux学习教程】...
  13. 培训班出来的程序员能找到工作吗?
  14. python 序列类型是二维元素向量,测验6: 组合数据类型 (第6周)
  15. Xenu软件检查网站死链接
  16. 【JavaWeb】JQuery实现广告显示和隐藏动画效果
  17. 搜索计算机文件夹的记录怎么删除,怎样删除电脑最近打开的文件或文件夹?
  18. 使用wget下载GEO数据
  19. Mac批量复制文件名
  20. Windows11 WSL2 ubuntu中vscode调试代码

热门文章

  1. android音效插件,安卓最强音效插件ViPER4Android(V4A)效果器 最新版(FX版)2.0.0.9/(XHiFi版)2.0.0.2_1下载...
  2. java高级工程师哪些技术要掌握?
  3. 2022电工杯数学建模A题目思路总结分享
  4. opencv-3.4.2-vc14_vc15.exe 下载
  5. 【基于MATLAB的数字图像处理】第六章·形态学图像处理
  6. H5案例分析和场景应用
  7. SQL5.5安装教程
  8. 大数据Hadoop基本概念介绍
  9. dlna和miracast可以共存吗_关于无线显示技术,AirPlay,DLNA,Miracast,WiDi 等有何异同?...
  10. 集体智慧编程_第十章寻找独立特征