`
puppy117
  • 浏览: 52217 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

**struts程序的国际化(下)-struts的国际化

阅读更多
Struts 的国际化也是通过ResourceBundle 完成的。因此,也必须编写资源文件。下面以前面的应用为示例,演示如何实现程序的国际化。
1. 编写资源文件
本示例程序能满足两种语言环境:简体中文和英语。当然,需要满足更多国家的语言也不是问题,只需提供对应的资源文件即可。
下面是两份资源文件:
// 英文的资源文件
username=username
pass=password
login=submit
noname=please enter name
nopass=please enter password
下面是中文的资源文件:
// 中文的资源文件
username=用户名
pass=密码
login=登录
noname=请输入用户名,然后再登录
noname=请输入密码,然后再登录

注意:对于非西欧文字的资源文件,必须使用native2ascii进行转换。
2. 加载资源文件
资源文件的加载通过struts-config.xml文件来配置,加载资源文件应从Web 应用的WEB-INF/classes路径开始加载。因此,资源文件必须放在WEB-INF/classes路径或该路径的子路径下如果直接放在WEB-INF/classes 路径下,在配置资源文件时,直接指定资源文件的baseName 即可。但如果放在子路径下,则必须以包的形式配置。下面的示例程序中的资源文件放在WEB-INF/classesl1ee 下。配置资源文件的
struts-config.xml文件的源代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Struts 配置文件的文件头,包含DTD 等信息-->
<!DOCTYPE struts-config PUBLIC
		"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
		"http://struts.apache.org/dtds/struts-config_1_2.dtd">
<!-- Struts 配置文件的根元素-->
<struts-config>
	<!-- 配置所有的ActionForm-->
	<form-beans>
		<!-- 配置第一个ActionForm. 指定ActionForm的口arne 和type 属性-->
		<form-bean name="loginForm" type="lee.LoginForm" />
	</form-beans>
	<!--配置全局Forward对象-->
	<global-forwards>
		<!--该Forward对象的name 属性为error,映射资源为/WEB-INF/jsp/error.jsp -->
		<forward name="error" path="/WEB-INF/jsp/error.jsp" />
	</global-forwards>
	<!--此处配置所有的Action 映射-->
	<action-mappings>
		<!--配置Action 的path. type 属性name 属性配置Action 对应的ActionForm-->
		<action path="/login" type="lee.LoginAction" name="loginForm">
			<!--还配置了两个局部Forward. 这两个局部Forward仅对该Action有效-->
			<forward name="welcome" path="/WEB-INF/jsp/welcome.jsp" />
			<forward name="input" path="/login.jsp" />
		</action>
	</action-mappings>
	<!--配置国际化资源. parameter指定资源文件的位置。-->
	<message-resources parameter="lee.messages" />
</struts-config>

Struts 负责加载资源文件, Struts 在应用启动时将加载该资源文件。
注意:如果需要Struts 实现程序国际化,必须将ActionServlet配直成load-on-startup的Servlet,只有这样才可以保证在启动应用时加载该资源文件。
3. 使用bean 标签显示国际化信息
根据前面的国际化示例程序我们知道,程序要实现国际化,则不能将标签及帮助等提示信息以硬编码方式写在程序中,而应使用资源文件的key 。Struts 提供了专门用于国际化的标签bean,关于bean 标签,将在后面深入讲解。此处仅介绍国际化支持使用的bean 标签。为了可以在Web 应用中使用bean 标签,在应该将struts-bean.tid 复制到WEB-INF/路径下,并在web.xml 文件中增加该Struts 标签库的配置。下面的web.xml 文件增加了Struts struts-bean标签库,源代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<web-app>
	<!-- 配置ActionServlet. 并配置成load-on-startup的Servlet-->
	<servlet>
		<servlet-name>actionSevlet</servlet-name>
		<servlet-class>
			org.apache.struts.action.ActionServlet
		</servlet-class>
		<load-on-startup>l</load-on-startup>
	</servlet>
	<!-- 配置ActionServlet映射的URL-->
	<servlet-mapping>
		<servlet-name>actionSevlet</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	<!-- 配置struts-bean的标签库-->
	<taglib>
		<!-- 配置标签库的uri-->
		<taglib-uri>/tags/struts-bean</taglib-uri>
		<!-- 配置标签库对应的物理位置-->
		<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
	</taglib>
</web-app>

经过上面的配置, JSP 页面可以使用bean 标签了,从而可以通过bean 标签显示国际化提示。下面是login.jsp 文件的源代码,该文件中不再以硬编码的方式输出提示,而是输出的资源文件的key:
<%@ page language="java" contentType="text/html;charset=UTF-8"
	errorPage="error.jsp"%>
<!-- 增加struts-bean.xml的标签库 -->
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
		<!-- 使用国际化资源文件的key 输出标题 -->
		<title><bean:message key="login" /></title>
	</head>
	<script>
	function check(form) 
	{if (form.username.value==null ||form.username.value=="" ){
	<!-- 使用国际化资源文件的key 输出提示 -->
	alert ('<bean:message key="noname"/>') ; 
	return false; }
	else if(form.pass.value==null || form.pass.value=="") {
	<!-- 使用国际化资源文件的key 输出提示 -->
	alert ('<bean:message key="nopass" />'); 
	return false; }
	else return true; 
	}
	</script>
	<body>
		<font color="red"> <%
 	if (request.getAttribute("err") != null)
 		out.println(request.getAttribute("err"));
 %> </font>
		<form id="login" method="post" action="login.do"
			onsubmit="return check(this); ">
			<!-- 使用国际化资源文件的key 输出用户名标签 -->
			<bean:message key="username" />
			<input type="text" name="username" />
			<br>
			<!-- 使用国际化资源文件的key 输出密码标签 -->
			<bean:message key="pass" />
			<input name="pass" />
			<br>
			<!-- 使用国际化资源文件的key 输出登录按钮 -->
			<input type="submit" value='<bean:message key="login"/>' />
			<br>
		</form>
	</body>
</html>

因此,实现国际化只需要编写资源文件,然后使用bean 标签输出国际化信息。使用bean 标签,可以大大降低程序国际化的复杂度,这就是使用框架的优势。
分享到:
评论

相关推荐

    struts从入门到精通.doc

    - **10.1 Struts国际化程序尝试** - 探讨了如何在Struts应用中实现国际化。 - **10.1 Java对i18n的支持** - 介绍了Java平台提供的国际化支持特性。 - **10.1 Struts框架中对国际化的支持** - 讨论了Struts框架...

    struts1-and-struts2.zip_between

    4. **国际化与本地化** - **Struts1**:通过资源文件处理,需要在每个ActionForm中添加对应的语言资源。 - **Struts2**:继承了Struts1的优点,同时支持在Action类和拦截器中直接使用资源文件,更方便地实现国际化...

    struts1和struts2的国际化

    1. **Struts1的国际化** 在Struts1中,实现国际化主要通过以下步骤: - **资源文件创建**:首先,我们需要创建资源文件,通常命名为`messages.properties`,用于存储默认语言(如英语)的文本消息。对于其他语言,...

    struts2教程我在培训时用的

    **4.4 国际化** - **国际化HelloWorld**:演示如何实现多语言的支持。 - **加载资源文件的方式**:可以通过不同的方式加载国际化资源文件。 - **加载资源文件的顺序**:配置资源文件的加载顺序。 - **允许用户自行...

    struts-2.3.24源码

    9. **国际化与本地化** - Struts 2支持多语言环境,通过资源包(Resource Bundle)实现不同语言的切换。 10. **测试支持** - Struts 2提供了JUnit测试支持,方便对Action进行单元测试。 通过深入研究Struts 2.3....

    struts1.2 国际化

    Struts 1.2 框架提供的国际化支持使得开发者能够轻松创建支持多语言的应用程序。通过合理利用 Java 的 `Locale`、`ResourceBundle` 和 `MessageFormat` 类,结合 Struts 1.2 的配置和标签库,可以有效地实现软件产品...

    struts1标签和简单程序(实现了国际化)

    3. **国际化(Internationalization, i18n)**: - 使用ResourceBundle创建包含不同语言的属性文件,如`messages_en.properties`(英文)和`messages_zh_CN.properties`(简体中文)。 - 在Struts1的配置文件中...

    配置struts--config.xml详解

    - **message-resources**: 子元素,定义全局消息资源,用于国际化(i18n)。 2. **&lt;form-beans&gt;**: - **form-bean**: 子元素,定义一个表单bean。 - **name**: 表示bean的名称,ActionForm 对象的实例将在请求...

    struts.properties配置详解

    该文件主要用来存储一些Struts2的核心配置属性,通过键值对的方式设置框架的行为模式、国际化设置以及其他高级配置等。 #### struts.properties文件的作用 `struts.properties`文件通常位于项目的`WEB-INF/classes...

    <Struts Web设计与开发大全>电子版

    - 解释了如何创建和配置资源文件,用于国际化和本地化支持。 **2.3 运行结果** - 展示了运行示例应用程序的结果,帮助理解整个流程的工作原理。 **2.4 本章小结** - 总结了如何从零开始构建一个简单的Struts...

    struts2 学习重点笔记

    - **国际化的支持**:支持多语言环境,便于国际化应用。 #### 二、Struts2 核心组件详解 **2.1 模型(Model)** - **功能**:提供业务逻辑和数据访问方法,保存应用程序状态信息。 - **实现技术**:JavaBean 或 EJB...

    struts2讲义

    - 国际化是指让应用程序能够适应不同国家和地区用户的语言习惯。 - Struts2提供了资源文件支持多语言版本的配置,使得应用能够根据用户设置的语言显示相应的内容。 - **1.2.8 SiteMesh页面布局框架简介** - **...

    struts-2.0.11-all.zip

    - **国际化与本地化**:框架内置了对多语言支持的机制,方便创建国际化的应用程序。 - **插件系统**:Struts2的插件机制允许快速集成第三方库和功能,如Ajax、富客户端组件、REST服务等。 总的来说,Struts2.0.11-...

    整合Struts_Hibernate_Spring应用开发详解

    - **Struts的程序国际化** - **国际化所需的资源文件:** `.properties`文件存储不同语言的文字内容。 - **完成Java程序国际化:** 在代码中使用`ResourceBundle`获取资源文件中的值。 - **使用bean标签显示国际...

    struts-2.3.7-src.zip

    - **强大的国际化支持**:通过资源包提供多语言支持,方便全球化的应用开发。 3. **源码分析**: - `struts-2.3.7`目录下包含了Struts 2.3.7的源代码,这为开发者提供了深入理解框架内部工作原理的机会。 - **...

    struts2框架模板

    - **常用拦截器**:包括params(参数预处理)、validation(验证)、i18n(国际化)、logger(日志)等。 5. **快速搭建Struts2项目** - **创建Maven工程**:使用Maven构建工具,添加Struts2依赖。 - **配置web....

    struts-menu例子

    - **国际化支持**:菜单项的文本可以进行国际化处理,适应不同语言环境。 - **样式与主题**:提供了多种预设样式和主题,也可自定义样式以匹配网站设计。 3. **"struts-menu例子2"详解** 这个例子文件包含了使用...

    Java Struts教程

    - **消息标记和国际化**:用于显示国际化消息。 - **逻辑标记**:提供条件判断和循环等功能。 - **HTML标记**:提供一组HTML标签,用于生成HTML表单和其他HTML元素。 - **模板标记**:用于创建可重用的模板。 #### ...

    struts-1.2.9-all-bin

    - 优点:提供了规范化的MVC架构,简化了Web应用开发,支持国际化和验证机制,有丰富的标签库。 - 局限性:相比Struts 2或其他现代框架,Struts 1.x的配置较多,学习曲线较陡峭,对注解支持不充分,且存在性能瓶颈...

Global site tag (gtag.js) - Google Analytics