首先要把Struts2框架环境搭建成功,大家可以参考我的第一个文章
1.新建两个资源文件
资源文件的内容基本是key-value对,其中key是程序使用的部分,而value是程序的显示部分
资源文件的命名可以是如下3种形式:
baseName_language_country.properties
baseName_language.properties
baseName.properties
ApplicationResources_en_US.properties(英文)
ApplicationResources_zh.properties(中文)
2.编写jsp页面
在这个jsp上测试中英文切换效果,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>信息展示页</title>
</head>
<body>
<!-- 局部定义使用哪一种国际化语音 -->
<s:i18n name="ApplicationResources">
<s:text name="check"></s:text>:
<a href="check.action?request_locale=zh_CN"><s:text name="chinese"></s:text></a>
<a href="check.action?request_locale=en_US"><s:text name="english"></s:text></a>
<br/>
<form action="<%=basePath %>hello.action" method="post">
<table>
<tr>
<td><s:text name="login.username"/></td>
<td><input type="text" name="user.userName"/></td>
</tr>
<tr>
<td><s:text name="login.pwd"/></td>
<td><input type="text" name="user.password"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="<s:text name="login.btn"/>"/></td>
</tr>
</table>
</form>
</s:i18n>
</body>
</html>
这里有一个i18n,他就是Internationalization(国际化)的英文缩写,Internationalization去掉头尾的i和n刚好还剩下18个字符。
3.在struts.xml中配置拦截器和国际化的资源
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="ApplicationResources"/>
<package name="v1" extends="struts-default" namespace="/" >
<action name="check"
class="com.hnpi.action.ChangeLanguageAction">
<result name="success">/index.jsp</result>
</action>
<action name="hello"
class="com.hnpi.action.RegisterAction"
method="t1">
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
4.新建一个ChangeLanguageAction类
新建的类和原来的RegisterAction类在同一个包下,代码如下:
package com.hnpi.action;
public class ChangeLanguageAction {
public String execute(){
return "success";
}
}
5.修改RegisterAction类
package com.hnpi.action;
import com.opensymphony.xwork2.ActionSupport;
public class RegisterAction extends ActionSupport{
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String t1(){
System.out.println(this.getText("login.username"));
return "success";
}
}
最后还是给大家看系效果图: