我知道第一次调用getParameter
将读取 postdata 内容(如果有)。
有没有办法让我限制将多少 postdata 内容处理到 RAM 中,或者我是否需要重写这些getParameter*
方法才能完成?
我对将此设置为服务器范围的设置不感兴趣。
还是我需要重写 getParameter方法才能完成?*
是的。
为此,您可以使用HttpServletRequestWrapper
由Filter
.
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
chain.doFilter(new MyPostDataLimitingRequest((HttpServletRequest) request), response);
}
我不相信有一种方法可以限制现有的getParameter()
,这是一种方便的方法,无需扩展 servlet 或添加侦听器来为您分解它。
您可以通过直接使用getInputStream()
or解析 servlet 中的输入流来规避此问题,但我相信这会使对该请求的其余部分的getReader()
进一步调用无效;getParameter()
您需要通过您选择的方法使用其余的输入。
它并不优雅,但它确实有效。