zoukankan      html  css  js  c++  java
  • Struts2国际化

    有时候我们访问国际性的网站,发现有个语言切换的功能:若选择“简体中文”,页面显示语言为简体中文;若选择“繁体中文”,页面显示语言为繁体中文;若选择“英语”,页面显示语言为英语。

    这是怎么实现的呢?靠配置文件。在这个配置文件里,通常选英语为基础语言,再与别的语言配对,以达到多种语言国际化的目的。

    比如,简体中文国际化的配置文件中的内容是这样的:

    China=中国

    Province=广东

    而繁体中文国际化的配置文件中的内容是这样的:

    China=中國

    Province=廣東

    下面就修改上节课中的程序,来体会一下Struts的国际化流程。

    1 将login.jsp中的“登录页面”改为“loginPage”,“用户名”改为“user”“密码”改为“pass”,改完后的login.jsp中的内容如下:

    [java] view plain copy
     
     
    1. <%@ page language="java" contentType="text/html; charset=GBK"  
    2.     pageEncoding="GBK"%>  
    3. <%@taglib prefix="s" uri="/struts-tags"%>  
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    5. <html>  
    6. <head>  
    7. <meta http-equiv="Content-Type" content="text/html; charset=GBK">  
    8. <title><s:text name="loginPage" /></title>  
    9. </head>  
    10. <body>  
    11.     <s:form action="login">  
    12.         <s:textfield name="username" key="user" />  
    13.         <s:textfield name="password" key="pass" />  
    14.         <s:submit key="login" />  
    15.     </s:form>  
    16. </body>  
    17. </html>  

    2 welcome.jsp中的“成功页面”改为“succPage”,“登录成功!”改为“SuccTip”,并在s:text下面添加一行<s:param>${sessionScope.user}</s:param>

    修改后的内容为:

    [html] view plain copy
     
     
    1. <%@ page language="java" contentType="text/html; charset=GBK"  
    2.     pageEncoding="GBK"%>  
    3. <%@taglib prefix="s" uri="/struts-tags"%>  
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    5. <html>  
    6. <head>  
    7. <title><s:text name="succPage" /></title>  
    8. <meta http-equiv="Content-Type" content="text/html; charset=GBK">  
    9. </head>  
    10. <body>  
    11.     <s:text name="succTip">  
    12.         <s:param>${sessionScope.user}</s:param>  
    13.     </s:text>  
    14.     <br />  
    15. </body>  
    16. </html>  

    这里s:param表示传参,参数的值由${sessionScope.user}决定,这里sessionScope.user表示会话中的user属性。这个user就是login.jsp中的key=”user”,由LoginAction.Java动态提供。

    下面就在LoginAction.java中添加user的值。具体是在return “success”之前添加代码:

    ActionContext.getContext().getSession().put("user" , getUsername());

        

      添加完后,整个LoginAction.java中的代码为:

    [java] view plain copy
     
     
    1. package com.example.action;  
    2.   
    3. import com.opensymphony.xwork2.ActionContext;  
    4. import com.opensymphony.xwork2.ActionSupport;  
    5.   
    6. public class LoginAction extends ActionSupport  
    7. {  
    8.     private static final long serialVersionUID = 1L;  
    9.   
    10.     private String username;  
    11.     private String password;  
    12.       
    13.     public String getUsername()  
    14.     {  
    15.         return username;  
    16.     }  
    17.     public void setUsername(String username)  
    18.     {  
    19.         this.username = username;  
    20.     }  
    21.       
    22.     public String getPassword()  
    23.     {  
    24.         return password;  
    25.     }  
    26.     public void setPassword(String password)  
    27.     {  
    28.         this.password = password;  
    29.     }  
    30.     //定义处理用户请求的execute方法  
    31.     public String execute() throws Exception  
    32.     {  
    33.         if (getUsername().equals("zheng") && getPassword().equals("123456") )  
    34.         {  
    35.             ActionContext.getContext().getSession()  
    36.             .put("user" , getUsername());  
    37.             return "success";  
    38.         }  
    39.         else  
    40.         {  
    41.             return "error";  
    42.         }  
    43.     }  
    44. }  

    3 error.jsp中的“失败页面”改为“errorPage”,“登录失败”改为“failTip”,改完后的内容为:

    [java] view plain copy
     
     
    1. <%@ page language="java" contentType="text/html; charset=GBK"  
    2.     pageEncoding="GBK"%>  
    3. <%@taglib prefix="s" uri="/struts-tags"%>  
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    5. <html>  
    6. <head>  
    7.     <title><s:text name="errorPage"/></title>  
    8.     <meta http-equiv="Content-Type" content="text/html; charset=GBK">  
    9. </head>  
    10. <body>  
    11.     <s:text name="failTip"/>  
    12. </body>  
    13. </html>  

    4 在struts.xml中指定全局国际化资源文件

    <constant name="struts.custom.i18n.resources" value="zh"/>

    添加后的struts.xml中的内容如下:

    [html] view plain copy
     
     
    1. <?xml version="1.0" encoding="GBK"?>  
    2. <!DOCTYPE struts PUBLIC  
    3.     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"  
    4.     "http://struts.apache.org/dtds/struts-2.1.7.dtd">  
    5. <!-- 指定Struts 2配置文件的根元素 -->  
    6. <struts>  
    7.     <!-- 指定全局国际化资源文件 -->  
    8.     <constant name="struts.custom.i18n.resources" value="zh"/>  
    9.     <!-- 指定国际化编码所使用的字符集 -->  
    10.     <constant name="struts.i18n.encoding" value="GBK" />  
    11.   
    12.     <!-- 所有的Action定义都应该放在package下 -->  
    13.     <package name="action" extends="struts-default">  
    14.         <action name="login" class="com.example.action.LoginAction">  
    15.             <!-- 定义三个逻辑视图和物理资源之间的映射 -->  
    16.             <result name="error">/error.jsp</result>  
    17.             <result name="success">/welcome.jsp</result>  
    18.         </action>  
    19.     </package>  
    20.       
    21. </struts>  

        上面value=”zh”指定了国际化资源文件的名称为zh,所以我们还应该在src目录下新建一个配置属性文件zh.properties,内容如下:

    [html] view plain copy
     
     
    1. loginPage=登录页面  
    2. errorPage=错误页面  
    3. succPage=成功页面  
    4. failTip=对不起,您不能登录!  
    5. succTip=欢迎,{0},您已经登录!  
    6. User=用户名  
    7. Pass=密码  
    8. Login=登录  

    因为编码格式的原因(properties文件的编码格式为ISO-8859-1),上述的内容在properties文件中会显示成:

    [html] view plain copy
     
     
    1. loginPage=u767Bu5F55u9875u9762  
    2. errorPage=u9519u8BEFu9875u9762  
    3. succPage=u6210u529Fu9875u9762  
    4. failTip=u5BF9u4E0Du8D77uFF0Cu60A8u4E0Du80FDu767Bu5F55uFF01  
    5. succTip=u6B22u8FCEuFF0C{0}uFF0Cu60A8u5DF2u7ECFu767Bu5F55uFF01  
    6. User=u7528u6237u540D  
    7. Pass=u5BC6u7801  
    8. Login=u767Bu5F55  

     

    5 配置完成后,运行程序。

    右击login.jsp-->Run As-->Run on Server,运行结果为:

    输入用户名“zheng”和密码“123456”,跳转到登录成功的页面:

    退回登录页面,输入错误的用户名或密码,或什么都不输入,跳转到登录失败的页面:

  • 相关阅读:
    Unity3D写雷电游戏修改飞机尾部火焰
    随机生成路径(二)
    Unity3D写雷电游戏(四)
    maven package,clean,install,compile命令
    asp.net 有什么框架,有什么技术
    牛腩购物29:用户中心订单页面制作,com+事务的运用(Transactions/TransactionScope)
    牛腩购物网30:用户中心其他功能制作(获取购物的总金额,判断用户是 普通会员还是VIP会员,用户申请VIP)
    asp.net 事务的处理,dts 的设置,asp.net三种事务处理方法,三层架构,微软企业库,动软生成器生成的代码下如何使用事务
    牛腩购物网28:购物车中商品转换为订单,asp.net 页面间传值,asp.net 事务,ToString("D5")填充到5位数,同时插入订单表和订单详情表
    hdu1016 prime ring problem
  • 原文地址:https://www.cnblogs.com/grimm/p/6732715.html
Copyright © 2011-2022 走看看