windows环境
tomcat8
springboot项目,打成war包,放在tomcat下的webapps文件夹中,启动startup.bat
问题描述:
接口请求类型POST,使用requestBody接收json参数,发现json的value中如果带有中文参数,代码报required body missing错误。
本地idea启动项目,请求没有这种问题
处理过程:
既然idea没有问题,说明springboot自带的tomcat是好使的,自己下载的tomcat才会有这种问题。严重怀疑是tomcat编码问题导致,代码没有问题。
1、修改conf/server.xml中post参数接收大小为-1,maxPostSize="-1",没有解决
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" maxPostSize="-1" parseBodyMethods="POST"/>
2、修改conf/web.xml中post请求编码格式,没有解决(此处是解决中文乱码问题,但也尝试了一下)
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter>
<filter-name>failedRequestFilter</filter-name>
<filter-class>
org.apache.catalina.filters.FailedRequestFilter
</filter-class>
<async-supported>true</async-supported>
</filter>
3、修改bin/catalina.bat,在setlocal下添加set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8,问题得到了解决
setlocal
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8
rem Suppress Terminate batch job on CTRL+C
if not ""%1"" == ""run"" goto mainEntry
......
......
本文介绍了一种在Tomcat环境下部署SpringBoot项目时遇到的中文参数解析问题及解决方案。当使用WAR包部署并接收含有中文的POST请求时,会出现requiredbodymissing错误。通过配置catalina.bat文件中的JAVA_OPTS参数,设置-Dfile.encoding=UTF-8来解决此问题。
4122

被折叠的 条评论
为什么被折叠?



