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 LoginAction extends 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;
var language = document.getElementsByName("language")[0].value;
if(window.XMLHttpRequest)
{
request =new XMLHttpRequest();
}
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);
return request;
}
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
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix= "c"%>
<!-- 嵌套js -->
<script type="text/javascript" src="js/ajax.js"></script>
<html>
<head>
<title>ajax+struts1.2国际化</title>
</head>
<body>
<html:form action="login.do?method=login" method="post">
<table>
<tr>
<td width="60"></td>
<td>
<select name="language" tabindex="30">
<option value="cn" id="cn">中文</option>
<option value="en" id="en">英文</option>
</select>
<html:button property="select" onclick="createXMLHttpRequest(this)"> </html:button>
</td>
</tr>
<tr>
<td><span id="username">用户名:</span></td>
<td><html:text property="username" size="16"/></td>
</tr>
<tr>
<td><span id="password">密 码:</span></td>
<td><html:password property="password" size="18"/></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="登录" name="submit" />
<input type="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.运行结果
中文:
英文