XML和JSP交互技術(上)

XML和JSP都是近兩年才出現的技術,目前已經成爲了很多程序員的熱點話題。XML(可擴展的標記語言)是用來定義文檔標記語言的框架,主要用來存儲和發送數據信息,以便各種基于WEB的應用之間能更方便的交換數據。而Jsp是服務器端程序動態設計語言,可以用來設計服務器端各種程序如B2B、B2C等各種系統,由于其面向對象、編譯執行、健壯等特性,也得到了越來越多的應用。

一個很實用的技術就是如何將XML和JSP結合起來,所幸的是我們不用去寫底支持層東西了,因爲很多廠商如SUN、IBM等都發布了自己的支持XML的API,其中SUN公司提供了一個支持在Java下使用XML的API-JAXP(JAVATM API for XML Processing Optional Package),這部分API提供了基本的讀寫、操作XML文檔的功能,通過它我們可以很方便的將XML集成到Java應用程序中來。

目前JAXP的版本是1.1,除了基本XML支持外還支持SAX 2.0 、DOM 2和XSL技術。SUN公司提供的JAXP可以在SUN公司的主頁http://java.sun.com/xml 下載。

一、 JAXP的安裝

1、安裝前請確認您用的是JDK 1.1.8 以上版本的Java環境。

2、在http://java.sun.com/xml 下載JAXP1.1的zip版本,解壓到硬盤中,假定解壓目錄爲#JAXP11,解壓後發現有三個jar文件jaxp.jar crimson.jar xalan.jar,這就是JAXP的核心了。

3、修改系統的CLASSPATH變量,在Windows平台下添加這樣一行:

#JAXP11\jaxp.jar; #JAXP11\crimson.jar; #JAXP11\xalan.jar

在Unix/Linux系統下添加下面一行:

#JAXP11/jaxp.jar: #JAXP11/crimson.jar: #JAXP11/xalan.jar alan.jar

如果你使用的是Java2的話,有一種更簡單的方法,將上面的三個文件直接拷貝到JDK的Lib擴展目錄中去,如#JAVA_HOME/jre/lib/ext(#JAVA_HOME代表JDK目錄),這樣就不用修改CLASSPATH了。

4、好了,安裝完成了,下一步就是編寫程序然後運行了。

二、 簡單的XML例子

XML (EXtensible Markup Language )是一種類似HTML的語言,和HTML不同,XML主要用來描述結構化數據,通過XML格式我們可以很方便的在各種應用程序之間交換數據,而這些都是傳統技術需要花費很大精力才能做到的。

讓我們來看一個簡單的XML文檔例子,這個例子保存了部分個人檔案,請將它保存爲personal.xml文件,因爲後面我們的Jsp文件還會調用它中間的數據。

<個人檔案>

<姓名>劉玉鋒

<性別>男

<年齡>24

coolknight@263.net

<個人主頁>http://www.21jsp.com

<介紹>歡迎大家訪問我的主頁!

是不是很類似于HTML文件,如HTML中的元素"你好"等等,因爲XML和HTML一樣都是標准SGML的子集合,所以有類似之處。但也有很多不同之處需要注意,比如XML文件必須有成對地標記而且大小寫敏感,而這些在HTML中都是默認允許的。

第一行是必須的XML聲明, 我們可以看到聲明是在之間的,中間可以定義部分屬性,version="1.0"表示文檔將使用XML1.0的規範,encoding="gb2312"表示采用中文字符集,這樣我們在下面對于數據就可以使用中文了。

接著就是<個人檔案>標記了,這是XML文件中的根元素,也是不可缺少的,而且必須有一個對應的結束標記,在開始和結束標記之間我們就可以定義自己的數據描述了。

嵌套在<個人檔案>標記如"<姓名>劉玉鋒"就是具體的數據描述了,同根元素一樣必須是成對的標記,在標記中間可以是標記對應具體的數值。這種表示方法有點類似于數據庫中的記錄了,字段名字爲"姓名"、"性別"等,上面的XML文件就相當于一個只有一條記錄的表"個人檔案"。當然在XML文件中可以進行多層嵌套,但這就不在本文的討論範圍了。

當然,這裏只是一個特別簡單能代表XML的例子,XML的相關內容特別多,如果想更多了解XML的話建議還是看相關的書籍。

三、JSP和XML交互

前面已經說過了,Jsp通過SUN公司的API-JAXP可以實現和XML的交互,那麽具體實現主要有兩種方法,一種是采用DOM2 API,另外一種是采用SAX2 API。

||||||在這裏我們主要討論JAXP中的SAX(Simple API for XML Parsing)技術,DOM2技術可以看SUN公司相關的文檔。

1)關于SAX模型

SAX模型是一種處理XML文件的方法,它是事件驅動的,有些類似于AWT中的事件驅動機制,通過事件驅動來識別XML文檔的內容。在API中關于SAX的主要有下面的幾個包:

oorg.xml.sax

oorg.xml.sax.helpers

oorg.xml.sax.ext

在前台的Java程序或者是Jsp程序中通過調用這幾個包中的API就可以很好地實現Java和XML的交互。

2)關于HandlerBase接口

我們知道在AWT中一般是通過實施ActionListener等接口實現事件的處理的,同樣的在SAX中SUN也提供了一個類似的接口HandlerBase來處理XML解析的功能,通過將HandlerBase和XML文件關聯可以很好的來處理XML文件。

在實施接口中我們主要重載三個HandlerBase的方法startElement(String tag, AttributeList attrs)、characters(char[] ch, int start, int length)、endElement(String name)。

startElement()在讀取一行XML數據的開始標記時候觸發,子類必須覆蓋這個方法,這樣就可以在處理XML節點前先進行自己的處理(比如開始讀取或者寫入XML文件中的節點時候)。

public void startElement (String name, AttributeList attributes)

throws SAXException

{

// no op

}

參數name代表XML節點名字,attributes代表默認或者特殊的屬性,這個方法抛出一個違例org.xml.sax.SAXException。

characters()方法主要用來處理和之間具體的數據,在處理節點數據時候觸發,我們可以覆蓋這個方法來進行數據操作的處理,可以添加代碼讀取節點數據值或者是寫入節點數據值。

public void characters (char ch[], int start, int length)

throws SAXException

{

// no op

}

參數ch[]代表一個字符數組,start代表字符數組的開始位置,length代表要取的字符數組中ch[]中的元素個數,同樣的這個方法抛出一個違例org.xml.sax.SAXException。

endElement()方法在處理節點元素結束的時候觸發,也就是碰到標記的時候,我們可以覆蓋這個方法來進行數據的收尾工作,比如將節點數據寫入到文件中。

public void endElement (String name)

throws SAXException

{

// no op

}

參數name代表XML節點名字,這個方法抛出一個違例org.xml.sax.SAXException

從上面我們也可以看出,三個方法在XML事件處理中的順序依次爲:

startElement()àcharacters()àendElement(String name)

也許還不好理解,不要緊在下面我們將會寫一個類myHandler類實現HandlerBase接口,並且覆蓋這三個主要的方法來實現我們的XML文件讀取操作。

3)關于哈希表

由于程序用到了哈希表,所以在這裏先簡單的介紹一下哈希表的基本語法以便大家能更好的理解下面的程序。

哈希表HashTable是從Dictionary派生出來的,裏面具有一系列的關鍵字和數值,一個關鍵字對應一個數值,識別主要是通過對象的哈希代碼hashCode識別。

我們程序中用到的方法如下:

put(Object key,Object value)添加一對關鍵字/數值到哈希表中

get(Object key)根據關鍵字得到它的值

keys()取得所有關鍵字並返回一個集合Enumeration

此外,哈希表還具有其他很多有用的方法如長度size()、是否爲空empty()、是否重複containsKey()等等,限于篇幅在這裏就不進行介紹了。

XML和JSP交互技術(上)
XML和JSP都是近兩年才出現的技術,目前已經成爲了很多程序員的熱點話題。XML(可擴展的標記語言)是用來定義文檔標記語言的框架,主要用來存儲和發送數據信息,以便各種基于WEB的應用之間能更方便的交換數據。而Jsp...查看完整版>>XML和JSP交互技術(上)
 
XML和JSP交互技術(下)
4) 實施HandlerBase接口  在這裏我們編寫一個myHandler的類,它用來實施HandlerBase接口,並且覆蓋接口的三個主要方法startElement(String tag, AttributeList attrs)、characters(char[] ch, int start, int leng...查看完整版>>XML和JSP交互技術(下)
 
也談JSP與XML的交互
使用JavaServer Pages有三種不同的方法用于處理XML文檔,每種方法都有利于提高分離頁面代碼與XML數據的水平,有利于簡化開發網頁的複雜度並且改善提高組件與頁面代碼的可重用性。   JavaServer Pages ( JSP)和XML是...查看完整版>>也談JSP與XML的交互
 
也談JSP與XML的交互
  使用JavaServer Pages有三種不同的方法用于處理XML文檔,每種方法都有利于提高分離頁面代碼與XML數據的水平,有利于簡化開發網頁的複雜度並且改善提高組件與頁面代碼的可重用性。   JavaServer Pages ( JSP)和...查看完整版>>也談JSP與XML的交互
 
jsp中 java ,html/javascript 交互
一、說明幾點:(1)過程描述: Jsp文件首先在服務器端生成中間的Java文件,再生成Class,然後以html的形式返回到客戶端。所以說,一個jsp文件首先執行其中的java代碼,然後生成html。(2)類型 a.java類型(就不...查看完整版>>jsp中 java ,html/javascript 交互
 
JSP數據和JavaScirpt數據交互使用問題的一種解決方法
JSP數據和JavaScirpt數據交互使用問題的一種解決方法 對于WEB程序來說,前端(JavaScript)和後端(JSP/Servlet)是沒法共用數據的,只能是後端程序(JSP)把數據輸出,生成頁面到前端,這時候生成的頁面中的Jav...查看完整版>>JSP數據和JavaScirpt數據交互使用問題的一種解決方法
 
XML和JSP
  概覽:XML和JSP是這些日子中最熱的東西。本文介紹如何聯合這兩種技術來建設動態網站。你還可以同時看一下DOM,XPath,XSL,和其它Java-XML技術的示例代碼。我們在此假設你已經了解JavaServer Pages(JSP)和Extens...查看完整版>>XML和JSP
 
JSP讀取大對象CLOB並生成xml文件示例
  這個程序是我在一個用XML做外部數據交換平台的項目中最初用到的,雖然後來用到其它方式解決,但其思路還是有一定參考價值,程序很簡單,不難看懂,還請專家們不吝指教……  <%@ page contentType="text/htm...查看完整版>>JSP讀取大對象CLOB並生成xml文件示例
 
JSP與XML的結合
  綜述:可擴展標注語言(eXtensible Markup Language,XML)正被迅速的運用于業界,它已作爲與平台、語言和協議無關的格式描述和交換數據的廣泛應用標准。XML和它的輔助規範可用于描述數據的文檔表現,描述XML文檔...查看完整版>>JSP與XML的結合
 
 
回到王朝網路移動版首頁