首頁>技術>

軟體專案實訓及課程設計指導——如何應用XML +XSLT +AJAX組合技術實現無重新整理的資料查詢的應用例項

1、在Web應用系統專案中新增一個實現查詢的請求頁面searchBook.jsp

(1)建立searchBook.jsp頁面檔案的過程示圖

在MyEclipse開發工具中選擇檔案中的新建選單專案,然後創建出一個JSP頁面檔案,檔名稱為searchBook.jsp,建立searchBook.jsp頁面檔案的過程示圖參看如下的示例圖所示。

(2)searchBook.jsp頁面最終的程式碼示例如下,在頁面中包含有一個簡單的查詢表單

<%@ page contentType="text/html; charset=gb2312" %><script language="javascript" src="searchBook.js"></script><form name="search" method="post" action="">      請輸入書名:<input id="bookkey" type="text" size="20" >      <input type="button" name="search" value="搜尋" onclick=getBooks('bookkey')>      <div id="showBookInfo"></div></form>

2、在Web應用系統專案中新增一個searchBook.js程式檔案

(1)searchBook.js程式檔案建立的過程示圖

在MyEclipse開發工具中選擇檔案中的新建選單專案,然後創建出一個JavaScript指令碼型別的*.js檔案,檔名稱為searchBook.js,建立searchBook.js指令碼檔案的過程示圖參看如下的示例圖所示。

(3)searchBook.js程式的程式碼示例

var httpRequest;function getHTTPRequestObject(){    var httpRequestObject;    if (window.XMLHttpRequest){ // 適用於Mozilla, Safari 等瀏覽器, ...          httpRequestObject = new XMLHttpRequest();    }    else if (window.ActiveXObject){ //適用於 IE等瀏覽器, ...          try{          			httpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");          }          catch (e){              try{              		httpRequestObject= new ActiveXObject("Msxml2.XMLHTTP");              }              catch (e2){              		alert("您的瀏覽器有問題!");              }          }     }    return httpRequestObject;}function getBooks(bookkey){ //向searchbookservlet傳送請求      httpRequest=getHTTPRequestObject();      var url="searchbookservlet?bookkey="+document.getElementById(bookkey).value;      httpRequest.onreadystatechange = showRetrunBooks;      httpRequest.open("GET",url,true);      httpRequest.send(null);}function showRetrunBooks() { //將返回的資料顯示在指定的節點下      if (httpRequest.readyState == 4) {          if (httpRequest.status == 200){                var allBooksDomDocument =httpRequest.responseXML;                var bookXSLDocument = new ActiveXObject('Microsoft.XMLDOM');                bookXSLDocument.async=false; //直接載入bookDetail.xsl                bookXSLDocument.load("bookDetail.xsl");                document.getElementById('showBookInfo').innerHTML=                allBooksDomDocument.transformNode(bookXSLDocument);     			 }     			else if(httpRequest.status == 404){                document.getElementById('showBookInfo').innerHTML =                "沒有找到與所請求的檔案相匹配的資源!";          }          else{                document.getElementById('showBookInfo').innerHTML =                "你所請求的頁面發生異常,錯誤程式碼為:"+httpRequest.status;          }      }      else{      		document.getElementById('showBookInfo').innerHTML = "查詢中,請稍等...";      }}

3、在Web應用系統專案中新增一個bookDetail.xsl檔案

(1)bookDetail.xsl檔案建立的過程示圖

在MyEclipse開發工具中選擇檔案中的新建選單專案,然後創建出一個XSLT轉換檔案,檔名稱為bookDetail.xsl,建立bookDetail.xsl檔案的過程示圖參看如下的示例圖所示。

(2)bookDetail.xsl檔案的程式碼示例

<?xml version="1.0" encoding="gb2312" ?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">      <xsl:template match="/">          <h2>您搜尋的書籍如下:</h2> <xsl:apply-templates select="Books"/>      </xsl:template>      <xsl:template match="Books">          <Table border="1" width="80%">              <TR><TD>書名</TD><TD>作者</TD><TD>出版社</TD><TD>價格</TD><TD>出版時間</TD><TD>內容簡介</TD></TR>              <xsl:apply-templates select="Book"/>          </Table>      </xsl:template>      <xsl:template match="Book">            <TR>                  <TD><xsl:value-of select="BookName"/></TD>                  <TD><xsl:value-of select="Writer"/></TD>                  <TD><xsl:value-of select="Publisher"/></TD>                  <TD><xsl:value-of select="Price"/></TD>                  <TD><xsl:value-of select="PublishTime"/></TD>                  <TD><xsl:value-of select="Content"/></TD>            </TR>      </xsl:template></xsl:stylesheet>

4、在Web應用系統專案中新增後臺Java Servlet程式

(1)程式類名稱為SearchBookServlet,程式包名稱為com.px1987.webajax.servlet

在MyEclipse開發工具中選擇檔案中的新建選單專案,然後創建出一個Servlet型別的檔案,程式類名稱為SearchBookServlet,程式包名稱為com.px1987.webajax.servlet,建立SearchBookServlet程式的過程示圖參看如下的示例圖所示。

(2)該Servlet的名稱為searchbookservlet,參看如下的示例圖所示。

(3)程式設計該Servlet中的doGet方法

package com.px1987.webajax.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.jdom.*;import org.jdom.output.*;public class SearchBookServlet extends HttpServlet {      Document xmlDoc=null;      public void doGet(HttpServletRequest request, HttpServletResponse response)      throws ServletException, IOException {            String bookName=request.getParameter("bookkey");            //然後根據bookName查詢資料庫表以獲得具體的結果資料,在此加以省略            buildBooksXMLTree();            response.setContentType("text/xml; charset=gb2312");            response.setHeader("Cache-Control", "no-cache");            PrintWriter out = response.getWriter();            responseXMLDataToBrowser(out);            out.close();      }      public void buildBooksXMLTree() { //利用JDom動態地建立XML的節點樹            treeRoot=new Element("Books");            xmlDoc=new Document(treeRoot);            tagName=new Element("Book");            treeRoot.addContent(tagName);            /**下面的資料在實際系統中應該來自於資料庫表,為了簡化示例在程式中動態創建出對應的XML標籤 */            childTagName=new Element("BookName");            childTagName.setText("AJAX技術與應用");            tagName.addContent(childTagName);            childTagName=new Element("Writer");            childTagName.setText("張三");            tagName.addContent(childTagName);            childTagName=new Element("Publisher");            childTagName.setText("電子工業出版社");            tagName.addContent(childTagName);            childTagName=new Element("Price");            childTagName.setText("45.5");            tagName.addContent(childTagName);            childTagName=new Element("PublishTime");            childTagName.setText("2007年12月");            tagName.addContent(childTagName);            childTagName=new Element("Content");            childTagName.setText("本書是介紹AJAX技術與應用方面的圖書");            tagName.addContent(childTagName);      }      public void responseXMLDataToBrowser(PrintWriter out) throws IOException{            Format format=Format.getCompactFormat();            format.setEncoding("gb2312");            format.setIndent(" ");            XMLOutputter XMLOut=new XMLOutputter(format);            XMLOut.output(xmlDoc,out);      }}

5、在Web應用系統專案中匯入JDom的系統包檔案,實現對XML文件的動態解析

在Web應用系統專案中匯入JDom的系統包檔案jdom.jar,利用JDom實現對XML文件的動態解析,參看如下的示例圖所示。

6、部署Web應用系統專案和啟動伺服器

(1)部署Web應用系統專案

(2)啟動Tomcat伺服器

7、測試本示例的應用功能的正確性

(1)啟動測試頁面,並在查詢表單中輸入查詢的資料(本示例為某書名)

查詢的結果是來自於伺服器端處理的結果,並且直接在Web表單的下面顯示,頁面沒有產生傳統的Web頁面的提交後頁面更換的效果。

11
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 面試官:這幾個問題都不會你真的懂Activity的啟動模式嗎