编写了两个filter分别对post请求做处理,获取post请求的数据的代码如下
BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream()));
String line = null;
StringBuilder sb = new StringBuilder();
while((line = br.readLine())!=null){
sb.append(line);
}
if(sb.toString()==null)
{
NeedSqldetect=false;
System.out.println("request is null");
}
else
{
requeststr=URLDecoder.decode(sb.toString(),"UTF-8");
System.out.println("request="+requeststr);
}
然后在第一个filter中使用
chain.doFilter(request, response);
将请求再传递给第二个filter
但是为什么只有第一个filter能获得到post数据,第二个获取的post数据是空的?请大侠们帮帮忙
BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream()));
String line = null;
StringBuilder sb = new StringBuilder();
while((line = br.readLine())!=null){
sb.append(line);
}
if(sb.toString()==null)
{
NeedSqldetect=false;
System.out.println("request is null");
}
else
{
requeststr=URLDecoder.decode(sb.toString(),"UTF-8");
System.out.println("request="+requeststr);
}
然后在第一个filter中使用
chain.doFilter(request, response);
将请求再传递给第二个filter
但是为什么只有第一个filter能获得到post数据,第二个获取的post数据是空的?请大侠们帮帮忙
解决方案 »
- hibernate关系映射
- JSP
- 请问老师一个反射的问题,
- Widget 开发团队邀请您以来开发
- 怎么DAO操作老提示Exception?
- java连接sql server 2000的 JDBC 问题
- 求教?
- 初学者问题:EJB的LocalHome接口与Home接口有什么不同它们分别有什么作用.
- WIN2OOO SERVER下安装J2EE 1.4完毕后,究竟还要做那些配置工作?
- 有一个关于struts的问题一直困扰着我,找了很久都解决不了问题
- org.hibernate.HibernateException: identifier of an instance 错误.
- ============JProfiler 内存监测工具!!!! 在线等。。。==================
stream我记得是翻译成流吧,流的意思就是说当你读取之后就无法回到上一次读取的数据。所以说流是单向的。当第一个filter中读取流之后流已经被读完。所以无法继续读取。所以第二个filter中读不到数据。
第一个filter读完后将数据存到某域变量,供第二个Filter用就行了。
我只开发filter,对后方的servlet未知的情况下,还需要在处理后将post请求再发送给servlet,所以不能对post请求做修改,也不能出现post请求数据丢失的情况,有没有好的建议解决这个问题?难道要在最后重构一次post请求? 谢谢
只要不getInputStream/getReader,用其他的方法如getParameter是没有影响的,一定要getInputStream么?