Struts1实现登陆国际化

来源:互联网 发布:口口网络用语什么意思 编辑:程序博客网 时间:2024/06/06 01:38

package com.demo.struts.action;

import java.io.IOException;

import java.io.PrintWriter;

import java.lang.reflect.Method;

import java.util.Locale;

import java.util.ResourceBundle;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.actions.DispatchAction;

import com.demo.struts.form.LoginForm;

/**

 *继承DispathAction:将客户端请求进行分发

 *1.struts-config.xml-->action中添加parameter="method"属性

 *2.必须重写MethodgetMethod(Stringmethod)

 *@author

 */

publicclass LoginActionextends DispatchAction {

 

    public ActionForward login(ActionMapping mapping, ActionForm form,

           HttpServletRequest request, HttpServletResponse response) {

       LoginForm loginForm = (LoginForm) form;//TODO Auto-generated method stub

        String username = loginForm.getUsername();

        String password = loginForm.getPassword();

        if(username !=null && password !=null && !"".equals(username) && !"".equals(password))

        {

            return mapping.findForward("success");

        }

        else

        {

            return mapping.findForward("error");

        }

      

    }

 

    public ActionForward selectLanguage(ActionMapping mapping, ActionForm form,

           HttpServletRequest request, HttpServletResponse response)throws IOException {

       //简单处理一下字符(建议创建过滤器实现Filter接口,对字符进行处理)

        request.setCharacterEncoding("UTF-8");

       response.setCharacterEncoding("UTF-8");

       PrintWriter out = response.getWriter();

       String language = request.getParameter("language");

       Locale locale = null;

       ResourceBundle rb = null;

       if(language !=null && !"".equals(language))

           locale = new Locale("");

       else

           locale = Locale.getDefault();

       if(language.equals("en"))

        rb = ResourceBundle.getBundle("struts_us_en",locale);

       else

        rb = ResourceBundle.getBundle("struts_zh_cn",locale);

       

        //读取上面资源文件中的数据(key-value)

        String un = rb.getString("username");

        String pn = rb.getString("password");

        String sn = rb.getString("submit");

        String cn = rb.getString("cancel");

        String lc = rb.getString("cn");

        String le = rb.getString("en");

        String select = rb.getString("select");

        String value =lc+","+le+","+select+","+un+","+pn+","+sn+","+cn;

        out.println(value);

       returnnull;

    }

 

    /**

     *重写父类的getMethod()方法

     */

    protected Method getMethod(String method)throws NoSuchMethodException {

       returnsuper.getMethod(method);

    }

}

2.ajax.js

function createXMLHttpRequest()

{

    var request = false;

    varlanguage = document.getElementsByName("language")[0].value;

    if(window.XMLHttpRequest)

    {

       request =newXMLHttpRequest();

    }

    else if(window.ActiveXObject)

    {

       try{

           request =new ActiveXObject("Msxml2.XMLHTTP");

       }

       catch(ex1){

           try{

              request =new ActiveXObject("Microsoft.XMLHTTP");

           }

           catch(ex2){

              request =false;

           }

       }

    }

    request.open("get","http://localhost:18888/struts1.2/login.do?method=selectLanguage&language="+language,true);

    request.onreadystatechange = callback(request);

    request.send(null);

    returnrequest;

}

function callback(request)

{

    return function()

    {

       if(request.readyState == 4)

       {

           if (request.status == 200)

            {

                var value = request.responseText;

                var array = value.split(',');

                document.getElementById("cn").innerHTML=array[0];

                document.getElementById("en").innerHTML=array[1];

                document.getElementsByName("select")[0].value=array[2];

                document.getElementById("username").innerHTML=array[3];

                document.getElementById("password").innerHTML=array[4];

                document.getElementsByName('submit')[0].value=array[5];

                document.getElementsByName('reset')[0].value=array[6];

            }

       }

    }

}

 

3.login.jsp

<%@ pagelanguage="java"pageEncoding="UTF-8"%>

<%@ tagliburi="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%>

<%@ tagliburi="http://jakarta.apache.org/struts/tags-html"prefix="html"%>

<%@ tagliburi="http://java.sun.com/jsp/jstl/core"prefix= "c"%>

<!-- 嵌套js -->

<scripttype="text/javascript"src="js/ajax.js"></script>

<html>

    <head>

       <title>ajax+struts1.2国际化</title>

    </head>

    <body>

       <html:formaction="login.do?method=login"method="post">

           <table>

              <tr>

                  <tdwidth="60"></td>

                  <td>

                     <select name="language"tabindex="30">

                         <optionvalue="cn"id="cn">中文</option>

                         <optionvalue="en"id="en">英文</option>

                     </select>

                      

                     <html:buttonproperty="select"onclick="createXMLHttpRequest(this)">                  </html:button>

                  </td>

              </tr>

              <tr>

                  <td><spanid="username">用户名:</span></td>

                  <td><html:textproperty="username"size="16"/></td>

              </tr>

              <tr>

                  <td><spanid="password">  :</span></td>

                  <td><html:passwordproperty="password"size="18"/></td>

              </tr>

              <tr>

                  <td></td>

                  <td>

                     <inputtype="submit"value=""name="submit"/>

                      

                     <inputtype="reset"value=""name="reset"/>

                  </td>

              </tr>

           </table>

       </html:form>

    </body>

</html>

  4.properties:中文与英文

   struts_zh_cn.properties:

   username=\u7528\u6237\u540d:
   password=\u5bc6      \u7801:
   submit=\u767b \u5f55
   cancel=\u53d6 \u6d88
   select=\u8bf7\u9009\u62e9
   cn=\u4e2d\u6587
   en=\u82f1\u6587
   msg=\u60a8\u597d,{0}! \u4eca\u5929\u662f {1}

   struts_us_en.properties:

   username=username:
   password=password:
   submit=submit
   cancel=cancel
   select=select
   cn=Chinese
   en=English
   msg=Hello,{0}! Today is {1}

 5.运行结果

   中文:

   英文

原创粉丝点击