<html>
<head>
<title>Struts2中原始AJAX技术应用测试</title>
</head>
<body>
<h2>Struts2中原始AJAX技术应用测试</h2>
<hr>
<script language="javascript">
//定义一个变量用于存放XMLHttpRequest对象
var xmlHttp;
//该函数用于创建一个XMLHttpRequest对象
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
//这是一个启动AJAX异步通信的方法
function getServerTime(){
var now = new Date();
//创建一个XMLHttpRequest对象
createXMLHttpRequest();
//将状态触发器绑定到一个函数
xmlHttp.onreadystatechange = processServerTime;
//通过GET方法向指定的URL建立服务器的调用,加个临时参数,以便标识一个全新的请求
xmlHttp.open("GET", "ajax_getServerTime.action?tmp="+now.getTime());
//发送请求
xmlHttp.send(null);
}
//这是一用来处理状态改变的函数
function processServerTime(){
//定义一个变量用于存放从服务器返回的响应结果
var responseContext;
if(xmlHttp.readyState == 4) { //如果响应完成
if(xmlHttp.status == 200) {//如果返回成功
//取出服务器的响应内容
responseContext = xmlHttp.responseText;
document.getElementById("servertime").innerHTML=responseContext;
}
}
}
//这是一个启动AJAX异步通信的方法
function ajaxLogin(){
var ln = document.getElementById("loginname").value;
var lp = document.getElementById("loginpwd").value;
//创建一个XMLHttpRequest对象
createXMLHttpRequest();
//将状态触发器绑定到一个函数
xmlHttp.onreadystatechange = processAjaxLogin;
//通过GET方法向指定的URL建立服务器的调用
xmlHttp.open("GET", "ajax_ajaxLogin.action?loginname="+ln+"&loginpwd="+lp);
//发送请求
xmlHttp.send(null);
}
//这是一用来处理状态改变的函数
function processAjaxLogin(){
//定义一个变量用于存放从服务器返回的响应结果
var responseContext;
if(xmlHttp.readyState == 4) { //如果响应完成
if(xmlHttp.status == 200) {//如果返回成功
//取出服务器的响应内容
responseContext = xmlHttp.responseText;
alert(responseContext);
}
}
}
</script>
1、服务端的系统时间:<span id="servertime"></span><input type="button" value="获取服务端时间" οnclick="getServerTime()"/><br/>
2、登录帐号:<input type="text" id="loginname"/> 登录密码:<input type="password" id="loginpwd"/> <input type="button" value="异步登录" οnclick="ajaxLogin()"/><br/>
</body>
</html>
以上是 oldajax.html
<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 设置Web应用的默认编码集为gbk -->
<constant name="struts.i18n.encoding" value="gbk"/>
<!-- 设置Web应用的默认Locale为zh_CN -->
<constant name="struts.locale" value="zh_CN" />
<!-- 设置Struts2应用的国际化资源文件,多个文件中间可用逗号分隔 -->
<constant name="struts.custom.i18n.resources" value="messageResource"/>
<!-- 设置Struts2应用是否处于开发模式,通常在开发调试阶段设为true,正式上线后可设为false -->
<constant name="struts.devMode" value="true" />
<!-- 设置Struts2的默认主题为simple -->
<constant name="struts.ui.theme" value="simple" />
<package name="test" extends="struts-default">
<!-- 定义全局result -->
<global-results>
<!-- 定义名为exception的全局result -->
<result name="exception">/exception.jsp</result>
</global-results>
<!-- 定义全局异常映射 -->
<global-exception-mappings>
<!-- 捕捉到Exception异常(所有异常)时跳转到exception所命名的视图上 -->
<exception-mapping exception="java.lang.Exception" result="exception"/>
</global-exception-mappings>
<!-- 配置Struts2中AJAX应用演示业务控制器的映射 -->
<action name="ajax_*" class="com.test.struts.AjaxAction" method="{1}">
<!-- 配置SUCCESS视图 -->
<result/>
</action>
<!-- 配置Struts2中登录验证业务控制器LoginAction -->
<action name="login" class="com.test.struts.LoginAction">
<!-- 配置INPUT视图 -->
<result name="input">/login.jsp</result>
<!-- 配置SUCCESS视图 -->
<result>/loginSuccess.jsp</result>
</action>
</package>
<!-- 定义供异步调用的包 -->
<package name="ajax" extends="json-default">
<!-- 配置Struts2中JSON插件应用演示业务控制器的映射 -->
<action name="json_ajaxServerTime" class="com.test.struts.JsonAjaxAction" method="ajaxServerTime">
<!-- 配置SUCCESS视图 -->
<result type="json">
<!-- 指定需要以JSON对象返回的当前Action属性 -->
<param name="includeProperties">serverTime</param>
</result>
</action>
<action name="json_ajaxLogin" class="com.test.struts.JsonAjaxAction" method="ajaxLogin">
<!-- 配置SUCCESS视图 -->
<result type="json">
<!-- 指定需要以JSON对象返回的当前Action属性 -->
<param name="includeProperties">responseText</param>
</result>
</action>
</package>
</struts>
以上是 struts.xml
package com.test.struts;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.servlet.http.*;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
/** Struts2中AJAX应用演示业务控制器 */
public class AjaxAction extends ActionSupport{
/** 处理原始的AJAX请求:读取服务端系统时间 */
public String getServerTime(){
try {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
//取得当前Action的原始PrintWriter对象,以便直接输出响应结果,而不用跳转到某个视图
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("gbk");
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
//直接输出响应内容
out.println(sd.format(new Date()));
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;//不需要跳转到某个视图,因为上面已经有了直接的输出响应结果
}
/** 处理原始的AJAX请求:异步登录 */
public String ajaxLogin(){
try {
String responseText = "";
//读取请求参数
HttpServletRequest request = ServletActionContext.getRequest();
String loginname = request.getParameter("loginname");
String loginpwd = request.getParameter("loginpwd");
//进行登录验证
if (loginname==null||loginname.trim().length()<1){
responseText = "对不起,登录帐号不能为空!";
}else if(loginpwd==null||loginpwd.trim().length()<1){
responseText = "对不起,登录密码不能为空!";
}else{
if (loginname.equalsIgnoreCase("admin")&&loginpwd.equals("123456")){
responseText = "恭喜您,异步登录成功!";
}else{
responseText = "对不起,异步登录失败!";
}
}
//取得当前Action的原始PrintWriter对象,以便直接输出响应结果,而不用跳转到某个视图
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("gbk");
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
//直接输出响应内容
out.println(responseText);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;//不需要跳转到某个视图,因为上面已经有了直接的输出响应结果
}
}
以上是 AjaxAction.java