spring mvc 拦截器打印详细的请求参数信息
2017-08-07 14:39
337 查看
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
// 所有请求第一个进入的方法
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
相关文章推荐
- 使用ProceedingJoinPoint获取当前请求的方法等参数——spring mvc拦截器
- 使用ProceedingJoinPoint获取当前请求的方法等参数——spring mvc拦截器
- 使用ProceedingJoinPoint获取当前请求的方法等参数——spring mvc拦截器
- 使用ProceedingJoinPoint获取当前请求的方法等参数——spring mvc拦截器
- java拦截器与过滤器打印请求url与参数
- [置顶] 使用拦截器获取请求参数信息并写入日志
- [置顶] Spring Mvc 公共Controller 使用拦截器注入请求信息
- Spring MVC代码实例系列-11:Spring MVC实现简单的权限控制拦截器和请求信息统计拦截器
- 请求失败或服务未及时响应 有关详细信息
- mybatis拦截器打印sql且通过自定义注解获取sql开发人信息
- 4000 axios全局请求参数设置,请求及返回拦截器
- SQL SERVER服务启动不了:请求失败或服务未及时响应。有关详细信息请参见事件日志或其他的错误日志
- SPRING MVC 的请求参数获取的几种方法
- Java使用HTTP编程模拟多参数多文件表单信息的请求与处理
- spring mvc 访问不同的目录下的jsp视图及处理POST请求参数中文乱码问题
- SPRING MVC3.2案例讲解---如何获取请求参数
- SPRING MVC 的请求参数获取的几种方法
- Spring MVC后台接收不到POST请求的参数
- spring mvc当表单请求为application/json或enctype="multipart/form-data 过滤请求值参数,取不到请求参数问题
- JavaEE-------------------------自定义Struts 2拦截器得到请求参数