解决使用ssm框架javaweb项目的乱码问题
来源:互联网 发布:免费申请域名建立网站 编辑:程序博客网 时间:2024/06/06 02:07
- 背景:使用ssm框架做的javaweb项目,tomcat7.0
- 乱码问题分为两种情况
- get请求
- post请求
- 乱码产生的原因
乱码是因为编码和解码的格式不一致
以下分别从两种请求分析编码和解码问题
get请求
请求参数直接通过浏览器地址栏传递到服务器中
//使用jsp页面,编码是UTF-8 localhost:8081/springmvc-day03-crm/list?username=张三丰
分析:
编码方式:页面是用的是UTF-8对参数进行编码传递到服务器中
解码方式:如果没有修改tomcat的编码格式,tomcat对于get请求使用的是默认格式ISO-8859-1进行的解码.
因此由于编码和解码不一致,就导致后台接受的参数出现了乱码情况
解决方式2种
- 方式1 使用代码
先用tomcat默认的格式解码,然后再编码
username = new String(username.getBytes("ISO-8859-1","UTF-8"))
- 方式2 修改tomcat的server.xml配置文件(推荐使用)
在配置文件添加属性 URIEncoding=”UTF-8”
post请求
请求参数是在请求体重传递到服务器中
- 解决方案
因为使用了ssm框架,直接在web.xml配置一个过滤器即可
注意,这个过滤器要配在过滤器的第一位
<filter> <filter-name>characterEncoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
对于为什么这个过滤器要在第一位,这跟tomcat对post的解码机制有关.
当第一次调用getParameter方法取参数的的时候,tomcat根据设置的编码进行解码,解码后的参数就放在一个数组中,以后就从这个数组从取值,不会再进行解码.
如果其他过滤器在这个编码过滤器之前调用了参数,那么这个过滤器的编码并没有起作用,参数仍然使用的ISO-8859-1进行解码,即使设置了编码格式,tomcat也不再进行解码了,这样还是造成了乱码
阅读全文
0 0
- 解决使用ssm框架javaweb项目的乱码问题
- 使用maven搭建ssm框架的javaweb项目
- 解决用Spring框架的javaWeb项目post请求方法乱码的问题
- 解决JavaWeb项目中文乱码问题
- javaweb中使用过滤器解决乱码问题
- 解决javaweb乱码问题
- SSM框架:解决后台传数据到前台中文乱码问题,使用@ResponseBody返回json 中文乱码
- javaweb 过滤器的应用解决乱码问题
- javaweb 解决请求相应的乱码问题
- 解决ssm项目表单数据提交到数据库乱码问题
- J2EE-JavaWeb项目的编码乱码问题
- 关于JavaWeb项目乱码的问题
- ssm框架中文乱码问题
- 解决BAE部署JavaWeb项目中文乱码问题
- ssm框架项目导入及解决tomcat部署问题
- 解决使用Volley框架出现的乱码问题
- 解决JavaWeb翻页乱码问题
- javaWeb解决中文乱码问题
- 用vb.net开发的简易(通用)上位机
- Android资源获取方式
- 51Nod-1582-n叉树
- RH134-第十七节-定时任务和延时任务
- flex 布局
- 解决使用ssm框架javaweb项目的乱码问题
- iOS 关于屏幕截图,获取webView高度,截取长图
- 软硬连接,find,locate命令
- MapReduce 开发手册
- scala abstract type及 properties相关知识
- C++学习笔记 基本数据类型
- HDFS常用命令
- Spring事务管理
- Codeforces 837E Vasya's Function:数论入门初步