一,基本的国际化
步骤1:配置struts国际化
在struts-config.xml中配置message-resources标签
<message-resource parameter="MessageResource"/>
其中的参数是国际化配置文件MessageResource.properties的文件名。
步骤2:提供国际化配置文件
中文:MessageResource_zh_cn.properties
英文:MessageResource_en_us.properties
源文件:resource.properties表示中文信息
在源文件resource.properties中硬编码中文信息
user.title=用户登录
user.username=用户
user.password=密码
user.button.login=登录
然后用java中提供的工具把这些信息转换为unicode放到相应国际化文件中。
MessageResource_zh_cn.properties文件中
user.title=\u7528\u6237\u767b\u5f55
user.username=\u7528\u6237
user.password=\u5bc6\u7801
user.button.login=\u767b\u5f55
MessageResource_en_us.properties文件中
user.title=User Login
user.username=User Name
user.password=Password
user.button.login=Login
步骤3:在jsp页面上用struts标签<bean:message>来读取国际化消息文本
引入标签:
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
<form action="login.do" method="post">
<bean:message key="user.username"/>:<input type="text" name="username"><br>
<bean:message key="user.password"/>:<input type="password" name="password"><br>
<input type="submit" value="<bean:message key="user.button.login"/>">
</form>
bean:message中的属性key指的是国际化文件中的键。
一个local对应一个session
二,国际化的切换
jsp页面:
<a href="changelang.do?lang=zh">中文</a>   <a href="changelang.do?lang=en">英文</a>
添加一个Action:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String lang = request.getParameter("lang");
//得到Locale
Locale currentLocale = Locale.getDefault();
if ("zh".equals(lang)) {
//自定义Locale
currentLocale = new Locale("zh", "CN");
}else if("en".equals(lang)) {
currentLocale = new Locale("en", "US");
}
//自己设置Locale
//request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);
//调用struts中提供的方法设置Locale
this.setLocale(request, currentLocale);
return mapping.findForward("index");
}
配置国际化action:
<action path="/changelang"
type="com.bjsxt.struts.ChangeLanguageAction"
>
<forward name="index" path="/index.jsp"/>
</action>
<message-resources parameter="res.MessageResources" />
res.MessageResources表示的是res包下的MessageResources文件。
三,动态信息的国际化
如果是与后台交互的数据,那么在国际化文件中就用占位符进行配置
resource.properties源文件:
user.login.success={0},登录成功
user.not.found=用户不能找到,用户名称=[{0}]
user.password.error=密码错误
user.login.error=登录失败
MessageResource_zh_cn.properties文件:
user.login.success={0},\u767b\u5f55\u6210\u529f
user.not.found=\u7528\u6237\u4e0d\u80fd\u627e\u5230\uff0c\u7528\u6237\u540d\u79f0=[{0}]
user.password.error=\u5bc6\u7801\u9519\u8bef
user.login.error=\u767b\u5f55\u5931\u8d25
MessageResource_en_us.properties文件:
user.login.success={0},Login Success
user.not.found=User Not Found,UserName[{0}]
user.password.error=Password Error
user.login.error=Login Error
Action中的代码:
package com.bjsxt.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
/**
* 用户登录的Action
* @author Administrator
*
*/
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginActionForm laf = (LoginActionForm)form;
String username = laf.getUsername();
String password = laf.getPassword();
ActionMessages messages = new ActionMessages();
try {
UserManager.getInstance().login(username, password);
//创建国际化消息文本
ActionMessage message = new ActionMessage("user.login.success", username);
//ActionMessage message = new ActionMessage("user.login.success", new Object[]{username});//其中Object数组表示的是占位符
messages.add("loginSuccess1", message);
ActionMessage message1 = new ActionMessage("user.login.success", username);
messages.add("loginSuccess2", message1);
//传递国际化消息文本
this.saveMessages(request, messages);
return mapping.findForward("success");
}catch(UserNotFoundException unfe) {
unfe.printStackTrace();
//创建国际化消息文本
ActionMessage message = new ActionMessage("user.not.found", username);
messages.add("error1", message);
//传递国际化消息文本
this.saveErrors(request, messages);
}catch(PasswordErrorException pee) {
pee.printStackTrace();
//创建国际化消息文本
ActionMessage message = new ActionMessage("user.password.error");
messages.add("error2", message);
//传递国际化消息文本
this.saveErrors(request, messages);
}
return mapping.findForward("error");
}
}
一个ActionMessage表示一条国际化信息。
Action配置:
<message-resources parameter="res.MessageResources" />
相关推荐
以下是关于Struts1.x国际化的一些核心知识点: 1. **资源包(Resource Bundle)**: - 在Java中,资源包是包含本地化字符串和其他可配置资源的文件。对于Struts1,这些通常以`.properties`格式存储,例如`messages...
在Struts1.x中实现国际化,开发者需要进行一系列配置和编码工作。 首先,我们需要了解如何在Struts1.x中设置国际化资源文件。这些文件通常是.properties格式,例如`messages_en.properties`(英语版本)和`messages...
6. **国际化与本地化**: - **Struts1.x** 需要在配置文件中指定资源文件路径,处理本地化信息。 - **Struts2.x** 使用更灵活的资源包加载机制,支持基于Action的资源文件加载,更加方便。 7. **配置方式**: - ...
6. **国际化与本地化**:Struts1.x支持多语言环境,通过Resource Bundle管理和message.properties文件实现动态加载不同语言的文本资源,提供本地化服务。 7. **Tiles框架**:Tiles是Struts1.x的一个插件,用于构建...
8. **国际化与本地化**:Struts1.x支持多语言,通过资源包(properties文件)来实现。你可以为不同的语言创建不同的资源配置文件,Struts会根据用户的浏览器设置自动选择。 9. **异常处理**:Struts1.x提供了异常...
7. **国际化和本地化**:Struts 1.x 支持多语言和文化环境,通过Resource Bundles管理不同地区的文本资源,方便实现国际化。 8. **异常处理**:通过配置全局异常处理,Struts 1.x 可以捕获并处理应用程序中抛出的...
**I18N国际化:** 在Struts1.x中,实现I18N(Internationalization)主要是通过资源文件(如*.properties)来管理不同语言的文本。这些文件按照语言和地区进行组织,例如,`message_en.properties`用于英文,`...
**国际化资源文件**:为了支持多语言环境,可以通过在`struts.properties`文件中配置`Struts.custom.i18n.resources`属性来指定资源文件。资源文件可以分为全局资源文件、包级别的资源文件和类级别的资源文件。当...
7. **国际化和本地化**:Struts1.x支持多语言,通过资源文件实现不同地区的文本和日期格式。 8. **异常处理**:通过配置ExceptionMapping,可以全局地处理应用程序中抛出的异常,提高程序的健壮性。 9. **...
6. **国际化和本地化**:购物网站通常需要支持多语言,Struts1.x提供了资源包(Resource Bundle)机制,用于实现应用程序的国际化和本地化。 7. **数据持久化**:购物网站涉及大量的数据库操作,Struts1.x与...
5. **国际化与本地化**:Struts1.x支持国际化和本地化,允许你为不同的语言和地区提供不同的资源文件,以便呈现多语言的用户界面。 6. **异常处理**:通过`global-exceptions`配置,Struts1.x可以捕获并处理全局...
3. **配置文件**:`struts-config.xml`是Struts1.x的核心配置文件,用于定义Action、ActionForm、ActionForward等元素,以及数据源和国际化资源等。 二、ActionForm与数据绑定 1. **ActionForm**:ActionForm对象...
### Struts1.x 入门知识点详解 #### 一、Struts 概念与起源 Struts 是一款基于 Java 的开源 ...接下来,你可以继续探索更多关于 Struts 的高级特性,如拦截器、国际化支持等,以进一步提升开发效率和应用程序的质量。
- Struts1.x支持多语言环境,可能讲解了如何配置资源文件和国际化标签来实现动态语言切换。 8. **安全与性能优化**: - SQL注入防护,如使用预编译的SQL语句。 - 数据库连接的管理,确保在不使用时关闭连接,...
- **Struts1.x** 的国际化支持相对简单,通过资源包处理。 - **Struts2** 继承并增强了这一功能,支持更复杂的本地化策略。 7. **配置管理** - **Struts1.x** 的配置主要集中在struts-config.xml文件中,配置...
`Struts 1.x` 支持多语言环境,通过资源包(Resource Bundle)实现国际化和本地化。开发者可以在不同的语言环境下提供不同版本的消息和标签。 ### 6. JSP标签库 `Struts 1.x` 提供了一套强大的JSP标签库,如 `...
Struts1.x支持国际化和本地化,可以通过资源文件(properties文件)管理不同语言的文本,根据用户的浏览器设置动态加载相应的资源文件。 **8. 组件重用** Struts1.x的Tiles框架允许开发者定义可重用的页面布局...
总结起来,Struts2在设计模式、配置方式、数据绑定、异常处理、视图渲染、插件体系、国际化、测试友好和性能等方面都对Struts1.x进行了显著的改进。这些改进使得Struts2更适合现代Web开发的需求,也更便于团队协作和...