




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章国际化学习目的与要求本章重点讲解SpringMVC国际化的实现方法。通过本章的学习,读者应理解SpringMVC国际化的设计思想,掌握SpringMVC国际化的实现方法。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社目录11.1程序国际化概述11.2SpringMVC的国际化11.3用户自定义切换语言示例《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社11.1.1Java国际化的思想Java国际化的思想是将程序中的信息放在资源文件中,程序根据支持的国家及语言环境,读取相应的资源文件。资源文件是key-value对,每个资源文件中的key是不变的,但value则随不同国家/语言变化。在Java程序的国际化中主要通过两个类来完成:
java.util.Locale:用于提供本地信息,通常称它为语言环境。不同的语言,不同的国家和地区采用不同的Locale对象来表示。
java.util.ResourceBundle:该类称为资源包,包含了特定于语言环境的资源对象。当程序需要一个特定于语言环境的资源时(如字符串资源),程序可以从适合当前用户语言环境的资源包中加载它。采用这种方式,可以编写独立于用户语言环境的程序代码,而与特定语言环境相关的信息则通过资源包来提供。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社11.1.1Java国际化的思想为了实现Java程序的国际化,必须事先提供程序所需要的资源文件。资源文件的内容是由很多key-value对组成,其中key是程序使用的部分,而value则是程序界面的显示。资源文件的命名可以有如下3种形式:
baseNperties baseName_perties baseName_language_perties
baseName是资源文件的基本名称,由用户自由定义。但是language和country就必须为Java所支持的语言和国家/地区代码。例如:中国大陆:baseName_zh_CN.properties美国:baseName_en_US.properties《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社11.1.2Java支持的语言和国家java.util.Locale类的常用构造方法如下:
publicLocale(Stringlanguage)
publicLocale(Stringlanguage,Stringcountry)其中language表示语言,它的取值是由小写的两个字母组成的语言代码。country表示国家或地区,它的取值由大写的两个字母组成的国家或地区代码。实际上,Java并不能支持所有国家和语言,如果需要获取Java所支持的语言和国家,开发者可以通过调用Locale类的getAvailableLocales方法获取,该方法返回一个Locale数组,数组里包含了Java所支持的语言和国家。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社11.1.3Java程序国际化为让该程序支持国际化,需要将“我要向不同国家的人民问好:您好!”对应不同语言环境的字符串,定义在不同的资源文件中。在Web应用的src/main/java目录下新建文件messageResource_zh_CN.properties和messageResource_en_US.properties。其次,给资源文件messageResource_zh_CN.properties添加“hello=我要向不同国家的人民问好:您好!”内容。最后,给资源文件messageResource_en_US.properties添加“hello=Iwanttosayhellotoallworld!”内容。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社11.1.3Java程序国际化publicstaticvoidmain(String[]args){ //取得系统默认的国家语言环境
Localelc=Locale.getDefault(); //Localelc=newLocale("en","US"); //根据国家语言环境加载资源文件
ResourceBundlerb=ResourceBundle.getBundle("messageResource",lc); //打印出从资源文件中取得的信息
System.out.println(rb.getString("hello"));
}上面程序中的打印语句打印的内容是从资源文件中读取的信息。如果在中文环境下运行程序,将打印“我要向不同国家的人民问好:您好!”;如果将Locale对象实例化为Locale("en","US"),再次运行该程序,将打印“Iwanttosayhellotoallworld!”。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社11.1.4带占位符的国际化信息在资源文件中的消息文本可以带有参数,例如:welcome={0},欢迎学习SpringMVC。花括号中的数字是一个占位符,可以被动态的数据替换。在消息文本中的占位符可以使用0到9的数字,也就是说,消息文本的参数最多可以有10个。例如:welcome={0},欢迎学习SpringMVC,今天是星期{1}。要替换消息文本中的占位符,可以使用java.text.MessageFormat类,该类提供了一个静态方法format(),用来格式化带参数的文本,format()方法定义如下。publicstaticStringformat(Stringpattern,Object…arguments)其中,pattern字符串就是一个带占位符的字符串,消息文本中的数字占位符将按照方法参数的顺序(从第二个参数开始)而被替换。Stringmsg=rb.getString("welcome");//替换消息文本中的占位符,消息文本中的数字占位符将按照参数的顺序(从第二个参数开始)而被替换,即“我”替换{0},“5”替换{1}StringmsgFor=MessageFormat.format(msg,"我","5");《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社目录11.1程序国际化概述11.2SpringMVC的国际化11.3用户自定义切换语言示例《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社11.2SpringMVC的国际化SpringMVC的国际化是建立在Java国际化的基础之上的,SpringMVC框架的底层国际化与Java国际化是一致的,作为一个良好的MVC框架,SpringMVC将Java国际化的功能进行了封装和简化,开发者使用起来更加简单快捷。国际化和本地化应用程序时,需要具备以下两个条件:1.将文本信息放到资源属性文件中。2.选择和读取正确位置的资源属性文件。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社11.2.1SpringMVC加载资源属性文件在SpringMVC应用中,不能直接使用ResourceBundle加载资源属性文件,而是利用bean(messageSource)告知SpringMVC框架将从哪里加载资源属性文件。示例代码,具体如下。<beanid="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <!--<propertyname="basename"value="classpath:messages"/>-->
<propertyname="basename"value="/WEB-INF/resource/messages"/></bean>《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社11.2.2语言区域的选择在SpringMVC应用中,可以使用语言区域解析器bean选择语言区域。该bean由3个常见实现:AcceptHeaderLocaleResolver、SessionLocaleResolver以及CookieLocaleResolver。如果采用基于SessionLocaleResolver和CookieLocaleResolver国际化实现,必须配置LocaleChangeInterceptor拦截器,示例代码如下:<mvc:interceptors><beanclass="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/></mvc:interceptors>《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社AcceptHeaderLocaleResolver根据浏览器HttpHeader中的accept-language域判定(accept-language域中一般包含了当前操作系统的语言设定,可通过HttpServletRequest.getLocale方法获得此域的内容)。改变Locale是不支持的,即不能调用LocaleResolver接口的setLocale(HttpServletRequestrequest,HttpServletResponseresponse,Localelocale)方法设置Locale。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社SessionLocaleResolver根据用户本次会话过程中的语言设定决定语言区域(如:用户进入首页时选择语言种类,则此次会话周期内统一使用该语言设定)。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社CookieLocaleResolver根据Cookie判定用户的语言设定(Cookie中保存着用户前一次的语言设定参数)。由上述分析可知,SessionLocaleResolver实现,比较方便用户选择喜欢的语言种类。下面是使用SessionLocaleResolver实现的bean定义。<beanid="localeResolver“class="org.springframework.web.servlet.i18n.SessionLocaleResolver"><propertyname="defaultLocale"value="zh_CN"></property></bean>《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社11.2.3使用message标签显示国际化信息在SpringMVC框架中,可以使用Spring的message标签在JSP页面中显示国际化消息。使用message标签时,需要在JSP页面最前面使用taglib指令声明spring标签,代码如下。<%@taglibprefix="spring"uri="/tags"%>message标签有如下常用属性:
code:获得国际化消息的key。
arguments:代表该标签的参数。如替换消息中的占位符,示例代码为<spring:messagecode="third"arguments="888,999"/>,third对应的消息有两个占位符{0}和{1}。
argumentSeparator:用来分隔该标签参数的字符,默认为逗号。
text:如果code属性不存在,或指定的key无法获取消息时,所显示的默认文本信息。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社目录11.1程序国际化概述11.2SpringMVC的国际化11.3用户自定义切换语言示例《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社11.3用户自定义切换语言示例在许多成熟的商业软件系统中,可以让用户自由切换语言,而不是修改程序(Locale对象实例化)或浏览器的语言设置。SpringMVC允许用户自行选择语言设置。【例11-1】用户自定义切换语言设置。在该实例中使用SessionLocaleResolver实现国际化。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社1.创建应用创建应用ch11_1,并导入SpringMVC相关的JAR包,包括Spring的4个基础JAR包、SpringCommonsLoggingBridge对应的JAR包spring-jcl-6.0.0.jar、AOP实现JAR包spring-aop-6.0.0.jar、DispatcherServlet接口所依赖的性能监控包(micrometer-observation.jar和micrometer-commons.jar)以及两个Web相关的JAR包。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社2.创建国际化资源文件在应用ch11_1的/WEB-INF/目录下,创建名为resource的文件夹,并在文件夹中创建中英文资源文件messages_en_US.properties和messages_zh_CN.properties。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社3.创建视图JSP文件在应用ch11_1的/WEB-INF/目录下,创建名为jsp的文件夹,并在文件夹中创建3个JSP文件:first.jsp、second.jsp和third.jsp。《JavaEE框架整合开发入门到实战》陈恒
主编,清华大学出版社4.创建控制器类该应用有两个控制器类,一个是I18NTestController处理语言种类选择请求,一个是MyController进行页面导航。在应用ch11_1的src/main/java目录中,创建名为controller的包,并在该包中创建I18NTestController和MyController两个控制器类。@ControllerpublicclassI18NTestController{ /** *locale接收请求参数loca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海洋运输安全生产培训计划
- 基于项目的六年级科学教学计划
- 高校防疫应急响应计划
- 2024届江苏省大丰区第一共同体十校联考最后数学试题含解析
- 2024届江苏省苏州市昆山、太仓市达标名校中考考前最后一卷数学试卷含解析
- 护理科研建设体系框架
- 嵌甲手术治疗
- 机场跑道维修机械设备调配计划
- 发绀症状护理要点
- 电子电气安全生产目标管理计划
- 和解协议书范本大全七篇
- 五年级下册道德与法治课件我们的公共生活人教部编版
- 新人教版八年级美术下册教案《情感的抒发与理念的表达》教学设计
- 小学数学北师大五年级上册数学好玩已修改《点阵中的规律》
- 社会过程研究方法(简版)课件
- 替莫唑胺与恶性胶质瘤课件
- 腹腔镜器械清洗流程图
- 学校食堂餐厅紫外线灯消毒记录表
- 工会文体活动管理制度范文
- 第6章_射线与物质的相互作用
- 3D打印介绍PPT精选文档课件
评论
0/150
提交评论