Struts1.x中利用Ajax動態更新


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>wensm</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;  

}   }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM