服务器端HttpServletResponse对象编码发送信息及浏览器端解码显示信息原理剖析
2015-12-01 17:24
591 查看
服务器端HttpServletResponse对象对信息编码向浏览器端发送数据及浏览器端解码显示信息原理剖析
第一点:首先要明白,服务器端是把要发送的信息进行编码为对应为字节流,发送给浏览器。浏览器再对接收到的字节流信息进行解码显示。一:原理过程分析
<1>服务器端:首先服务器端要把信息转换成成字节流.(1.1)若你指定编码格式,服务器端使用你指定的编码格式进行编码转换成字节流。
(1.2)若你没有指定编码格式,服务器端会使用它的默认编码格式 ISO-8859-1 转换成字节流。
接着服务器端把转换好的字节流发送给浏览器。
<2>浏览器端: 再接着就是浏览器的工作了,浏览器拿到这些字节流,要进行解码显示。
浏览器首先会从(2.1)响应头,或(2.2)响应体中进行查找,看是否可以找到指定的编码进行解码显示。
若找到,则按照服务器端发过来的响应信息中指定的编码进行解码显示。
若找不到,则按照浏览器端,(2.3)自己默认的编码格式进行解码显示。
二: 解决方法
<1>服务器端的编码:服务器端如何手动指定编码格式两种方式设置服务器编码字符数据的编码方式
1 response.setContentType("text/html;charset=utf-8");(推荐使用!)
2 response.setCharacterEncoding("utf-8");
<2> 浏览器端的解码: 发送之前你需要设置响应体的mime类型 , 如何设置 ?
(即浏览器要找的解码格式。)两种设置方法。
1 设置在响应头中 response.setContentType("text/html;charset=utf-8");(推荐使用!)
2 在响应体中设置 //String s =
// "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"> 中文信息 ";
三:推荐方法
response.setContentType("text/html;charset=utf-8");//设置mime类型,同时设置数据的编码方式,对服务器和客户端都有效!
响应体数据要使用流的形式进行发送
两种流的形式:
1 字节流 OutputStream out = response.getOutputStream();(任意类型。)
2 字符流 PrintWriter writer = response.getWriter();(一般的字符)
四:代码简单演示
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServeAndClientEecodeAndDncodeServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");// 设置mime类型,同时设置数据的编码方式,对服务器和客户端都有效! // 响应要使用流的形式发送 // 1 使用字节流形式发送 // response.getOutputStream().write("使用字节流的形式发送!".getBytes("utf-8"));//字节流,字符串转换为字节流,是要指定编码的。 // 2 使用字符流形式发送 response.getWriter().write("使用字符流的形式发送!"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
相关文章推荐
- Swift中的HTTP请求
- 网络层—IP地址的三种分类方式
- HTTP请求和响应格式详细解析
- AFNetWork https 适配
- 网络层—网际协议IP
- HttpClient
- JavaScript中IE与DOM事件的区别http://www.cnblogs.com/stpangpang/archive/2008/06/03/1212607.html
- [计算机网络学习]开始或结束标志在数据中出现 的处理
- IDHTTP的基本用法
- Apache HttpClient调用Spring3 MVC Restful Web API演示
- 计算机网络---基础题目汇总八
- HTTP协议详解
- NSUrlSession 网络会话介绍
- 基于Node.js http-proxy库的本地HTTP代理服务器脚本
- 使用网络用户命令行工具的/passwordreq:yes
- idhttp的socket error # 10054 错误的处理办法
- APP开发人员的福利: 网络封包分析工具Charles
- http://www.cyqdata.com/
- [Python] HTTP Hacks
- 根据http协议下载文件保存到相应的文件下