1.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name />
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup><!-- 服務一啟動時就進行執行個體化 -->
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
2.struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<!-- 讓Struts知道Form,提供給Action使用 ,name為Form的引用名,type為所對應的Form類的全名-->
<form-bean name="messageForm" type="com.hollycrm.form.MessageForm">
</form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/message" type="com.hollycrm.action.MessageAction" name="messgeForm">
<forward name="success" path="/index.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>
3.index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<script src="js/create.js" language="javascript">
</script>
</head>
<body>
<font size="2"></font>
姓名:<input type="text" id="name" onblur="sayHello()"><br/>
AJAX返回的值:<span id='hello'></span><br>
</body>
</html>
4.create.js
// 建立XMLHttpRequest對象 function createXMLHttpRequest() {
// 判斷瀏覽器是否通過JavaScript本地方法支援XMLHttpRequest對象
if (window.XMLHttpRequest) { // Mozilla瀏覽器
// 除IE瀏覽器外其他瀏覽器中建立XMLHttpRequest對象的方法
XMLHttpReq = new XMLHttpRequest();
} else { // IE瀏覽器
// 判斷瀏覽器是否支援ActiveX,在IE瀏覽器中是通過ActiveX組件支援XMLHttpRequest對象
if (window.ActiveXObject) { // 在不同版本的IE瀏覽器中,對XMLHttpRequest對象的支援方法有些不同
// 用以下代碼來判斷以適應不同版本的IE瀏覽器
try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) { } } } } }
// 處理伺服器響應請求,對伺服器返回的資訊進行分析處理,並且把分析的結果展示在頁面的指定位置
function handleResponse() {
// 判斷對象狀態,readyState這個屬性描述了請求的狀態,可以取下面的5個值:0(未初始化),1(正在載入),2(已載入),3(互動中),4(已完成)
if (XMLHttpReq.readyState == 4) { // 資訊已經成功返回,開始處理資訊
// status屬性描述了伺服器的狀態代碼,可以是200,404等
if (XMLHttpReq.status == 200) {
var out = "";
// responseXML是伺服器以XML格式返回的響應。
var res = XMLHttpReq.responseXML;
var response = res.getElementsByTagName("response")[0].firstChild.nodeValue;
document.getElementById("hello").innerHTML = response;
// document.getElementsByName("hello").innerHTML=response;
} } }
// 發送用戶端的請求
function sendRequest(url) {
createXMLHttpRequest();
// open(string method,string url,boolean asynch,string name,string password)方法用於建立對伺服器的調用
// 這個方法有5個參數,前兩個參數是必須的,其中method可以是GET或者POST,url是指所要訪問的伺服器資源的位置,aysnch是指非同步訪問伺服器還是同步訪問,預設是非同步訪問,非同步訪問正是Ajax的優勢所在。使用最後兩個參數可以使用指定的使用者名稱和密碼訪問伺服器資源。
XMLHttpReq.open("GET", url, true); // 指定響應函數
// onreadystatechange屬性,每個狀態的改變都會調用這個事件處理器,使用這個屬性可以監聽狀態的變化,並提供對應的處理方法
XMLHttpReq.onreadystatechange = handleResponse;
// 發送請求,send(content)方法向伺服器發送請求,這個方法中的參數會作為請求中的內容發送到伺服器
XMLHttpReq.send(null);
}
// 開始調用Ajax的功能
function sayHello() {
var name = document.getElementById("name").value;
// alert(name);
// 發送請求
sendRequest("message.do?name="+name);
}
5. MessageAction.java
public class MessageAction extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
// MessageForm messageForm=(MessageForm) form;
//設定組建檔案的類型和編碼方式
response.setContentType("text/xml;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter returnValue=response.getWriter();
String output=""; //處理接收到的參數,產生響應的XML文檔
// System.out.println(messageForm.getName());
// System.out.println(request.getParameter("name"));
// if(messageForm.getName().equals("15979089546")){
if(request.getParameter("name").equals("15979089546")){
output="<response>溫盛明</response>";
}else{
output="<response>該使用者不存在</response>";
}
returnValue.print(output);
returnValue.close();
return mapping.findForward("sucess");
} }
6.MessageForm.java
public class MessageForm extends ActionForm{
private String name=null;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }