admin 管理员组

文章数量: 887021


2023年12月23日发(作者:chmod777命令详解)

2012年5月 洛阳师范学院学报 May.,2012 第31卷第5期 Journal of Luoyang Normal University V01.31 NO.5 基于struts框架的国际化问题的解决方案 乔俊玲,孙亦博 (洛阳师范学院信息技术学院,河南洛阳471022) 摘要:国际化意味着同一个软件.-q- ̄面向使用各种不同语言的客户.Struts框架提供了对国际化的支持.本 文利用该框架,针对网上考试体统提出了国际化解决方案. 关键词:Struts;国际化;网上考试系统 中图分类号:TP311 文献标识码:A 文章编号:1009—4970(2012)05—0065—03 国际化指的是在软件设计阶段,就使软件具有 支持多种语言和地区的功能.这样,当需要在应用 2 网上考试系统国际化问题解决方案 程序中添加一种新的语言和地区的支持时,无需修 改原有的程序代码,就能提高软件开发的效率. 实现网上考试系统国际化的关键有两点:①资 Struts框架提供了对国际化的支持,本文利用Sturts 源文件的建立;②编码问题的解决.本系统国际化 框架解决了网上考试系统的国际化问题,使其支持 问题解决的方法和步骤如下. 面向中文和英文两种不同的语言环境. 2.1资源文件的建立 在JSP等页面文件中不应该直接包含本地化的 1 Struts框架对国际化的支持 消息文本,而应该通过<bean:message>标签从资 Java在其核心库中提供了支持国际化的类和接 源文件Resource Bundle中获得文本.那么,与Lo— 口.与国际化密切相关的两个组件是Local和Re. cale相关的资源文件的建立将是一个重要的工作. 对于网上考试系统来说,系统的消息文本数量 source Bundle. Java.util.Locale类是最重要的Java I18N类. 庞大.如果整个系统使用一个Resource Bundle,即 在Java语言中,几乎所有对国际化和本地化的支持 包括默认、中文和英文资源文件,管理工作将过于 都依赖于这个类.Local对象本身并不执行和I18相 烦琐,系统性能也会受到影响.针对网上考试系统 关的格式化或解析工作,它代表一种特定的语言和 这种多模块的Struts应用,可以考虑为网上考试系 地区,向本地敏感的类提供本地化信息…. 统每个模块配置一个Resource Bundle.网上考试系 Resource Bundle类提供存放和管理与Local相 统各模块对应的资源文件如表1. 关资源的功能.这些资源包括文本域或按钮的标 下面以登录模块为例来讨论资源文件的建立和 签、状态信息、图片名、错误信息和网页标题等. 使用. 表1 网上考试系统各模块对应的资源文件 Struts框架对国际化的支持体现在能输出与用 户Locale相符合的文本和图片上.当Struts配置文 模块名 资源文件类型 资源文件名称 默认资源文件 StudentLoginapplication.properties 件的<controller>元素的locale属性为true时, 考生登录英文资源文件 StudentLoginapplicationen.properties —.Struts框架把Resource Bundle存储在application范 中文资源文件 StudentLoginapplicationzh— CN.poperties 围内,当响应用户请求时,把用户的Locale实例保 默认资源文件 Composeapplication.properties 存在session内,这样,Struts框架能自动根据这一 抽题组卷英文资源文件 Composeapplicationen.properties _oLcale实例从Resource Bundle中选择合适的资源文 中文资源文件 Composeapplication—.zh——CN.poperties 件,再从资源文件中读取本地化的消息文本 2]. 收稿日期:2011—05—11 作者简介:乔俊玲(1971一),女,河南洛阳人,硕士,副教授 

・66・ 第一,设置本模块默认资源文件的内容.例 如.在登录模块对应的默认资源文件StudentLogi- napplication.properties中设置页面所需的消息文本: WebExam.title=Uniifed Network Education Plat— form WebExam.name—tag Name WebExam.passwordtag Password WebExam.1ogin—button—name=Login errors.required={0}is required. errors.minlength={0}cannot be less than {1} digits. errors.maxlength={0}cannot be more than {2} digits. 第二,根据默认资源文件创建对应的临时中文 资源文件.登录模块对应的临时中文资源文件为 StudentLoginapplication—temp.properties.内容如下: WebExam.title=网络教育一体化平台 WebExam.name—tag 用户名 WebExam.password—tag 密码 WebExam.1ogin—button—name=登录 errors.required={0}必须输入. errors.minlength={0}不能小于{1}个字符. errors.maxlength={0}不能大于{2}个字符. 中文资源文件的建立可以采用对临时中文资源 文件进行编码转换.在JDK中提供了native2ascii 命令,它能够实现字符编码转换.在DOS下执行以 下命令,将生成GB2312编码的中文资源文件appli— cation—zh—CN.properties: Native2ascii——encoding gb23 12 StudentLoginapplication——temp.properties StudentLoginapplication zh—CN.popertm。s 执行以上命令后,将生成如下的资源文件Stu— dentL0ginapplication—zh—CN.properties: WebExam.title:\u7f51\u7edc\u6559\u80b2\ u4eO0\u4f53\u5316\u5e73\u53f0 WebExam.name tag=\u7528\u6237\u540d WebExam.passwordtag=\u5bc6\u7801 _WebExam.1ogin button name=\u767b\u5f55 errors.required=/0/I u5fc5 t u987b I u8f93| u5165. errors.minlength=/o/|u4e0d|u80fd t u5cOf t u4e8e{1}\u4e2a\u5b57\u7b26. 洛阳师范学院学报2012年第5期 errors.maxlength=/0/|u4eOd}u8Ofd|u5927 I u4e8e{2}\u4e2a\u5b57\u7b26. 而英文资源文件只需要复制默认资源文件,然 后把新的文件更名即可.例如:把英文资源文件更 名为StudentL0ginapplication—en.properties. 完成以上操作之后,在WEB—INF/classes/下, 考生登录模块对应着默认、中文和英文三个资源文 件. 为了进行资源文件的访问,要在Struts的配置 文件中定义相应的Resource Bundle,配置如下: <message—resources key ’’StudentLogin”pa— rameter=’’StudentLoginapplication”> <message—resources key ”ComposePaper” parameter=”Composeapplication’ > 那么,在配置文件<message—resources>元素 中对每个资源文件指定key后,各个模块在访问对 应的Resource Bundle时,可以通过<bean:message >标签的bundle属性指定被访问的Resource Bun— dle,它和<message—resources>元素的key属性匹 配,同样通过key属性直接指定消息key.登录模块 中访问Resource Bundle的主要代码如下: <bean:message bundle=”StudentLogin”key =”Webexam.title”/> <html:form action:”/regist.do”focus= name”> <bean:message bundle=”StudentI ̄gin”key ”WebExam.nametag”/>:<html:text property ” —name”size=”25”/><font color=”#FFO000”size =”2”> <html:errors bundle=”StudentLogin”property =”name”/></font><br> <bean:message bundle=”StudentLogin”key =”WebExam.password—tag”/>:<html:text prop。 erty ”password”size=”25”/><font color=”# FFO000”size=”2”> <html:errors bundle=”StudentLogin”property =”password”/></font><br> <html:submit property=”OK’’> <bean:message bundle=”StudentLogin”key =”WebExam.1ogin—button—name”/> </html:submit> </html:fotin> 

洛阳师范学院学报2012年第5期 .67・ 2.2编码问题的解决 request.setCharacterEncoding(”UTF一8”); 第一考虑Web浏览器采用的字符编码方式, chain.doFilter(request,response);} 包括web容器采用的编码方式和数据库采用的编 这个过滤器将预处理所有的URL.那么,当在 码方式.目前,UTF一8编码正逐步成为一种占主 IE浏览器中把语言设置为中文或者英文时,系统可 导地位的编码方式,它与ASCII完全兼容,Java编 自动切换.但是,在同一个会话中,Local对象保持 译后产生的class文件也采用UTF一8编码.因此, 不变,选用的资源文件也不会变化.如果语言设置 本系统采用UTF一8作为数据的统一编码方式,包 改变,则应该重新打开一个IE浏览器.图2为local 括代码、资源文件等.为了保证同一个JSP页面能 设置为英文时的登录页面. 支持多种语言,可以将所有JSP页面的字符编码统 一设为“UTF一8”: <%@page contentType=”text/html:charset= “UTF一8”language=“j‘ava”%> 第二要进行请求数据的编码设置.在提交表单 数据环节,默认情况下,IE浏览器发送请求时采用 ISO一8859—1字符编码,调用HttpServletRequest的 setCharacterEncoding(“UTF一8”)方法,能够把用户 请求数据的字符编码设置为uTF一8,如图1所示. 图2面向英文考生的登录页面 这样,Web应用的输入输出都采用同一种编码,就 当然,系统国际化的实现也是一个漫长的,需 无需在程序中进行编码转换.这一功能可以由 要不断完善的过程,需要进行方方面面的考虑,比 Servlet过滤器来完成,因为它可以预处理所有的 如各种错误页面国际化的处理、底层数据库所使用 HTFP请求,这样能避免在每个Web组件中设置请 的编码会给应用程序的移植带来麻烦等. 求数据编码. 参考文献 [1]孙卫琴.精通Struts:基于MVC的Java Web设计与开 发[M].北京:电子工业出版社,2008. [2]王春蓬.基于Sturts和Hibernate的会计事务所WEB应 用系统的设计与实现[J].吉林大学学报,2006,(8): 图1 Servlet过滤器预先设置请求数据的编码 22—27 实现过滤器的主要代码为 Public void doFiher(ServletRequest request,Serv— [责任编辑徐刚] letResponse response,FiherChain)throws IOExcep— tion,ServletException{ An Internationalization Problem Solution based on Struts Framework QIAO Jun—ling.SUN Yi_b0 (College of Information Technology,Luoyang Normal University,Luoyang 471022,China) Abstract:The internationalization means that one software may face users who speak diversiifed different lan- guages.The Struts framework has provided support for internationalization.This article uses this framework and proposes the internationalization solution in view of on—line test system. Key words:Struts;internationalization;on—line test system 


本文标签: 资源 文件 编码