其实说上来也不是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 ----map按key排序

    实现map遍历有序 1. key有序 思路:对key排序,再遍历key输出value 代码如下:既可以从小到大排序,也可以从大到小排序 package main import ( "fmt& ...

  2. 一个“蝇量级” C 语言协程库

    协程(coroutine)顾名思义就是“协作的例程”(co-operative routines).跟具有操作系统概念的线程不一样,协程是在用户空间利用程序语言的语法语义就能实现逻辑上类似多任务的编程 ...

  3. 从语句 char* p="test" 说起

    我相信,使用C/C++多年的人对下面这个字符串赋值语句都不会陌生吧.                 char* p = "test";   同时,我也相信,各位在使用这种语句后吃 ...

  4. dpkg卸载deb包

    一.背景: 一个脚本安装mysql,结果提示缺少依赖库,安装失败. 二.查询: 此时查询deb文件已经安装的情况,得到这个结果: root@debian:~# dpkg -l |grep mysql- ...

  5. matlab入门笔记(六):编程基础之M文件

    摘自<matlab从入门到精通>胡晓东 在Matlab中,用户可以在命令行中直接输入命令,从而以一种交互式的方式来编写程序.这种方式适用于命令行比较简单,输入比较方便,同时处理的问题较少的 ...

  6. Android开发之AsyncTask的使用

    Android API 3时引进了AsyncTask,也叫异步任务.使用它可以很方便的更新主线程中的UI,使用它比Handler.Thread更简单.由于AsyncTask是抽象类,要使用它首先要创建 ...

  7. MySQL 忘记root密码的两种处理方法

    [背景] 由于各个原因,我遇到过不只一次我服务的客户忘记了MySQL的root密码:如果是普通用户还好,我们可以用root用户去改它的密码,要命 的是把root给丢了! 对于MySQL来说如果你忘记了 ...

  8. 简单理解MapView 以及 设置 MKAnnotationView

    MKMapView  相当于一个容器 .可以展示  MKAnnotationView.. 要使用它需要设置 数据源代理 _mapView.delegate = self; 它的数据源对象就是 符合   ...

  9. [转载]关于generate用法的总结【Verilog】

    转载自http://www.cnblogs.com/nanoty/archive/2012/11/13/2768933.html Abtract generate语句允许细化时间(Elaboratio ...

  10. Net AOP(五) 各种IoC框架下实现AOP

    public interface IUserProcessor { void RegUser(User user); } public class UserProcessor : IUserProce ...