java filter打印请求返回参数
来源:互联网 发布:crm系统导出数据 编辑:程序博客网 时间:2024/04/29 10:48
1、对HttpServletRequestWrapper进行封装,先把数据保存到临时byte[],然后得到数据后,再把数据复制到request中
2、对HttpServletResponseWrapper进行封装,同样道理 把数据输出到ByteArrayOutputStream,得到数据后,再response.getWriter().write(result);
3、filter中对request\response封装,filter.doFilter(requestWrapper, responseWrapper);
4、乱码解决:responseWrapper中输出流设置编码,response中也设置编码即可解决乱码问题
2017-04-20更新:
5、对经过filter后Enumeration<String> ks=request.getParameterNames();无法获取正确参数的问题,查看tomcat对request参数的处理,解决方式为覆盖HttpServletRequestWrapper中的getParameterNames()和getParameter()函数,因为tomcat读取一次请求参数request.getParameterNames()后就将原参数清空,所以需要
覆盖原HttpServletRequestWrapper中的部分函数。
@Override
public Enumeration getParameterNames() {
initParamHashValues();
return Collections.enumeration(paramHashValues.keySet());
}
@Override
public String getParameter(String name) {
initParamHashValues();
return (String) paramHashValues.get(name);
}
public void initParamHashValues(){
if (!didQueryParameters) {
didQueryParameters=true;
Enumeration<String> ks=super.getParameterNames();
while(ks.hasMoreElements()){
String key=ks.nextElement();
String value=super.getParameter(key);
paramHashValues.put(key, value);
}
System.out.println("initParamHashValues:"+JSON.toJSON(paramHashValues));
}
}
具体代码请下载
http://wenku.baidu.com/view/5282a9d7c0c708a1284ac850ad02de80d4d806b4
- java filter打印请求返回参数
- springAop实现日志请求参数和返回结果打印
- filter请求参数过滤器
- [J2ME]url请求返回参数非法(java.lang.illegalArgument)
- springboot Filter 截取 restful 的请求参数
- SpringBoot设置Filter过滤请求参数
- Retrofit打印请求地址和返回内容
- Retrofit打印请求地址和返回内容
- filter对request请求拦截,对请求参数进行修改
- 打印Java main参数
- Java接收请求参数
- RetroFit请求参数和返回格式说明
- Ajax请求action并返回参数
- Okhttp设置请求日志过滤器,支持打印Post请求参数
- 参数传到请求中返回信息。 简单的post请求
- Spring Mvc获取请求参数和 返回参数和注解
- Java Filter过滤XSS注入非法参数
- jmeter java请求参数配置
- C# 各种文件的读取方法记事本和pdf,word
- java裁剪缩放图片代码下载
- 1
- 工作中项目框架和项目结构的演变
- Opencv研读笔记:haartraining程序之cvCreateMTStumpClassifier函数详解(弱分类器创建)~
- java filter打印请求返回参数
- Activity的生命周期和启动模式
- com.intellij.ide.plugins.PluginManager$StartupAbortedException:
- 2016年中国机器人大赛之第一届中型组仿真比赛
- Intent在Activity之间传值的几种方式
- 18中数据挖掘技术
- OpenGL ES 简单的物理检测AABBBOX
- AC多模匹配算法
- C++构造函数执行过程