Java 有没有一种方法可以从过滤器中的http请求获取post参数,但保持servlet的输入流完好无损?

Java 有没有一种方法可以从过滤器中的http请求获取post参数,但保持servlet的输入流完好无损?,java,servlets,servlet-filters,sitebricks,Java,Servlets,Servlet Filters,Sitebricks,我试图修复sitebricks中的一个bug,它会消耗所有servlet(即使是那些不使用sitebricks的servlet)数据的输入流 HiddenMethodFilter.java行:66 String methodName = httpRequest.getParameter(this.hiddenFieldName); 请参见是,您可以提供自己的请求,请参见 此外,扩展错误的sitebricks筛选器可能比链接更容易。是的,您可以提供自己的请求,请参阅 此外,扩展错误的sitebr

我试图修复sitebricks中的一个bug,它会消耗所有servlet(即使是那些不使用sitebricks的servlet)数据的输入流

HiddenMethodFilter.java行:66

String methodName = httpRequest.getParameter(this.hiddenFieldName);

请参见

是,您可以提供自己的请求,请参见


此外,扩展错误的sitebricks筛选器可能比链接更容易。

是的,您可以提供自己的请求,请参阅


此外,扩展错误的sitebricks筛选器可能比链接更容易。

显然不是,因为servlet容器需要读取和使用InputStream中的数据,然后才能提供请求参数。另一种方法是,如果您首先使用InputStream,容器将无法在以后访问请求参数


为什么您不能使用链接问题中的建议来修复该错误,该建议建议仅为与站点块相关的URL配置HiddenMethodFilter?

显然不能,因为servlet容器需要读取和使用InputStream中的数据,然后才能提供请求参数。另一种方法是,如果您首先使用InputStream,容器将无法在以后访问请求参数


为什么您不能使用链接问题中的建议来修复此错误,建议仅为与站点块相关的URL配置HiddenMethodFilter?

新请求需要以字节数组InputStream的形式封装POST的重复内容,对吗?这看起来有点可怕,因为我们可能会将无界数组复制到memoryNo,
HttpServletRequestWrapper
包装原始请求。这是我想出的解决办法。谢谢你的帮助。HttpServletRequestWrapper如何阻止读取输入流以获取POST请求中的参数,我还不太清楚。您链接到的问题描述了一个完全不同的问题。新请求需要以字节数组InputStream的形式封装POST的重复内容,对吗?这似乎有点可怕,因为我们可能会将无界数组复制到memoryNo,
HttpServletRequestWrapper
包装原始请求。这是我想出的解决办法。谢谢你的帮助。HttpServletRequestWrapper如何阻止读取输入流以获取POST请求中的参数,我还不太清楚。您链接到的问题描述了一个完全不同的问题。Sitebricks使用注释来确定它所服务的URL,因此很难在筛选器中获取信息。为什么不能在调用getParameter之前检查筛选器中的URL,因此,对于对SiteBricks未处理的URL的请求,HttpServletRequest保持不变?尽管可以将SiteBricks处理的URL列表注入过滤器,但我还没有找到一种方法。ps我没有否决你的答案,这是一个理想的解决方案。Sitebricks使用注释来确定它服务的URL,因此信息很难在筛选器中获得。为什么你不能在调用getParameter之前检查筛选器中的URL,因此,对于对SiteBricks未处理的URL的请求,HttpServletRequest保持不变?尽管可以将SiteBricks处理的URL列表注入过滤器,但我还没有找到一种方法。ps我没有否决你的答案,这是理想的解决方案。