资源预览内容
第1页 / 共61页
第2页 / 共61页
第3页 / 共61页
第4页 / 共61页
第5页 / 共61页
第6页 / 共61页
第7页 / 共61页
第8页 / 共61页
第9页 / 共61页
第10页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第9章 JSP开发中的常用技巧,第9章 JSP开发中的常用技巧,9.1 JSP程序的国际化与本地化 9.2中文乱码的问题 9.3错误处理问题 9.4在JSP中动态生成图像 9.5限制表单重复提交 9.6 Web应用的3种数据共享方式 9.7 Web组件的3种关联关系 9.8 3种典型的会话跟踪方法,9.1 JSP程序的国际化与本地化,国际化是指适当地创建代码、应用或系统,从而可以针对不同国家和地区的使用进行定制的行为。 本地化是指适当地调整一个支持国际化的应用,以便用于某个特定地区。,国际化和本地化问题主要涉及以下方面:,将文本翻译为本地语言。 按本地惯例来调整数字的格式,例如调整千位分隔符。 调整使用的货币符号。 遵循本地惯例调整日期格式。 其他调整,如针对本地输入法编辑器进行的调整。,9.1.2语言的国际化,应用程序语言国际化的一个重要基础是Unicode字符标准和字符集。 Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 Java语言的内核采用Unicode系统,意味着JSP页面可以用Unicode编码序列来存储几乎所有书面语言中常用的字符或字符串。Unicode编码的每个字符都占2个字节,用u*来表示,,【例9.1】使用Unicode码输出汉字“中国”。,outChinese.jsp代码如下: test ,9.1.3日期和时间的国际化,利用Java.text包中封装的DateFormat类,可以方便地实现日期和时间的本地格式化,其中提供了以下四个函数: static DateFormat getInstance(); /获取对象实例 static DateFormat getTimeInstance(); /获取时间对象实例 static DateFormat getDateInstance(); /获取日期格式对象实例 static DateFormat getDateTimeInstance(); /获取日期/时间格式对象实例 这四个函数都可以返回符合格式的日期和时间,或者返回日期和时间都符合DateFormat类的日期和时间格式对象。在以上四个函数中,除了第一个即getInstance函数返回的是默认地区和时间外,其余三个都允许指定地区或格式化样式。,【例9.2】日期和时间的国际化。,globalDate.jsp文件代码如下:, Date and Time Example ,9.2中文乱码的问题,所有形式的JSP的中文乱码问题,其根源在于: Web容器默认的字符处理编码是ISO-5889-1,对于需要在浏览器页面上显示中文的JSP程序,如果在程序中没有指定中文的字符集,那么中文将显示为乱码。 所以要显示中文字符在浏览器上,必须要有指定中文的字符集,charset的值可以设置为gb2312,UTF-8,GBK,这三个字符集都包含有中文字符集。,9.2.1基本概念,常见的编码有如下几种: 1ASCII码 以8bit为单位存储,ASCII码0-3l及127为控制符,32至126为可见字符,包括所有英文字母,128-255的ASCII码则没有定义。 2GB2312 以16bit(两字节)为单位存储,其中第一个字节为128-255。系统可以据此加以判断,若第一个字节大于127,则把该字节后紧接着的一个字节结合起来,共两个字节,就形成一个GB2312的中文字码。,3Unicode Unicode可以将世界上几十种文字编码统一在同一种编码机制下,其编码以16bit为单位存储,取值范围是0x0000-0xFFFF。 4ISO-8859-1 或称为Latin-1,ISO是国际标准化组织的简称。ISO-8859-1有时又简称为8859-1 在Unicode所占的值域为0-255。低位为ASCII码扩展到0-255,然后再在高位补上0x00,组成16bit。 5字节和Unicode Java内核是Unicode的,就连class文件也是,但是文件和流的保存方式是使用字节流的。因此Java要对这些字节流进行转化。在Java的基本数据类型中,char是Unicode的,而byte是字节。,9.2.2 JSP页面显示时的中文乱码问题,解决方法:在页面上指定显示该页要使用的字符集为包含中文字符的字符集,如gb2312,GBK等。,【例9.3】页面显示中文乱码问题。,(1)产生乱码的页面showError.jsp中包含中文汉字,但是在文件中并没有指定显示该页要用的字符集,这时,系统将使用默认的字符集ISO-8859-1来显示页面,造成中文汉字显示为乱码。 showError.jsp文件 要解决此问题,只要在文件的page指令中指定字符集为gb2312即可。 文件showCorrect.jsp,showError.jsp文件代码如下:, Chinese Error Example ,文件showCorrect.jsp代码如下:, Chinese Error Example ,9.2.3 JSP页面传递中文参数时的乱码问题,JSP页面之间传递有几种情况: 1. 标签传递 解决方法是:在每个页面都加上语句。 2. 标签 解决方法是:在包含页(被包含页不需要)中加上语句。,3. 一般页面之间传递 有get和post两种传送参数方式,post方式和get方式都需要取参数值时用如下语法: String param_name = new String(request.getParameter(“param_name“).getBytes(“iso-8859-1“),“gb2312“); 这样就可以把iso-8859-1格式的值转化为gb2312格式的值。,【例9.4】读取表单提交的中文参数并显示。,本例解决例5.1中参数传递时的乱码问题。 用户在文件submitPara.html 中输入姓名和电话 文件receivePara.jsp接收用户输入并显示出来,文件submitPara.html代码如:,获取客户提交信息案例 姓名: 电话: ,接收文件receivePara.jsp代码:, 接受用户输入信息并显示 您输入的信息为: 姓名: 电话: ,9.2.4 Servlet处理中文参数时的乱码问题,在实际应用中,经常需要用Servlet来接收和处理表单传递的数据 中文字符串在传递和返回的过程中,如果编码方式不正确,则传入的中文字符和字符串编码无法正确显示和识别。,【例9.5】用Servlet处理中文参数的乱码问题。,将例9.4中用户的输入信息提交到一个Servlet,由Servlet接收用户输入,然后对其中的中文乱码进行处理。 (1)在WEB-INFclassesex9_5目录下建立一个Servlet,创建文件formdeal.java 在命令窗口中通过javac命令编译上述Servlet文件,得到formdeal.class字节码文件。 (2)创建该Servlet的部署描述文件(web.xml),(3)创建用户输入信息页面servletErrorCode.jsp,在此页面中,用户的输入提交到Servlet处理 将Servlet中的两行语句“/response.setContentType(“text/html; charset=gbk“);”和“/request.setCharacterEncoding(“gbk“);”的注释去掉,这样可以使中文能够正确显示。,9.2.5 URL传递的中文参数的乱码问题,使用URL传递参数,可以实现客户端的会话跟踪,如果参数中含有中文字符,处理不当就无法正确读取。,【例9.6】URL传递的乱码问题。,本例包含两个文件URLPage.jsp和URLLink.jsp,其中 URLPage.jsp文件中包含了链接到URLLink.jsp的超链接,并通过URL传递中文参数到此页面 URLLink.jsp接收传递的参数并显示。,通过URL接收到的中文参数显示为乱码,解决方法是将语句: String type=request.getParameter(“type“); String guest=request.getParameter(“guest“); String contract_id=request.getParameter(“contract_id“); 替换为如下三条语句: String type=new String(request.getParameter(“type“).getBytes(“ISO8859-1“),“gb2312“); String guest=new String(request.getParameter(“guest“).getBytes(“ISO8859-1“); String contract_id=new String(request.getParameter(“contract_id“).getBytes(“ISO8859-1“);,9.3错误处理问题,9.3.1异常处理 异常(exception)处理是Java语言中处理程序执行中发生的错误的一种机制,当错误发生时,Java程序会根据错误的情况抛出(throw)一个异常对象,让程序可以根据这个异常对象判断发生了什么错误,然后做适当的处理,使程序能继续正常执行下去。,Java的异常处理是利用try语句紧接着catch或finally语句,在可能发生异常的程序语句块外用try语句包含起来,然后用catch捕捉异常对象,基本语法如下: try catch(exception ex) finally ,至少要包含一个catch或finally,也可以包含多个catch try catch(FileNotFoundException ex) catch(IOException ex) catch(exception ex) finally 如果有多个catch的异常对象时,应当按照继承关系的相反顺序来摆放,如上面例子中的FileNotFoundException继承自IOException,而IOException继承自Exception。,9.3.2转译错误与客户端请求错误处理,JSP程序的处理过程中可能会发生两种错误: 1. 从JSP程序源文件转译成为Java程序的Servlet Class文件时发生的错误,称之为转译错误。 转译错误可能是JSP文件本身所写标签的语法错误,需要改正程序错误 2. 当客户端请求JSP程序页面时所发生的错误,称之为客户端请求错误。 这类错误可以由JSP程序来进行处理。此时可以在发生异常的程序区域用try语句包含起来,然后用catch捕捉异常对象,在catch语句内对所发生的错误作适当的处理。,9.3.3错误显示页,程序发生异常的时候,只要在page指令中的errorPage属性指定错误信息网页的名称,则当程序发生执行期的错误时,JSP引擎会自动将其导向指定的错误信息网页。例如: 也可以通过产生异常,如throw new Exception(“errorMsg”),这样也会使得JSP程序转向错误信息网页。,在错误信息网页的page编译指令中,将isErrorPage属性设为true 此时可以用exception.getMessage()或exception.toString()取得错误信息字符串,然后将它显示在错误信息网页上。,9.4 在JSP中动态生成图像,在Web应用中,经常需要动态生成图片,比如实时股市行情,各种统计图等等,这种情况下,图片只能在服务器内存中动态生成并发送给用户,然后在浏览器中显示出来。 本质上,服务器返回的仍然是标准的http响应,只不过http头的contentType不是text/HTML,而是imag
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号