2

我知道第一次调用getParameter将读取 postdata 内容(如果有)。

有没有办法让我限制将多少 postdata 内容处理到 RAM 中,或者我是否需要重写这些getParameter*方法才能完成?

我对将此设置为服务器范围的设置不感兴趣。

4

2 回答 2

2

还是我需要重写 getParameter方法才能完成?*

是的。

为此,您可以使用HttpServletRequestWrapperFilter.

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    chain.doFilter(new MyPostDataLimitingRequest((HttpServletRequest) request), response);
}
于 2012-11-20T16:00:40.330 回答
1

我不相信有一种方法可以限制现有的getParameter(),这是一种方便的方法,无需扩展 servlet 或添加侦听器来为您分解它。

您可以通过直接使用getInputStream()or解析 servlet 中的输入流来规避此问题,但我相信这会使对该请求的其余部分的getReader()进一步调用无效;getParameter()您需要通过您选择的方法使用其余的输入。

它并不优雅,但它确实有效。

于 2012-11-20T16:03:21.180 回答