pingpang

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            21 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks

          網(wǎng)頁自動刷新功能在web網(wǎng)站上已經(jīng)屢見不鮮了,如即時新聞信息,股票信息等,都需要不斷獲取最新信息。在傳統(tǒng)的web實現(xiàn)方式中,想要實現(xiàn)類似的效果,必須進行整個頁面的刷新,在網(wǎng)絡(luò)速度受到一定限制的情況下,這種因為一個局部變動而牽動整個頁面的處理方式顯得有些得不償失。Ajax技術(shù)的出現(xiàn)很好的解決了這個問題,利用Ajax技術(shù)可以實現(xiàn)網(wǎng)頁的局部刷新,只更新指定的數(shù)據(jù),并不更新其他的數(shù)據(jù)。
             現(xiàn)在創(chuàng)建一個實例,以演示網(wǎng)頁的自動刷新功能,該實例模擬火車侯票大廳的顯示字幕。

          1,服務(wù)器端代碼


          該實例服務(wù)器端代碼的功能比較簡單,即產(chǎn)生一個隨機數(shù),并以XML文件形式返回給客戶端。打開記事本,輸入下列代碼:

          <%@ page contentType="text/html; charset=gb2312" %>
          <%
          response.setContentType(
          "text/xml; charset=UTF-8");//設(shè)置輸出信息的格式及字符集
          response.setHeader(
          "Cache-Control","no-cache");
          out.println(
          "<response>"); 
          for(int i=0;i<2;i++){
              out.println(
          "<name>"+(int)(Math.random()*10)+"</name>");
              out.println(
          "<count>" +(int)(Math.random()*100)+ "</count>");
          }
          out.println(
          "</response>");
          out.close();
          %> 

           


          保存上述代碼,名稱為auto.jsp。在該文件中,使用java.lang包中的Math類,產(chǎn)生一個隨機數(shù)。

          2,客戶端代碼


          本實例客戶端代碼主要利用服務(wù)器端返回的數(shù)字,指定顯示樣式。打開記事本,輸入下列代碼

          <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
          <head>
          <META http-equiv=Content-Type content="text/html; charset=gb2312">
          </head>
          <script language="javascript">


          var XMLHttpReq;
            
          //創(chuàng)建XMLHttpRequest對象       
              function createXMLHttpRequest() {
            
          if(window.XMLHttpRequest) { //Mozilla 瀏覽器
             XMLHttpReq = new XMLHttpRequest();
            }
            
          else if (window.ActiveXObject) { // IE瀏覽器
             try {
              XMLHttpReq 
          = new ActiveXObject("Msxml2.XMLHTTP");
             } 
          catch (e) {
              
          try {
               XMLHttpReq 
          = new ActiveXObject("Microsoft.XMLHTTP");
              } 
          catch (e) {}
             }
            }
           }
           
          //發(fā)送請求函數(shù)
           function sendRequest() {
            createXMLHttpRequest();
                  
          var url = "auto.jsp";
            XMLHttpReq.open(
          "GET", url, true);
            XMLHttpReq.onreadystatechange 
          = processResponse;//指定響應(yīng)函數(shù)
            XMLHttpReq.send(null);  // 發(fā)送請求
           }
           
          // 處理返回信息函數(shù)
              function processResponse() {
               
          if (XMLHttpReq.readyState == 4) { // 判斷對象狀態(tài)
                   if (XMLHttpReq.status == 200) { // 信息已經(jīng)成功返回,開始處理信息
              DisplayHot();
              setTimeout(
          "sendRequest()"1000);
                      } 
          else { //頁面不正常
                          window.alert("您所請求的頁面有異常。");
                      }
                  }
              }
              
          function DisplayHot() {
               
          var name = XMLHttpReq.responseXML.getElementsByTagName("name")[0].firstChild.nodeValue;
               
          var count = XMLHttpReq.responseXML.getElementsByTagName("count")[0].firstChild.nodeValue;

                     document.getElementById(
          "cheh").innerHTML = "T-"+name+"次列車"
              document.getElementById(
          "price").innerHTML = count+""
           }


          </script> 
          <body onload =sendRequest()>
          <table style="BORDER-COLLAPSE: collapse" borderColor=#5555555 cellSpacing=0 cellPadding=0 width=200     border=0>

          <TR>
             <TD align=middle bgColor=#abc2d0 height=19 colspan="2"><B>開往北京的列車</B> </TD>
          </TR>
          <tr>
             <td height="20"> 車號:</td>
             <td height="20" id="cheh"> </td>
          </tr>
          <tr>
             <td height="20"> 價格:</td>
             <td height="20" id="price"> </td>
          </tr>
          </table> 
          </body> 
           

          將上述代碼保存,名稱為autoRefresh.jsp。在該文件中,createXMLHttpRequest()函數(shù)用于創(chuàng)建異步調(diào)用對象;sendRequest()函數(shù)用于發(fā)送請求到客戶端;processResponse()函數(shù)用于處理服務(wù)器端的響應(yīng),在處理過程中調(diào)用DisplayHot()函數(shù)設(shè)定數(shù)據(jù)的顯示樣式。其中,setTimeout(“sendRequest()”,1000)函數(shù)的含義為每隔1秒的時間調(diào)用sendRequest()函數(shù),該函數(shù)在Ajax頁面刷新中起了一個主導(dǎo)作用。DisplayHot()函數(shù)主要用于從服務(wù)器端返回的XML文件進行解析,并獲取返回數(shù)據(jù),顯示在當(dāng)前頁面。

          posted on 2012-08-12 23:03 往事隨風(fēng) 閱讀(2106) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 芮城县| 桐庐县| 桃园市| 无棣县| 马山县| 同江市| 丹东市| 元阳县| 灵宝市| 合肥市| 保靖县| 安塞县| 偏关县| 土默特左旗| 西华县| 广汉市| 张家川| 苏州市| 盐城市| 固阳县| 肥东县| 唐海县| 枞阳县| 河东区| 克什克腾旗| 虎林市| 吉林市| 佛学| 西宁市| 江口县| 乐平市| 富平县| 铅山县| 且末县| 德阳市| 宜兰县| 鹤岗市| 长顺县| 定边县| 农安县| 连州市|