实践了一下书上的 Ajax实例 没有得到应有的效果
index.jsp页面 得到name password的值
用XMLHttpRequest对象和Action交互
理论效果应该是页面的一部分进行更新 然而结果却返回了success页面
主要代码如下:
分别是 页面 拦截器 和Action的代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>Insert title here</title>
<sx:head/>
<script type="text/javascript">
var XHR = false;
function CreateXHR() {
try {
XHR = new ActiveXObject("msxml2.XMLHTTP");
} catch (e1) {
try {
XHR = new ActiveXObject("microsoft.XMLHTTP");
} catch (e2) {
try {
XHR = new XMLHttpRequest();
} catch (e3) {
XHR = false;
}
}
}
}
function sendRequest() {
CreateXHR();
if (XHR) {
var name = document.getElementById("name").value;
var password = document.getElementById("password").value;
var uri = "http://localhost:8080/StrutsDemo/login.action?name=" + name + "&password=" + password;
XHR.open("GET", uri, true);
alert(1);
XHR.onreadystatechange = resultHander;
alert(2);
XHR.send(null);
alert(3);
}
}
function resultHander() {
if (XHR.readyState == 4 && XHR.status == 200) {
alert(4);
alert(XHR.responseText);
alert(5);
}
}
</script>
</head>
<body>
<center>
Name:<input type="text" id="name"/><br/>
password:<input type="password" id="password"/><br/>
<input type="button" value="ok" onclick="sendRequest();"/>
</center>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="Struts_AJAX_DEMO" namespace="/" extends="struts-default">
<action name="login" class="com.action.LoginAction">
<result>/success.jsp</result>
</action>
</package>
</struts>
package com.action;
import javax.servlet.http.HttpServletResponse;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.SystemMenuBar;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute() throws Exception{
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/xml;charset=UTF-8");
response.setHeader("Cache-Control","no-cache");
response.getWriter().println("success");
if(name.equals("tom")&&password.equals("123"))
{
response.getWriter().println("welcome login!");
}else{
response.getWriter().println("error,palease input again!");
}
return SUCCESS;
}
}