我想在Java Servlet过滤器中访问两个HTTP请求参数,这里没有什么新鲜事,但惊讶地发现这些参数已经被消耗了!因此,在过滤器链中不再可用。
似乎只有当参数以POST请求主体(例如表单提交)形式到达时才会出现这种情况。
有没有办法读取参数而不消耗它们?
到目前为止,我只找到了这个参考:Servlet Filter using request.getParameter loses Form data。
谢谢!
我想在Java Servlet过滤器中访问两个HTTP请求参数,这里没有什么新鲜事,但惊讶地发现这些参数已经被消耗了!因此,在过滤器链中不再可用。
似乎只有当参数以POST请求主体(例如表单提交)形式到达时才会出现这种情况。
有没有办法读取参数而不消耗它们?
到目前为止,我只找到了这个参考:Servlet Filter using request.getParameter loses Form data。
谢谢!
你可以使用Servlet过滤器链,但是不要使用原始的,而是创建自己的请求yourOwnRequests扩展HttpServletRequestWrapper。
String body = com.google.common.io.CharStreams.toString(request.getReader());
这不会对后续的读取产生任何影响。
request.getReader()
就会返回一个读取器,随后的读取操作将只包含空字符串。 - christophetd