Servlet源文件到Class的过程

Servlet源文件到Class的过程

成都创新互联公司是一家专业提供武威企业网站建设,专注与网站设计、网站建设、H5技术、小程序制作等业务。10年已为武威众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

Servlet源文件是以“.java”结尾的文本文件。本节将讨论Servlet的编译过程并跟踪其中的中文变化。

用“javac”编译Servlet源文件。javac可以带“-encoding < Compile-charset>”参数,意思是“用<  Compile-charset >中指定的编码来解释Serlvet源文件”。

源文件在编译时,用< Compile-charset>来解释所有字符,包括中文字符和ASCII字符。然后把字符常量转变成Unicode字符,最后,把Unicode转变成UTF。

在Servlet中,还有一个地方设置输出流的CharSet。通常在输出结果前,调用HttpServletResponse的 setContentType方法来达到与在JSP中设置< Jsp-charset>一样的效果,称之为< Servlet-charset>。

注意,文中一共提到了三个变量:< Jsp-charset>、< Compile-charset>和< Servlet-charset>。其中,JSP 文件只与< Jsp-charset>有关,而< Compile-charset>和< Servlet-charset>只与Servlet有关。

 
 
 
  1. import javax.servlet.*;  
  2. import javax.servlet.http.*;  
  3. class testServlet extends HttpServlet  
  4. {  
  5. public void doGet(HttpServletRequest req,HttpServletResponse resp)  
  6. throws ServletException,java.io.IOException  
  7. {  
  8. resp.setContentType("text/html; charset=GB2312");  
  9. java.io.PrintWriter out=resp.getWriter();  
  10. out.println("");  
  11. out.println("#中文#");  
  12. out.println("");  
  13. }  

该文件也是用UltraEdit for Windows编写的,其中的“中文”两个字保存为“D6 D0 CE C4”(GB2312编码)。

开始编译。下表是< Compile-charset>不同时,CLASS文件中“中文”两字的十六进制码。在编译过程中,< Servlet- charset>不起任何作用。< Servlet-charset>只对CLASS文件的输出产生影响,实际上是< Servlet-charset>和< Compile-charset>一起,达到与JSP文件中的< Jsp-charset>相同的效果,因为< Jsp-charset>对编译和 CLASS文件的输出都会产生影响。

“中文”从Servlet源文件到Class的转变过程

Compile-charset Servlet源文件中 Class文件中 等效的Unicode码
GB2312 D6 D0 CE C4
(GB2312) E4 B8 AD E6 96 87 (UTF) \u4E2D\u6587 (在Unicode中=“中文”)
ISO-8859-1 D6 D0 CE C4
(GB2312) C3 96 C3 90 C3 8E C3 84 (UTF) \u00D6 \u00D0 \u00CE \u00C4 (在D6 D0 CE C4前面各加了一个00)
无(默认) D6 D0 CE C4 (GB2312) 同ISO-8859-1 同ISO-8859-1

普通Java程序的编译过程与Servlet完全一样。

CLASS文件中的中文表示法是不是昭然若揭了?OK,接下来看看CLASS又是怎样输出中文的呢?

【编辑推荐】

  1. Servlet Context的范围
  2. 浅析Servlet 3.0 API的概念
  3. Servlet注释与部署描述符
  4. Java Servlet和Servlet 3.0的新特性
  5. Servlet和JSP潜在的隐患

分享标题:Servlet源文件到Class的过程
URL网址:http://www.shufengxianlan.com/qtweb/news27/74327.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联