JavaWeb 修炼之路(六)请求和响应中的编码
来源:互联网 发布:查重率软件 编辑:程序博客网 时间:2024/06/02 02:33
编码
常见字符编码:iso-8859-1(不支持中文)、gbk(系统默认编码,中国的国际码)、utf-8(万国码,支持全世界编码)
下面这张图是服务端向客户端发送数据的编解码过程:
这个是客户端请求后,在服务端获取参数的解码过程:
GET请求编码设置:需要在Tomcat的/conf/server.xml中添加一句话(最好不要用!)
尽量使用一下方法: String name = request.getParameter("name");
byte[] bytes = name.getBytes("ISO-8859-1");
name = new String(bytes,"utf-8");
- 响应编码:
- 当时用
response.getWriter()
来向客户端发送字符数据时,如果在之前没有设置编码,默认使用iso。因为iso不支持中文,所以一定会出现乱码; - 当使用
response.getWriter()
之前可以使用response.setCharacterEncoding()
来设置字符流的编码为gbk或utf-8 - 在使用
response.getWriter()
之前可以用response.setHeader("Content-Type","text/html;charset=utf-8")
来设置响应头,通知浏览器这边使用的是 response.setHeader("Content-Type","text/html;charset=utf-8")
的快捷方法是:setContentType("text/html;charset=utf-8")
- 客户端发送给服务器的请求参数是什么编码:客户端首先打开一个页面,然后在页面中提交表单或者点击超链接!在请求这个页面时,服务器响应的编码是什么,客户端发送请求时的编码就是什么;
- 服务器端默认使用什么编码来解码参数:服务器默认使用iso-8859-1来解码!所以一定会出现乱码!因为iso不支持中文!
- GET请求编码处理:
String username = new String(request.getParameter("iso-8859-1"),"utf-8");
- 在
server.xml
中配置URIEncodeing=utf-8
- POST请求编码处理:
String username = new String(request.getParameter("iso-8859-1"),"utf-8");
- 在获取参数之前调用
request.setCharacterEncoding("utf-8")
- 它不是字符编码;
- 它是用来在客户端和服务器之间传递参数的一种方式;
- URL编码需要先指定一种字符编码,把字符串解码后得到字节数组,然后把小于0的字节+256,再转换成16进制,前面加个“%”;
- POST请求默认使用URL编码!Tomcat会自动使用URL解码!
- URL编码:
String username = URLEncoder.encode(username,"utf-8")
- URL解码:
String username = URLDecoder.decode(username,"utf-8")
- ![URL编解码](http://img.blog.csdn.net/20170612092234970?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM4ODI5NDMx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)最后需要把链接中的中文参数,使用URL编码!
- web.xml中<url-pattern>路径
- 要么以“*”开头,要么以“/”开头
- 转发和包含路径
- (常用)以“/”开头:相对当前项目路径;
- 不以“/”开头:相对当前Servlet路径;
- 重定向路径(客户端路径)
- 以“/”开头,相对当前主机,所以需要自己手动添加项目;
- 页面中超链接和表单路径
- 与重定向相同,都是客户端路径,需要添加项目名!
- ServletContext获取资源路径
- 相对当前项目目录,即当然index.jsp所在目录;
- ClassLoader获取资源路径
- 相对classes目录
- Class获取资源路径
- 以“/”开头相对classes目录
- 不以“/”开头相对当前.class文件所在目录
阅读全文
0 0
- JavaWeb 修炼之路(六)请求和响应中的编码
- JavaWeb 修炼之路(五)服务器中的请求和响应
- JavaWeb——响应编码与请求编码
- java中文乱码解决之道(六)-----javaWeb中的编码解码
- java中文乱码解决之道(六)-----javaWeb中的编码解码
- java中文乱码解决之道(六)-----javaWeb中的编码解码
- java中文乱码解决之道(六)-----javaWeb中的编码解码
- 请求和响应编码处理
- JavaWeb---Servlet的请求和响应
- JavaWeb 响应请求
- 掌握Ajax 之 Ajax 中的高级请求和响应
- ajax学习系列之三: 中的高级请求和响应
- Http响应和请求的编码问题
- javaweb之请求转发和请求包含
- Servlet之请求和响应
- Servlet之请求和响应
- Java EE 中的请求和响应编码问题 - 相关API汇总
- javaweb开发篇——HTTP协议请求和响应详解(上)
- win7安装和使用Django的出现的问题
- SpringBoot Test集成测试
- MD04读取的一些计算表
- 线程
- Hadoop入门全集(零)
- JavaWeb 修炼之路(六)请求和响应中的编码
- Android Device Monitor使用
- 合并、联合、融合和聚合之间的区别
- 嵌入式C语言编译器:GCC
- js自执行函数的几种不同写法的比较
- Springmvc构造RESTful详细讲解
- Mac升级nasm
- An abandoned sentiment from past
- 关于百度地图提示,key验证出错 230