Struts2国际化实例(点击按钮实现中英文登陆页面的切换)

相关原理:

用不同国家的语言描述相同的信息,并放在各自对应的.properties属性文件中,程序根据运行时环境决定加载哪个文件。

整体项目结构要注意:

(jar包位置不要放错)

1.新建一个项目Struts2Demo。

2.在src下新建两个资源文件。

为了实现程序的国际化,必须先提供程序所需要的资源文件。资源文件的内容基本是key-value对,其中key是程序使用的部分,而value是程序的显示部分。

message_en_US.properties(英文)

也可以这样用代码呈现

login.username=username
login.pwd=password
login.btn=login
check=Please check your language
chinese=chinese
english=english

message_zh_CN.properties(中文)

 

同样也可以这样用代码呈现

login.username=\u7528\u6237\u540D
login.pwd=\u5BC6\u7801
login.btn=\u767B\u5F55
check=\u8BF7\u9009\u62E9\u8BED\u8A00
chinese=\u4E2D\u6587
english=\u82F1\u6587

(其实关于国际化属性文件名的定义不仅仅可以在 struts.properties 中定义,也可以在 struts.xml 和 web.xml 这两个配置文件中定义。这里不做介绍。)

3.新建两个jsp页面。

index.jsp

   (1)这里有一个i18n,他就是Internationalization(国际化)的英文缩写(Internationalization去掉头尾的i和n刚好还剩下18个字符)。它的使用目的就是在 Action 执行前查看 Session 中的 request_locale 参数的值是什么。如果是“ zh_CN ”它就将之后执行的所有 Action 的语言环境设置为中文语言环境。如果是“ en_US ”则是英文语言环境。

   (2)新增两处按钮(中文|英文),其实是两处连接,实现切换语言功能。也可用以下标签实现按钮
               <s:radioname="" list="" listKey=""listValue=""></s:radio>

   (3)当要使用struts2的标签时,应引入taglib。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  
  <body>
    <!-- 局部定义使用哪一种国际化语音 -->
   <s:i18n name="message">  
   <s:text name ="check" ></s:text><br />
   <button><a href="check.action?request_locale=zh_CN">
   		<s:text name="chinese"></s:text>
	</a></button>
    <button><a href="check.action?request_locale=en_US">
    	<s:text name="english"></s:text>
   	</a></button>
    <br/>
   <form action="<%=basePath%>login.action" method="post">
             <table>
               <tr>
               <!--s标签里的东西name要和properties文件里面的一致-->
                 <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>

welcome.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">    
    <title>欢迎页面</title>
</head>
<body>
   欢迎您! 
</body>
</html>

4.java包的导入

5.在src下新建LoginAction.java和ChangeLanguageAction.java

    LoginAction.java

package com.hnpi.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction  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 execute(){
		return "success";
	}


}

    ChangeLanguageAction.java(这里对登录不做过多处理,直接登陆成功。)

package com.hnpi.action;

public class ChangeLanguageAction {
	public String execute(){
		return "success";
	}

}

6.两个配置文件web.xml和struts.xml的配置

   web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
          <filter-name>struts2</filter-name>
          <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  
  <filter-mapping>
           <filter-name>struts2</filter-name>
           <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

   struts.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE struts PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
    "http://struts.apache.org/dtds/struts-2.0.dtd">  
<struts>  
<!--  配置拦截器和国际化的资源-->
<!--name必须是这样写,调用它自带的资源,value和Properties的文件前缀一致,如message_en_US.properties -->
    <constant name ="struts.costom.i18n.resources" value="message"></constant>
    <package name="name" namespace="/" extends="struts-default">  
        <action name="check" class="com.hnpi.action.ChangeLanguageAction">  
             <result name="success">/index.jsp</result>   
        </action>
        
        <action name="login" class="com.hnpi.action.LoginAction" method="execute">
        <result name="success">/welcome.jsp</result>
        
        </action>
    </package>   
</struts> 

7.运行效果

    效果图1:

    效果图2:

    效果图3:

我们通过运行效果可以看到,已经成功实现了中英文切换,不同语言的切换只需要提供不同国家的语言资源文件即可。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值