网页提交中文到WEB容器的经历了些什么过程....

先准备一个网页

<html><meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>测试编码</title>
<body>
<form id="form1" name="form1" method="post" action="http://localhost:8080/TestServer/Receive">
  <label>
  <input type="text" name="name" />
  </label>
  <label>
  <input type="submit" name="SBbt" value="提交" />
  </label>
</form>
</body></html>

输入中文字,名字   “何锦彬”  进行提交

提交到servelt , 用servelt输出收到的内容

protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        InputStream input = request.getInputStream();
        BufferedInputStream inputBf = new BufferedInputStream(input);
        byte[] buf = new byte[1024];
        int length = inputBf.read(buf);
        byte[] receviveData = new byte[length];
        System.arraycopy(buf, 0, receviveData, 0, length);

        System.out.println("收到:" + new String(receviveData));

//        System.out.println(request.getParameter("name"));
    }

输出如下:

收到:name=%BA%CE%BD%F5%B1%F2&SBbt=%CC%E1%BD%BB

尝试把"何锦彬" 按GBK转成 16进制输出

ffffffba ffffffce ffffffbd fffffff5 ffffffb1 fffffff2 

忽略前面的‘f‘, 会发现,servelt接受到的内容就是: 中文经过GBK编码转码后, 用16进制标识, 并在前面加上"%"以作区分

继续修改修改网页的meta信息,把"GBK" 换成"utf-8"

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

输出如下:

收到:name=%E4%BD%95%E9%94%A6%E5%BD%AC&SBbt=%E6%8F%90%E4%BA%A4

明显 name 后面是9个字符,是用UTF-8转码后16进制表示了字节后再加了‘%‘ 组成

整个过程如下

1, 把中文根据mate 里的字符编码转换成字节

2, 把字节加上百分号并用16进制表示

(1,2部相当于java.net.URLEncoder.encode(content,"utf-8"))

3. 进行传输

4, WEB容器进行解码,相当于调用

TOMCAT中相关代码

org.apache.tomcat.lite.http.HttpRequest    672行

 try {
                parameters.add(urlDecode(tmpName, enc),
                        urlDecode(tmpValue, enc));
            } catch (IOException e) {
                // ignored
            }
时间: 2024-10-17 22:40:20

网页提交中文到WEB容器的经历了些什么过程....的相关文章

JavaWeb02_servlet和web容器

JavaWeb02_servlet和web容器 OSI参考模型 应用层.表示层.会话层(TCP/IP:应用层--即程序,http层)传输层(TCP/IP:传输层--TCP/UDP协议)网络层(TCP/IP:网络层--IP,封装)数据链路层.物理层(TCP/IP:物理层--最底层,网络接口,以太网,ATM,令牌环等) 客户端 主动 创建一个socket();连接到指定计算机端口 connect();写入信息到socket() send();socket()关闭 服务器 被动 创建一个socket(

web容器 web服务器 应用服务器

1.Web Server,Web container和Application Server区别. Web Server,Web服务器,同上面所说,Web服务器是指能够为发出请求的浏览器提供文档的程序.服务器是一种被动程序,只有浏览器发出请求的时候才会响应.应用层使用的是HTTP协议.目前最主流的三个Web服务器是Apache Nginx IIS. Web容器是一种服务器程序,在服务器端口就有一个提供相应服务的程序.所以现在知道为什么Tomcat有默认的端口——8080.一个服务器可以有多个容器.

web服务器、应用服务器、web容器、反向代理服务器区别与联系

我们知道,不同肤色的人外貌差别很大,而双胞胎的辨识很难.有意思的是Web服务器/Web容器/Web应用程序服务器/反向代理有点像四胞胎,在网络上经常一起出现.本文将带读者对这四个相似概念如何区分. 1. 一文看懂web服务器.应用服务器.web容器.反向代理服务器区别与联系 1.1. Web服务器概念与基本原理 1.1.1. Web服务器的历史 1.1.2. Web服务器工作原理 1.2. Web应用程序容器概念与基本原理 1.2.1. Web应用程序容器的由来 1.2.2. Web应用程序容器

http协议、servlet、web容器

http协议是一种数据传输协议,主要用于客户端与服务器之间数据的传递.工作原理是:客户端通过http协议发出request(由请求头.请求行.空格.消息体组成),当请求传到服务器时有两种情况:第一,当生成的网页是静态网页时,服务器直接通过http协议返回给客户端response(由响应头.响应行.空格.消息体组成),就这样,整个流程结束.第二,当服务器接收到需要生成动态网页的 命令时,服务器自己不能生成,需要借助web容器生成,servlet就是依附于web容器的一项技术,它避开了CGI技术的不

Python开发实战教程(8)-向网页提交获取数据

来这里找志同道合的小伙伴!↑↑↑ Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习Python这门语言. 本次课程是在掌握python基础之上进行的.基础没有学习的话建议先查看文章学习基础目录:Python开发实战系列教程-链接汇总,持续更新.进行学习. 最近几天感冒中,四肢乏力以及最近比较忙导致,更新较慢.还请见谅. 概述 很多时候我们需要给网

有关服务器,web 服务器,WEB容器的一点总结

所谓的服务器,广义上讲有很多的概念,硬件角度上说就是一台高性能的Computer.我们通常指的服务 器其实应该是装有能够处理具体请求事务的服务器软件的Computer.比如最常见的www服务器.mail服务 器.计费服务器.ftp服务器等等.很多时候人们常把诸如Tomcat.IIS.Weblogic 也称之为web服务器, 这对初学者很容易造成混淆,其实这些只是用于开发.集成.部署和管理Web应用.网络应用和数据库应 用的应用服务器软件. 那么web容器有该如何理解呢?通俗的讲web容器就是能够

1、Web容器的理解&amp;Tomcat的安装与配置

Web容器的理解 <Java Web开发实战经典——基础篇>一书中对Web容器这一概念阐述得很好,借用其观点对Web容器加以理解: 想要运行一个Java Web的程序,则必须有相应的Web容器支持,因为所有的动态页面的程序代码都要在Web容器中执行,并将最后生成的结果交付给用户使用. 服务器端使用Web服务插件接受客户端的http请求,并对用户请求加以判断,判断其是动态请求还是静态请求.如果是静态请求,则直接通过Web服务器从文件系统中取得相应的文件,并通过http协议返回到客户端浏览器:如果

Node.js 没有Web容器

Node.js 特点 1.单线程 在Java.PHP或者.net等服务器端语言中,会为每一个客户端连接创建一个新的线程.而每个线程需要耗费大约2MB内存.也就是说,理论上,一个8GB内存的服务器可以同时连接的最大用户数为4000个左右.要让Web应用程序支持更多的用户,就需要增加服务器的数量,而Web应用程序的硬件成本当然就上升了. Node.js不为每个客户连接创建一个新的线程,而仅仅使用一个线程.当有用户连接了,就触发一个内部事件,通过非阻塞I/O.事件驱动机制,让Node.js程序宏观上也

Tomcat,Jboss,Glassfish等web容器比较选型

概述 Web容器是一种服务调用的规范,J2EE运用了大量的容器和组件技术来构建分层的企业应用.在J2EE规范中,相应的有WEB Container和EJB Container等. Web容器给处于其中的应用程序组件(JSP,SERVLET)提供环境,是的JSP,SERVLET直接与容器中的环境变量打交道,而不必关注其他系统问题. Web容器更多的是与HTTP的请求打交道,而EJB容器不是,它更多的是跟数据库其他服务打交道. Web服务器 Web服务器可以处理HTTP协议,当Web服务器接收到一个