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

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

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

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

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

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

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

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

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

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

P. S.

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

SpringMVC没有接受到参数的坑的更多相关文章

  1. Springmvc之接受请求参数二

    Springmvc之接受请求参数 准备工作 新建一个表单提交 请求地址: http://localhost:8080/ProjectName/user/login.do <form action ...

  2. springmvc 接受json参数的坑

    构造json数据时候js对象中的值 一定要用 "" 双引号,不能用单引号,因为转成字符串后,到后台进行解析时,因为java认为单引号是单字符 ,转不成对应的字符串,所以会报错! 如 ...

  3. SpringMVC接受JSON参数详解及常见错误总结我改

    SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...

  4. SpringMVC接受JSON参数详解及常见错误总结

    SpringMVC接受JSON参数详解及常见错误总结 SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一 ...

  5. SpringMVC接受JSON参数详解

    转:https://blog.csdn.net/LostSh/article/details/68923874 SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session ...

  6. SpringMvc接受请求参数的几种情况演示

    说明: 通常get请求获取的参数是在url后面,而post请求获取的是请求体当中的参数.因此两者在请求方式上会有所不同. 1.直接将接受的参数写在controller对应方法的形参当中(适用于get提 ...

  7. SpringMVC中post请求参数注解@requestBody使用问题

    一.httpClient发送Post 原文https://www.cnblogs.com/Vdiao/p/5339487.html public static String httpPostWithJ ...

  8. springmvc Controller接收前端参数的几种方式总结

    (1) 普通方式-请求参数名和Controller方法的参数一致 @Controller @RequestMapping("/param") public class TestPa ...

  9. 【SpringMVC】获取请求参数

    通过ServletAPI获取 test.html <a th:href="@{/testServletAPI(username='admin',password=123456)}&qu ...

随机推荐

  1. golang学习笔记 --- goroutine

    package main import ( "fmt" "io" "io/ioutil" "net/http" &quo ...

  2. SQL Server 阻止了对组件 'Agent XPs' 的 过程 'dbo.sp_set_sqlagent_properties' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。

    Sqlserver 2008 在配置分发向导的时候报了如下错误: 使用 Agent XPs 选项可以启用此服务器上的 SQL Server 代理扩展存储过程.如果禁用此选项,则 SQL Server ...

  3. Debian静态IP地址和DNS

    Debian静态IP地址和DNS 一.配置文件及路径 /etc/network/interfaces 二.IP地址1. DHCP的IP配置如下 # The primary network interf ...

  4. 【转】Java利用反射机制访问私有化构造器

    Java利用反射机制访问私有化构造器 博客分类: java   我们都知道,当一个类的构造方法被设为私有的时候(private),在其他类中是无法用new来实例化一个对象的. 但是有一种方法可以把带有 ...

  5. (面试题)synchronized 和 java.util.concurrent.locks.Lock 的异同

    主要相同点: Lock 能完成 synchronized 所实现的所有功能: 主要不同点: Lock 有比 synchronized 更精确的线程语义和更好的性能. synchronized 会自动释 ...

  6. CentOS 7 重装mysql编译过程报错解决方法

    错误记录: [ 82%] Building C object libmysql/CMakeFiles/clientlib.dir/__/sql-common/client.c.o/usr/local/ ...

  7. 用sendcloud来发邮件

    平时发验证码邮件都是用免费域名邮箱,但是有时一频繁发多了就发不了了,听说用sendcloud可以避免,还能避免阿里云邮件发QQ邮箱进垃圾箱中,去注册了下,免费账户号每个月才50封,自己玩玩可以吧.. ...

  8. [nginx]location语法

    location语法 location语法格式 location [=|~|~*|^~] uri { .... } location [=|~|~*|^~] uri {....} 指令 匹配标识 匹配 ...

  9. 查看Android内存的8中方法

    方法一: 通过手机上Running services的Activity查看,可以通过Setting->Applications->Running services进. 关于Running ...

  10. android 中毛玻璃效果的实现

    最近在做一款叫叽叽的App(男银懂的),其中有一个功能需要对图片处理实现毛玻璃的特效 进过一番预研,找到了3中实现方案,其中各有优缺点: 1.如果系统的api在16以上,可以使用系统提供的方法直接处理 ...