使用Jetty运行项目报错:Form too large或Form too many keys
程序员文章站
2022-07-15 12:59:27
...
用Jetty作为服务器的Web项目时,Form提交数据太大的话报以下两个错误 :
-
java.lang.IllegalStateException: Form too large 205685>200000
-
java.lang.IllegalStateException: Form too many keys
百度了下,发现这两个异常是
jetty
抛出的jetty限制了Form
提交数据的大小,该源码类来自jetty lib
库下的jetty-server-7.6.16.v20140903.jar
包下的org.eclipse.jetty.server.Request
类。jetty
限制了form
提交数据的最大size和最大keys数, 在代码可以看出,jetty
默认maxFormContentSize
为200000
,maxFormKeys
为1000
;而若我们提交的数据超过这两个值了,就是报上面那两个Java
异常。
Jetty提供了解决该问题的两种方式,任选其一即可:
1.修改Jetty
的jetty.xml
文件,在jetty.xml
文件中添加以下配置:
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
<Arg>-1</Arg>
</Call>
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.Request.maxFormKeys</Arg>
<Arg>-1</Arg>
</Call>
maxFormContentSize
默认是200000
,maxFormKeys
是1000
,我们只需将这两个值改成我们所需的最大值即可,还有一种值就是把这两个值都设置为小于0
的任何值,一般为-1
,表示不限制Form
提交数据的大小。
2.在web
项目中的WEB-INF
文件夹下新建一个jetty-web.xml
文件 ,在jetty-web.xml
文件中添加以下内容:
<?xml version="1.0”encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
"http://jetty.mortbay.org/configure.dtd">
<Configure id="WebAppContext" class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="maxFormContentSize">200000</Set>
<Set name="maxFormKeys">1000</Set>
</Configure>|
将maxFormContentSize
和maxFormKeys
的值修改成自己想要的值即可。
3. Spring Boot项目的配置 :
在application.yml
或application.properties
或bootstrap.yml
或bootstrap.properties
中配置以下方式即可 :
-
properties
配置方式#POST表单长度限制(5MB) server.jetty.max-http-post-size=5000000
-
yml
配置方式#POST表单长度限制(5MB) server: jetty: max-http-post-size:5000000