Java Web应用开发技术 教学课件 ppt 作者 任文娟 第7章 Struts高级特性

上传人:E**** 文档编号:89155803 上传时间:2019-05-19 格式:PPT 页数:53 大小:1.32MB
返回 下载 相关 举报
Java Web应用开发技术 教学课件 ppt 作者 任文娟 第7章 Struts高级特性_第1页
第1页 / 共53页
Java Web应用开发技术 教学课件 ppt 作者 任文娟 第7章 Struts高级特性_第2页
第2页 / 共53页
Java Web应用开发技术 教学课件 ppt 作者 任文娟 第7章 Struts高级特性_第3页
第3页 / 共53页
Java Web应用开发技术 教学课件 ppt 作者 任文娟 第7章 Struts高级特性_第4页
第4页 / 共53页
Java Web应用开发技术 教学课件 ppt 作者 任文娟 第7章 Struts高级特性_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《Java Web应用开发技术 教学课件 ppt 作者 任文娟 第7章 Struts高级特性》由会员分享,可在线阅读,更多相关《Java Web应用开发技术 教学课件 ppt 作者 任文娟 第7章 Struts高级特性(53页珍藏版)》请在金锄头文库上搜索。

1、第7章 Struts高级特性,本章导航,本章仍然围绕管理员登录案例,将进一步深入介绍Struts的一些高级特性,通过本章的学习,将帮您解决如下几个问题: 什么是国际化? 如何对Struts应用进行国际化? Struts中如何进行异常处理? 如何使用动态ActionForm? 如何应用Validator验证框架对界面中输入数据进行校验?,本章目标,通过本章的学习,读者应该能够完成如下几个目标: 掌握Struts的国际化与异常处理; 学会使用动态ActionForm; 会用Validator验证框架对ActionForm进行输入校验。,本章内容,Struts异常处理与国际化,1,动态ActionF

2、orm,2,Struts数据校验,3,Struts综合应用实例,4,7.1 Struts国际化与异常处理,7.1.1 Struts国际化 所谓的国际化即我们通常所说的i18n(internationalization),是指程序能够在不修改内部代码的前提下,根据不同的语言及地区显示相应的界面。Struts是一种支持国际化的框架,使用Struts开发国际化程序是一件很便利的事情。,1.为什么需要国际化 ?,国际化是商业系统中不可或缺的一部分,目前很多跨国的商务需求都需要实现多语言,对用户而言他们始终想看到用他们熟悉的语言显示的网站,因此这势必要求开发网站所采用的技术具有国际化的特点。若采用普通的

3、编程方式实现国际化可能需要花费大量的时间和精力,而采用Struts则可以极大地简化程序员在做国际化时所需的工作。 Struts允许将不同语言的文字写在多个资源文件中,每个资源对应一种语言,在JSP页面上通过Struts标签从资源文件中分别获取不同区域特征的文本,并显示在页面上,以此实现国际化的目的。,2.认识Struts国际化组件,要实现国际化,首先应该有存放各种版本语言编写的消息的地方。实际上,这些信息就被存储在多个文本文件中,每个文件对应着一种不同语言的版本。这些文件被称做资源文件,所有资源文件合在一起被称为资源包(Resource Bundle)。 资源文件必须以.properties结

4、尾,文件名前缀可以任意命名,习惯上命名方式有以下两种: 文件名前缀.properties。 文件名前缀_语言种类.properties。,其中,语言种类字段必须是有效的ISO(International Standardization Organization,国际标准化组织)语言代码,ISO-639标准定义的这些代码格式为英文小写、双字符,如表7-1所示。 表7-1 ISO-639标准常用语言代码,下面是一个资源包的代码,其中包含两个资源文件:用于创建英语界面的Application_ en.properties文件和用于创建中文界面的Application_zh.properties文件,

5、这两个资源文件代码如下。 Application_en.properties: # English ResourceMessage login.jsp.title=login login.jsp.page.heading=login success.jsp.title=login success success.jsp.page.heading=welcome login #validation and error messages login.no.username.error=username is required login.no.userpsw.error= password is

6、required login.error= username or password is not correct,资源文件Application_zh.properties: # 中文资源信息 login.jsp.title=登录页面 login.jsp.page.heading= 登录页面 success.jsp.title=登录成功页面 success.jsp.page.heading=欢迎登录 #验证错误信息提示 login.no.username.error=用户名不能为空 login.no.userpsw.error=密码不能为空 login.error=用户名或密码错误 在上面的

7、资源信息文件中,以#开头的行是注释部分,其他的行都是key=value(键值)的形式,定义了一个key对应当前语言下的文字。,在进行国际化处理时,资源文件中包含中文字符,若不进行编码转换页面将会出现乱码。在JDK中提供了一个native2ascii程序,它能够实现字符编码转换。例如要转换Application.properties文件中的字符,在DOS中执行以下的命令: native2ascii -encoding GB2312 Application.properties Application_zh.properties 经过native2ascii命令转换后,就得到一个新的文件Appli

8、cation_zh.properties,它的内容如下: login.jsp.title=u767bu5f55u9875u9762 login.jsp.page.heading=u767bu5f55u9875u9762 login.jsp.label.username=u7528u6237u540duff1a login.jsp.label.password=u5bc6u7801uff1a login.jsp.button.submit=u63d0u4ea4 login.jsp.button.reset=u91cdu5199,3. 访问资源包的方式,访问资源包的方式主要包括两种:一种是在JSP

9、页面中通过Struts标签来访问,另一种是在程序中访问。 在JSP页面中通过Struts标签来访问资源包需要以下两个步骤。 将标签库描述文件struts-bean.tld复制到应用工程的WEB-INF目录下。 在JSP页面中引入标签库,引入的方式如下代码所示:,在程序中访资源包可通过Action类提供的getResources()方法先获得 org.apache.struts.MessageResources类的一个实例,之后就可以按照request对象中的Locale信息来获取相应资源包中的文本,示例代码如下: /获取请求的的Locale信息 Locale locale = getLocal

10、e(request); /获取资源包 MessageResources message = getResources(request); /从资源包中得到信息文本并输出 System.out.println(message.getMessage(locale,“login.jsp.page.heading“);,实例 管理员登录程序的国际化处理,在本例中,我们将完善之前的用户登录程序,将用户登录程序做成一个国际化程序。当用户浏览器设置显示的语言是中文时,显示中文界面,当用户浏览器设置显示的语言是英文时,显示英文界面,如图7-1和图7-2所示。,图7-1 login.jsp页面国际化中文显示界面

11、,图7-2 login.jsp页面国际化英文显示界面,基本思路,本应用程序使用国际化资源文件和Struts标签来实现,其步骤如下。 创建国际化资源文件。 配置资源文件,让struts加载资源文件 在页面中使用标签显示国际化信息,7.1.2 Struts异常处理 异常是当JVM(JAVA虚拟机)在执行应用程序的某个方法的时候遇到的非正常现象,JVM就会生成一个异常对象,抛给客户以便客户进行异常处理. Struts框架的异常处理机制建立在java异常处理的基础之上.在研究Struts异常处理之前,先回顾一下java异常处理原理,理解java虚拟机JVM的异常处理过程有助于应用设计正确的异常处理方法

12、.处理异常需要JVM付出不小的开销,所以用于必须慎重使用.,1.Java异常处理 JAVA异常是在java程序运行的时候遇到非正常的情况而创建的对象,它封装了异常信息,java异常的根类为java.lang.Throwable,整个类有两个直接子类java.lang.Error和java.lang.Exception;Error是程序本身无法恢复的严重错误.Exception则表示可以被程序捕获并处理的异常错误. JVM用方法调用栈来跟踪每个线程中一系列的方法调用过程,该栈保存了每个调用方法的本地信息.对于独立的JAVA程序,可以一直到该程序的main方法.当一个新方法被调用的时候,JVM把描

13、述该方法的栈结构置入栈顶,位于栈顶的方法为正确执行的方法.当一个JAVA方法正常执行完毕,JVM回从调用栈中弹处该方法的栈结构,然后继续处理前一个方法.,如果java方法在执行代码的过程中抛出异常,JVM必须找到能捕获异常的catch块代码.它首先查看当前方法是否存在这样的catch代码块,如果存在就执行该catch代码块,否则JVM回调用栈中弹出该方法的栈结构,继续到前一个方法中查找合适的catch代码块.最后如果JVM向上追到了main()方法,也就是一直把异常抛给了main()方法,仍然没有找到该异常处理的代码块,该线程就会异常终止,如果该线程是主线程,应用程序也随之终止,此时JVM将把

14、异常直接抛给用户,在用户终端上会看到原始的异常信息.回顾完了JAVA的异常处理机制,就要开始研究Struts的异常处理了.,2. Struts异常处理 Struts框架在视图层和控制层提供了对异常处理的支持.Struts的控制器负责捕获各种异常,包括控制器运行中本身抛出的异常,以及调用模型的业务方法的异常.当异常被控制器捕获的时候,在异常处理代码块中,创建描述异常信息的ActionMessage对象把它保存在ActionMessages或者它的子类ActionErrors对象中,然后把它保存在特定的范围内,比如request或session.接下来在视图层标签检索特定范围的ActionMess

15、ages对象,把本地化错误消息输出到页面上.这种异常处理机制可以避免用户看到原始的java异常信息.可以更友好的把错误信息展示给用户.,在以前的Struts开发过程中,主要采用上述的手动处理的方式来处理异常。即先通过try/catch捕获异常,然后定制个性化的错误信息放在ActionMessages中,最后在页面中把这些错误信息返回给页面。但是,这种手动处理异常的方式是以JVM的异常处理机制为基础的,尽管它提供了强大的通用错误处理机制,但是不能保证捕获到所有的异常或者错误。 借助于Struts的异常处理框架,异常处理只需通过struts-config.xml文件中配置即可,配置方法可以避免在A

16、ction类中通过硬编码来处理异常,提高应用的灵活性、可重用性和可维护性。我们把这种处理异常的方式叫自动异常处理。即在Action中不捕获异常,而是将异常交由Struts异常处理框架来处理。,根据异常在配置文件中定义的位置不同,异常可分为局部异常和全局异常两种: 局部异常在action的子元素中定义 全局异常在global-exceptions元素中定义 异常定义的格式如下: 其中: key属性用于指定错误消息key,根据这个key到ResourceBundle中寻找匹配的消息文本; type属性指定该Exception的类绝对路径; scope属性指定ActionMessages对象的存放范围,默认request; path属性指定异常处理页面(没配该属性时会到input页面处理,因为默认异常处理类ExceptionHandler会先判断getPath是否有值,非空就new一个该getPath的ActionForward,为空就设置为map

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号