一个基于spring mvc+hibernate框架的项目,其中有一个页面,显示用户列表,然后有个批量删除用户功能,就是把所有选中的用户记录的ID值提交到后台,这个ID值是绑定在每一条记录前的chebox里。然后勾选中一万多条用户记录,提交表单向后台发post请求,发现只删除了勾选的前10000条记录。于是我用开发者工具看请求的表单,确认发送的表单值应该跟我勾选的一致。然后再到后台java代码打断点,发现用@RequestParam 标记获取前台表单值的数组变量大小只有10000。再看看里面的值,发现只提交了前10000条用户的记录。我再用request.getParameterValues获取提交表单的值,获取到的数组大小还是10000个用户的值。那么问题来了,不是说好post请求不限制参数长度么,出现这个情况是别的地方限制了长度还是怎么样呢?
我再用js自造一个json对象,生成超过一万对由三位字母构成的属性,并赋值123,用post请求把这些json数据发到后台,然后在后台断点发现只收到一万个属性值。用浏览器捉包可以看到post的数据包有一百多兆大小,已经远远超过网上说的tomcat配置2M限制,什么的,明显跟这个没关系了。我在这里放一下捉包的图: