Java 当post大小较大时,ServletRequest.getParameter始终返回null

Java 当post大小较大时,ServletRequest.getParameter始终返回null,java,tomcat,servlets,tomcat6,Java,Tomcat,Servlets,Tomcat6,我们正在维护一个运行在Tomcat6.0.14上的SpringMVC(2.5.6)web应用程序 我们的应用程序中存在一个错误,导致一个文本字段的大小增加,导致一篇文章的文本大小为3.000.000字节 我们将修复此错误,但困扰我的是,当post大小变得如此之大时,方法ServletRequest.getParameter会无声地失败并返回null。日志上没有任何错误的迹象 这是春季mvc故障吗 这是tomcat的错误配置吗 为什么我在日志中看不到任何异常?在ApacheTomcat中,POST

我们正在维护一个运行在Tomcat6.0.14上的SpringMVC(2.5.6)web应用程序

我们的应用程序中存在一个错误,导致一个文本字段的大小增加,导致一篇文章的文本大小为3.000.000字节

我们将修复此错误,但困扰我的是,当post大小变得如此之大时,方法
ServletRequest.getParameter
会无声地失败并返回null。日志上没有任何错误的迹象

这是春季mvc故障吗

这是tomcat的错误配置吗


为什么我在日志中看不到任何异常?

在ApacheTomcat中,POST的默认大小是2MB

您可以在Tomcat的server.xml中的
Connector
标记中更改
maxPostSize
参数

参考:

这是春季mvc故障吗

这是tomcat的错误配置吗

都不是。您超过了Tomcat的maxPostSize的默认值2Mb

参考:



顺便说一下,6.0.14真的很老了。您应尽快升级至最新版本(6.0.33或7.0.21),以修复最近报告的拒绝服务漏洞,和早期的安全问题。

它不应该抛出一个
IlegalStateException:post-too-large
?它不应该抛出一个
IlegalStateException:post-too-large
?@Serhii-IMO-No。除非Servlet规范说明何时何地抛出异常,否则它是一个实现(比如Tomcat)这样做只会给webapp代码带来可移植性问题。此配置选项的目的是保护服务器/webapp免受恶意攻击。Tomcat让它看起来根本没有参数的行为是一个非常安全的选择。如果你对你的webapp进行了防御性的编码,那么你已经可以处理丢失/空的参数了。可能Tomcat5抛出了这个异常。我已经检查了Tomcat6.0.14源代码,它以静默方式失败,只需要一个到上下文记录器的调试日志。