相关疑难解决方法(0)

Http Servlet请求在读取一次后丢失POST主体的参数

我正在尝试访问Java Servlet过滤器中的两个http请求参数,这里没什么新东西,但是很惊讶地发现参数已经被消耗了!因此,它在过滤器链中不再可用.

似乎只有在参数进入POST请求主体(例如表单提交)时才会出现这种情况.

有没有办法读取参数而不消耗它们?

到目前为止,我只找到了这个引用:使用request.getParameter的Servlet过滤器丢失了Form数据.

谢谢!

java parameters servlets httprequest servlet-filters

77
推荐指数
7
解决办法
9万
查看次数

如何多次读取request.getInputStream()

我有这个代码:

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException {
    logger.info("Filter start...");

    HttpServletRequest httpRequest = (HttpServletRequest) request;
    HttpServletResponse httpResponse = (HttpServletResponse) response;

    String ba = getBaId(getBody(httpRequest));

    if (ba == null) {
        logger.error("Wrong XML");
        httpResponse.setStatus(HttpServletResponse.SC_BAD_REQUEST);
    } else {      

        if (!clients.containsKey(ba)) {
            clients.put(ba, 1);
            logger.info("Client map : init...");
        } else {
            clients.put(ba, clients.get(ba).intValue() + 1);
            logger.info("Threads for " + ba + " = " + clients.get(ba).toString());
        }

        chain.doFilter(request, response);
    }
}
Run Code Online (Sandbox Code Playgroud)

和这个web.xml(包缩短和名称更改,但它看起来相同)

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
  <filter>
    <filter-name>TestFilter</filter-name> …
Run Code Online (Sandbox Code Playgroud)

java servlets java-ee servlet-filters

36
推荐指数
4
解决办法
5万
查看次数

如何更改java过滤器中的servlet请求主体?

如何更改 java 过滤器中的请求正文以防止XSS攻击?我构建HttpServletRequestWrapper并用于getparameter更改主体,但出现流关闭异常。

java xss servlets servlet-filters

2
推荐指数
1
解决办法
2万
查看次数