Struts1.x中利用Ajax動態更新

來源:互聯網
上載者:User

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;  

}   }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.