spring mvc 拦截器打印详细的请求参数信息

来源:互联网 发布:2011安全生产事故数据 编辑:程序博客网 时间:2024/05/16 13:48


public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 所有请求第一个进入的方法String reqURL = request.getRequestURL().toString();    String ip = request.getRemoteHost ();    InputStream  is = request.getInputStream ();    StringBuilder responseStrBuilder = new StringBuilder ();    BufferedReader streamReader = new BufferedReader (new InputStreamReader (is,"UTF-8"));    String inputStr;     while ((inputStr = streamReader.readLine ()) != null)         responseStrBuilder.append (inputStr);//     System.out.println("请求参数: " + responseStrBuilder.toString ());     String parmeter = responseStrBuilder.toString();        long startTime = System.currentTimeMillis();       request.setAttribute("startTime", startTime);       if (handler instanceof HandlerMethod) {           StringBuilder sb = new StringBuilder(1000);           sb.append("-----------------------").append(MiscUtil.getDateTimeString()).append("-------------------------------------\n");           HandlerMethod h = (HandlerMethod) handler;   //Controller 的包名           sb.append("Controller: ").append(h.getBean().getClass().getName()).append("\n");   //方法名称           sb.append("Method    : ").append(h.getMethod().getName()).append("\n");   //请求方式  post\put\get 等等           sb.append("RequestMethod    : ").append(request.getMethod()).append("\n");   //所有的请求参数           sb.append("Params    : ").append(parmeter).append("\n");   //部分请求链接           sb.append("URI       : ").append(request.getRequestURI()).append("\n");    //完整的请求链接           sb.append("AllURI    : ").append(reqURL).append("\n");   //请求方的 ip地址           sb.append("request IP: ").append(ip).append("\n");           logger.info(sb.toString());                  }//       修改request中的参数并保存到request中        request.setAttribute("parmeter_json", parmeter);         return true;}

这里有的问题是request 只能被读一次 第二次去读取将拿不到里面的内容

解决方法是:向request 在写入一个对象 将所有的参数都写进去


打印的日志如下:

Controller: com.cms.controller.testController
Method    : playList
RequestMethod    : POST
Params    : {     "param": {        "page_num": "1",        "page_size": "20"         }}
URI       : /cms-api/test/online_play_list/1
AllURI    : http://localhost:8080/cms-api/test/online_play_list/1
request IP: 0:0:0:0:0:0:0:1




原创粉丝点击