从ServletRequest获取参数会抛出非法状态异常

时间:2019-03-21 13:59:58

标签: servlets jboss httprequest httpresponse servlet-filters

我在每个请求中调用的过滤器之一中包含此代码。

httpRequest.getParameter(tabId);

过滤后,我的请求连续失败。在调试时,我发现此代码首次引发此异常,现在说如果我使用“检查”执行此代码,则引发此异常,如果我再次使用“检查”或“转发调试”执行此异常,则给出“空”并完成流程。我不明白为什么它在第一次执行此代码时会如此工作,因为请求中没有“ tabId”。

18:44:03,443 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/workbench].[action]] (http-0.0.0.0:8090-5) JBWEB000236: Servlet.service() for servlet action threw exception: java.lang.IllegalStateException: JBWEB002004: More than the maximum number of request parameters (GET plus POST) for a single request (128) were detected. Any parameters beyond this limit have been ignored. To change this limit, set the maxParameterCount attribute on the Connector.
    at org.apache.tomcat.util.http.Parameters.addParameter(Parameters.java:184) [jbossweb-7.5.28.Final-redhat-1.jar:7.5.28.Final-redhat-1]
    at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:356) [jbossweb-7.5.28.Final-redhat-1.jar:7.5.28.Final-redhat-1]
    at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:213) [jbossweb-7.5.28.Final-redhat-1.jar:7.5.28.Final-redhat-1]
    at org.apache.catalina.connector.Request.parseParameters(Request.java:2885) [jbossweb-7.5.28.Final-redhat-1.jar:7.5.28.Final-redhat-1]
    at org.apache.catalina.connector.Request.getParameter(Request.java:1303) [jbossweb-7.5.28.Final-redhat-1.jar:7.5.28.Final-redhat-1]
    at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:350) [jbossweb-7.5.28.Final-redhat-1.jar:7.5.28.Final-redhat-1]
    **at com.xyz.IdentityFilter.doFilter(IdentityFilter.java:58) [projectX.jar:]**

1 个答案:

答案 0 :(得分:0)

请求主体已被使用,如果需要对其进行业务逻辑,则必须将其包装在过滤器中(在doFilter(...)调用之前)。有关示例,请参见here