SpringMVC没有接受到参数的坑

其实说上来也不是SpringMVC的坑。linux


相同的一份代码,我在windows上用mvn打成jar放到linux上执行,POST请求能够接收到参数;git

可是我直接在linux上从git拉取分支,并在linux上打包部署这个POST请求就是接受到不到参数,真的是一毛同样的代码打成的包,开始我解决的思路在如下几个地方:spring

mave在linux下打包和windows下打包有差别?找了好久发现没有这个问题。windows

spring mvc的源码也翻了一下,发现问题是在Request的body中有byte数组,字符串的参数以字节的形式放在其中,可是ParameterMap中就是一个参数都没有,而windows下打包运行Parameter中就有参数,虽然发现了这个异样,可是没能定位问题,觉得是tomcat有问题。数组

spring boot的tomcat接受参数有问题,在windows下和linux下不同?网上查了一下内置的tomcat彷佛没什么bug。tomcat

真的是要抓狂了,搞了好几天都没有解决这个问题,害的我写的一键部署的bash脚本都无法用了,每次都是在windows上打包,而后用ftp发到linux上部署,太痛苦了。bash

mvc

测试

orm

最后准备放弃的放弃的时候,忽然随便点点目录,在某个犄角旮旯还有一个文件夹,里面有4个Filter(接手别人的项目),我真是日了狗了,立马把这4个Filter删掉,而后从新在linux下打包部署,测试一下果真收到了参数(POST,form)。

令我疑惑的是为啥一样是一份代码,windows上能够接受到参数,而linux接受不到参数?我没有深究,已经受伤了。。。

另外,要吐槽一下这个代码,虽然被我伤了n多的AOP和Filter,没想到仍是有一个遗留的Filter。就我我的而言,业务能够复杂,可是项目结构不要负载,不要弄各类AOP和Filter,除非不得已。除了问题真的能够搞死人。不要随便秀操做,谢谢。

P. S.

HttpServletRequest中的流只能读一次,再读的话就会报错,好像之后特殊的处理能够读两次

相关文章
相关标签/搜索