基于jsp的网络应用开发时中文乱码的研究外文翻译资料

 2022-08-30 11:08

英语原文共 7 页,剩余内容已隐藏,支付完成后下载完整资料


基于jsp的网络应用开发时中文乱码的研究

摘要:

作为一种基于Java程序语言的跨平台网络应用技术,JSP在全球WEB开发领域占据了大量份额。中文乱码是一个我们在JSP动态网站开发编程中经常会遇到的一个问题。这篇文章分析了在JSP网络应用开发中乱码的原因,并且针对问题提供解决方法,具有实践性和简单操作性。

关键词:JSP;编码;乱码;网络应用

Ⅰ.引言

JSP目前是一种在开发动态网站中流行的开发程序,它强壮的跨平台动态网页设计能力得到了大量程序开发人员的青睐。尽管在动态网站开发过程中基于JSP技术,但Java核心处理字符还是基于UNICODE编码。简体中文使用GBK或者GB2312编码,所以目前当进行基于JSP或者Java应用开发时,中文乱码现象频频出现。正因为如此,本文的目的便是分析和研究基于JSP技术的网页应用开发过程可能会遇到的中文乱码问题。

Ⅱ.基于JSP乱码产生的原因分析

运行在Java应用程序服务器的JSP主要是提供动态网页给客户方面。JSP源文件首先通过网页容器逐字地转换成Java源文件,然后JSP编译器自动编译,产生临时的Servlet和class文件。当客户请求时,网页容器通过调动JVM虚拟机运行Class文件,JVM获得传递的形参或者从后台数据库中读取数据,程序输出到浏览器或者写入数据到后台数据库。这个过程在图1里展示。

图1 JSP网页服务器处理流程示意图

Java语言采用UNICODE编码,所以当Java程序运行时,有一个涉及UNICODE编码和相关操作系统和浏览器所支持编码的编码形式转换,这个交换过程有一系列的步骤,如果有一个步骤出现错误,随后就可能出现显示中文乱码。

这个含有字符编码转换的过程包含:在形式参数传递上的编码转换;在编译过程中JSP源文件的编码转换;在Servlet时输入输出的编码转换;在JSP数据库操作时的编码转换。任何一个需要字符编码转换的步骤都可能造成乱码。接下来我们将给出具体的分析。

Ⅲ.中文乱码解决方案

A.形式参数传递时的编码转换

当JVM运行Class文件时,可能需要获得包含来自浏览器传送的中文字符串输入。Java在网络传递时使用的编码是IS0-8859-1。如果JSP源文件没有只能编码格式,包含使用request.getParameter()方法的字符串的编码格式直接是ISO-8859-1,中文字符串的输出直接根据ISO-8859-1编码格式,这样我们在网页上看到的肯定就是乱码。我们可以通过以下方法尝试解决。

  1. 建立网络服务器接收参数的编码格式。在第一个语句request.getParameter()之前,添加下面一段代码,网络服务器接受参数的编码格式是GBK或者GB2312,代码如下。

lt;%request.setCharacterEncoding(“GBK”);%gt;

给出Tomcat必须使用字符集编码。这个语句要放在所有读取数据语句的前面,举个例子。

lt;%

request.setCharacterEncoding(“GBK”);

String username=request.getParameter(“username”);

String password=request.getParameter(“password”);

%gt;

用这种方式指定request.getParameter()处理字节流使用GBK或者GB2312编码。但是这种方法只适用于通过post方式传递中文参数传递的格式,对get方式的没有效果。

  1. 使编码转换到接收到的参数。在JSP源文件中使用request.getParameter()方法去读取请求目标的数据,编码方式为ISO-8859-1,在使用之前,先通过getBytes()方法执行编码转换,通过这种方法中文输入可能会被正确处理,代码如下。

String str=request.getParameter(“username”);

String name=new String(str.getBytes(“ISO-8859-1”),”GBK”);

这种方法指定输入字符流编码是GBK,输入从JVM 虚拟机对ISO-8859-1到GBK编码转换中取得,紧接着就又输出。通过这种方法中文输入可能正确展示在网页上。

  1. 尽管以上解决方法是直接可见的,但是程序必须在每次读取客户端数据之前或之后确立字符流编码,这个过程很容易就出错和遗漏。鉴于这些缺点,我们可以使用Tomcat筛选装置去建立所有客户端的数据。在WEB.xml文件里设立筛选器标识,在筛选器使用SetCharacterEncodingFiter类去处理字符集,同时确定编码成GBK时参数的值。添加下面几句代码到WEB.xml文件去。

lt;filtergt;

lt;filter-namegt;SetCharacterEncodinglt;/filter-namegt;

lt;filter-classgt;filters.SetCharacterEncodingFilterlt;/filterclassgt;

lt;init-paramgt;

lt;param-namegt;encodinglt;/param-namegt;

lt;param-valuegt;GBKlt;/param-valuegt;

lt;/init-paramgt;

lt;/filtergt;

lt;filter-mappinggt;

lt;filter-namegt;SetCharacterEncodinglt;/filter-namegt;

lt;url-patterngt;/*lt;/url-patterngt;

lt;/filter-mappinggt;

编译SetCharacterEncodingFilter文件成SetCharacterEncodingFilter.class类文件,然后把它放到WEB-INFclassesfilters这个目录下面。如果没有筛选器目录,那就选一个。在以上工作完成后,重启Tomcat。

如果格式通过获取方式传递中文参数,就可能会设定Tomcat安装目录下的server.xml文件去解决中文乱码。添加URIEncoding属性到lt;Connetorgt;,值是GBK,重启Tomcat才能是设立起效,有关代码如下。

lt;Connector port='8080' protocol='HTTP/1.1'

maxThreads='150' connectionTimeout='20000'

redirectPort='8443' URIEncoding='GBK'/gt;

B.编译过程中JSP源文件的编码转换

在JSP的标准语法中,如果不明确指定网页所使用的字符集,自动采用缺省值ISO-8859-1,ISO-8859-1不包含中文字符,当使用缺省字符集保存JSP文件时,网页的中文输出会乱码。解决方法有下面几个。

如果pageEncoding值存在,JSP字符编码方式取决于pageEncoding。在JSP文件的开头添加下面一个语句。

lt;%@page pageEncoding='GBK'%gt;

但是用这种方式有一个很严重的问题,pageEncoding选项不能被包含的子文件继承,子文件必须重新添加选项,而且这个选项在父文件和子文件之间有着严格的要求,这个子文件必须使用和父文件一致的字符集,同时在写入习惯上一样。举一个例子,index.jsp文件的主体部分包含这样一个语句:lt;%@include file='copyright.jsp'%gt;,当单独审视copyright.jsp文件页时,中文显示正常,但是当浏览index.jsp文件页时,这个copyright.jsp文件页部分的显示就死乱码的。为了解决这个问题,我们需要在WebRootWEB-INF文件夹下配置WEB.xml文件。

lt;jsp-configgt;

lt;jsp-property-groupgt;

lt;url-patterngt;*.jsplt;/url-patterngt;

lt;el-ignoredgt;truelt;/el-ignoredgt;

lt;page-encodinggt;GBKlt;/page-encodinggt;

lt;/jsp-property-groupgt;

lt;/jsp-configgt;

另外,即使每一个JSP文件的pageEncoding是不一致的,Tomcat也可以成功地输出网页内容。

当pageEncoding属性不存在时,可以通过contentType属性里的字符集决定,这个contentType就是生成语法规则。

lt;%@ page contentType='text/html; charset=GBK' %gt;

这样可以指定JSP页面的字符编码方式是GBK,因此便可以正确识别中文。

C.在Servlet中输入输出的编码转换

Servlet需要将HTML页面内容转换成浏览器可以接受的编码格式。根据目前的Servlet标准,ServletRequest和ServletResponse的编解码默认设置是ISO-8859-1。如果输入输出包含中文,结果就可能乱码。可以尝试下面一些方面解决。

当使用javac工具编译Servlet源程序时,需要用Encoding参数去指定编码格式是GBK还是GB2312。

设置Servlet的字符集编码是GBK或者GB2312可以采用下面一句代码,返回HttpServletResponse对象。

Response.setContentType (“text/html; charset=GBK”)

D. JSP数据库操作时的编码转换

看待这个问题,我们可以从两个方面分析。一方面在写入数据库时,是否会立即乱码。另一个方面当从数据库中读取数据时,是否会立即乱码。从第一个情况来看,写入,我们毫无疑问用GBK编码方法将它们传入数据库,在数据库里马上就乱码了,这样就说明数据库可能不支持GBK格式,或者虽然数据库支持,但是当前的记录没有以GBK编码格式保存。再看另外一种情况,在读取过程时产生编码转换,并且不使用GBK编码格式操作。解决方案如下。

就拿采用MySQL为例,首先,当写入数据到数据库之前先在MySQL里建立数据库,指定其编码格式是GBK,同时要确保编码格式和之前的数据一致。之前的数据只需要添加“? useUnicode=trueamp;characterEncoding=GBK”这样一个语句到数据库的URL里。其次,当从数据库里读取数据时,需要确保页面和数据库的编码格式一样,然后也是只需要在源文件里添加lt;%@page pageEncoding='GBK'%gt;这样一个语句。

Ⅳ.结论

为了解决基于网页应用的JSP中文乱码问题,在最后的分析必须澄清网页应用的全过程,从头到尾排除每一个可能产生字符编码转换的环节,保持在转换过程中字符编码的同一性。我们必须要分析乱码出现的原因,这样才能理解问题和有效地解决问题。

销售系统分析和基于JSP的在线美妆商店设计

摘要:

在线美妆商店的销售系统是基于B2C商业模式,为用户提供注册,登陆,查询和浏览商品,订购,留言,评论和其他个人服务的功能。消费者不仅能浏览网站上的化妆品和在线订购,还可以评论和选择个性化包裹。这个技术计划由JSP,Tomcat,SQL Server2000三种技术实现。JSP作开发语言,Tomcat作为网页服务器和JSP的引擎,SQL Server 2000作为后台数据库管理系统。

关键词:在线商店;销售系统;购物车;JSP

Ⅰ.引言

随着电子商务的发展,在线购物的趋势正在上升。对比传统商店,作为虚拟商店,在线商店有很多的特征和优势:1)花费比传统的少,特别是仓储支出;2)在线商店在全球经济市场份额的扩展中有优势,这主要是由于因特网有全球化的影响;3)在线商店可以全天销售,甚至可以设计成自动售卖机;4)借助互联网,各种各样的媒体广告可以被展示,比如图片,动画,视频等。

在线美妆商店是一个典型的电子商务模式。在线商店在销售工厂方面有明显的优势。对大型的美妆销售公司来说,改变他们市场模式和适应在线方式。因此,为了在残酷的市场竞争中保持竞争性,专注于分析和设计一个好的销售系统是必要的,同时这个销售系统应该保持技术先进和便于消费者使用。

对于在线商务网站的开发,我们主要有三种工具,ASP,PHP和JSP。很多学者已经研究了这些在线商店的技术。举个例子,于江增2002年研究了一种基于JSP的购物车新方法。邢俊伟在2006年采用ASP SQL Server IIS的结构设计了一个在线销售系

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[147912],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。