使用Jetty运行项目报错:Form too large或Form too many keys

用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默认maxFormContentSize200000maxFormKeys1000;而若我们提交的数据超过这两个值了,就是报上面那两个Java异常。

Jetty提供了解决该问题的两种方式,任选其一即可:

1.修改Jettyjetty.xml文件,jetty.xml文件在jetty根目录下的etc目录,在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默认是200000maxFormKeys1000,我们只需将这两个值改成我们所需的最大值即可,还有一种值就是把这两个值都设置为小于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>|

maxFormContentSizemaxFormKeys的值修改成自己想要的值即可。

3. Spring Boot项目的配置 :

application.ymlapplication.propertiesbootstrap.ymlbootstrap.properties中配置以下方式即可 :

  • properties配置方式

    #POST表单长度限制(5MB)
    server.jetty.max-http-post-size=5000000
    
  • yml配置方式

    #POST表单长度限制(5MB)
    server:
      jetty:
        max-http-post-size:5000000
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微枫Micromaple

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值