JavaWeb 修炼之路(六)请求和响应中的编码
2017-06-09 09:12
183 查看
编码
常见字符编码: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编码:
表单的类型:Content-Type:application/x-www-form-urlencoded,就是把中文转换成%后面跟随两位的十六进制
为什么要用 ?在客户端和服务器之间传递中文时,需要把它转换成网络适合的方式。
它不是字符编码;
它是用来在客户端和服务器之间传递参数的一种方式;
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编解码](https://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文件所在目录
9191
相关文章推荐
- 关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题
- 关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题
- javaweb(二):JSP响应数据和浏览器解析数据的编码问题
- Web请求响应编码问题详解
- IIS7.5中对所有请求响应的JSON数据进行GZIP编码
- 各种编码问题产生原因以及解决办法---------响应编码,请求编码,URL编码
- JavaWeb中请求编码的一般处理
- JavaWeb中请求与响应的乱码问题
- JavaWeb请求与响应(一)
- JSP页面,响应和请求编码全解
- Java - 如何设置请求的编码以及响应内容的类型?
- Java EE 中的请求和响应编码问题 - 相关API汇总
- JavaWeb请求-响应学习笔记
- JavaWeb之Servlet:请求 与 响应
- IIS7.5中对所有请求响应的JSON数据进行GZIP编码
- javaweb请求与响应验证码案例点击"看不清,换一张"切换图片的新思路
- servlet处理请求和响应编码格式
- 通过过滤器解决post方式请求参数编码问题和响应编码问题
- HttpServletResponse响应头与HttpServletRequest请求头及编码问题
- JavaWeb 响应请求