解决客户端浏览器和服务器交互的编码问题详解

一:针对于练习仿mvc的jsp+servlet+jsp的模式编程的一些编码问题?

1:浏览器使用编码UTF-8+post请求服务器时,在服务器的servlet被访问类中,需要服务器内置对象request配置request.setCharacterEncoding("UTF-8"),如果是其他的编码格式如gbk+post那么在服务器中就配置request.setCharacterEncoding("GBK"),意思是告诉服务器使用gbk编码进行解码

2:浏览器使用编码UTF-8+get请求服务器时,如果像设置post请求,也会是乱码,因为服务器默认使用,"ISO-8859-1"编码,那么我们是这样解决的,拿到原始数据的二进制数据,在进行

UTF-8重新编码,如具体操作,String name = request.getParameter("name"); byte[] b = name.getBytes("ISO-8859-1");String name = new String(b,"UTF-8");这样就可以得到浏览器数据需要的utf-8格式数据,如果是gbk+get 也是一样的方式进行操作.

3:服务器响应浏览器,数据不乱码,服务器的response对象需进行2个动作,先告诉服务器使用UTF-8进行编码response.setCharacterEncoding("UTF-8"),然后在告诉浏览器需要用UTF-8来解析,response.setHeader("content-type","text/html,charset=UTF-8");这样就服务器和浏览器都使用UTF-8编码

4:服务器响应客户端的2个动作简化设置,response.setContentType("text/html,charset=UTF-8");

5:一般的编程中我会进行2个设置:request.setCharacterEncoding("UTF-8"),,response.setContentType("text/html,charset=UTF-8").只是针对post


二:针对于web层mvc框架的开发解决编码的问题,这里说的是全局的配置

1:如果是get请求产生中文的乱码那么我们可以在服务器的servers中server.xml配置编码具体的配置如下

首先找到我们的文件位置servers/springmvc at localhost-config/server.xml

配置前:<Connector  connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>中添加URIEncoding="UTF-8",那么就可以解决get请求编码

配置后: <Connector URIEncoding="UTF-8"  connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

2:如果是post的编码,需要在web.xml中配置全局编码过滤器,过滤所有的post请求的编码问题具体配置如下

<filter>

<filter-name>characterEncoding</filter-name>

<filter-class>ore.springframewor.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>

3:一般在开发中我会将以上个2步骤先完成.







  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值