SSM框架本地测试没有问题,线上报错问题解决方案
来源:互联网 发布:vb取整函数函数 编辑:程序博客网 时间:2024/06/08 05:21
前两天在使用SMM框架做接口时,在本地使用Postman测试完全没有问题,于是就把工程打包到了服务器上,结果在调用接口时发现想要的数据一直没有返回:经过检查,我发现最大的问题有可能是因为传入的参数中含有中文的缘故,经过修改验证后成功返回数据;
我们在使用中不可避免的要使用中文字符传递参数,于是查阅资料发现,这是因为服务器乱码问题,修改tomcat下的conf/server.xml文件,找到Connector标签,添加useBodyEncodingForURI=”true”,如下代码
<Connector port="8080" useBodyEncodingForURI="true" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
对于 URL 提交的数据和表单中 GET 方式提交的数据,在接收数据的 JSP 中设置 request.setCharacterEncoding 参数是不行的,因为在Tomcat5.0 中,默认情况下使用ISO-8859-1 对 URL 提交的数据和表单中 GET 方式提交的数据进行重新编码(解码),而不使用该参数对 URL 提交的数据和表单中 GET 方式提交的数据进行重新编码(解码)。
要解决该问题,应该在 Tomcat 的配置文件的 Connector 标签中设置useBodyEncodingForURI 或者 URIEncoding 属性,其中 useBodyEncodingForURI 参数表示是否用request.setCharacterEncoding 参数对 URL 提交的数据和表单中 GET 方式提交的数据进行重新编码,在默认情况下,该参数为 false (Tomcat4.0 中该参数默认为true );
URIEncoding 参数指定对所有 GET 方式请求(包括 URL 提交的数据和表单中 GET 方式提交的数据)进行统一的重新编码(解码)的编码。URIEncoding 和 useBodyEncodingForURI 区别是,URIEncoding 是对所有 GET 方式的请求的数据进行统一的重新编码(解码),而 useBodyEncodingForURI 则是根据响应该请求的页面的request.setCharacterEncoding 参数对数据进行的重新编码(解码),不同的页面可以有不同的重新编码(解码)的编码。
所以对于 URL 提交的数据和表单中 GET 方式提交的数据,可以修改 URIEncoding 参数为浏览器编码或者修改 useBodyEncodingForURI 为true ,并且在获得数据的 JSP 页面中 request.setCharacterEncoding参数设置成浏览器编码。
- SSM框架本地测试没有问题,线上报错问题解决方案
- win10配置本地服务器(报错404问题解决方案)
- ssm框架下JUnit测试报错,跪求办法
- SSM框架整合报错
- BASE64Decoder报错问题解决方案
- ssm框架定时任务报错
- Database类编译报错问题解决方案
- jstl启动报错的问题解决方案
- ssm框架mysql数据库报错,jdbc.properties数据库配置问题
- ssm框架整合测试
- 学习ssm框架——Mybatis版本问题解决方案(一)
- MySQL没有row_number()问题解决方案
- 配置ssm框架问题
- SSM框架问题笔记
- Maven ssm框架配置报错HTTP Status 500
- SSM框架整合过程中,Mybatis报错
- SSM框架下的Maven项目引用报错
- 发布或重启线上服务时抖动问题解决方案
- 开机自启动(整合)
- 化简方程
- 第十天2017/04/25(2、企业财富库:)
- Yii2.0 场景的简单使用
- 51nod 2级算法题-1119
- SSM框架本地测试没有问题,线上报错问题解决方案
- HQL(Hive query language)常用语句
- PostgreSQL递归查询
- Java实现LSTM和GRU做分类(以IRIS数据集为例)
- 说说Java中finally、final、finalize。
- WCF之调用模式
- response.write()方法将指定的字符创输出到html页面时遇到的问题
- 霍夫直线和圆检测
- LINQ的连接扩展(左连、右连、全连等)