亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

XML——連接SQL和Web程序的橋梁(圖)

2019-11-18 12:48:33
字體:
來源:轉載
供稿:網友

  摘要
  
  過去幾年xml技術作為Internet上交換信息的格式受到了極大的歡迎。今天XML經常被描述成一種孤立的技術,但它最初誕生的時候卻是一種(介于Html和SGML之間的)Internet技術。本文討論XML如何被用作數據庫和最終用戶間的“通訊協議”。
  
  當前最流行的關系數據庫治理系統用SQL查詢語言來與數據打交道。雖然面向XML(XML-oriented)的數據庫已經面市,卻不常見。而XML如此流行,關系數據庫開發者也在為產品增加XML兼容性的過程中學習進步。本文考察其中一種途徑:讓數據庫返回XML。示范代碼中用到了一個Oracle數據庫,它被假定是XML兼容的,能處理XML數據。
  
  本文分為兩部分。第一部分預備和Oracle數據庫打交道的java代碼:提交一個SQL查詢,獲取一個XML輸出;第二部分專注于一個web程序:將從數據庫獲取的XML數據輸出為HTML文本。
  
  要求
  
  本文中用到下列軟件:
  
  BEA WebLogic Platform 8.1 with SP4 ——作應用程序服務器。
  
  Oracle 10g Database Server ——作數據庫服務器。你可以用不同版本的服務器來試驗代碼;據我們所知,本方案不需要特定的版本。
  
  Oracle XML-SQL Utility (XSU) ——XSU是一組充當PL/SQL包裝(wrapper)的Java類,它答應查詢返回XML包裝起來的結果集或對象。
  
  Oracle XML Parser, Version 2 ——Oracle的基于Java校驗XML有效性的解析器(parser),支持XSL。一般來講XSU和XML解析器是Oracle Developer Suite的一部分。
  
  本文中的代碼在微軟Windows xp系統上運行,但只需要很小的改動也應該能在任何操作系統上正確工作。
  
  我們假定讀者是有經驗的Java開發者,熟悉BEA WebLogic Server,并且有JDBC編程經驗。
  
  預備連接池(Connection Pool)和數據源
  
  假如你熟悉JDBC連接池和數據源的配置,請跳過這一節。
  
  首先需要配置連接池和數據源。代碼稍后會用JNDI來獲取數據源,這需要一點配置。我們要配置一個JDBC連接池來保持和數據庫的連接。登入WebLogic的控制臺并選擇Service Configurations -> JDBC -> Connection Pools節點。
  
  現在選擇“Configure a new JDBC Connection Pool...”以創建一個新的連接池,在接下來的畫面里選擇數據庫類型和驅動(圖1)。
  
 XML——連接SQL和Web程序的橋梁(圖)(圖一)

  
圖1. JDBC連接池:選擇數據庫

  
  可以看到多種不同數據庫可供選擇。我們需要的數據庫類型(Database Type)是Oracle,并且將使用BEA的Oracle Driver(Type 4)。然后點“Continue”按鈕定義連接屬性(圖2)。
  
 XML——連接SQL和Web程序的橋梁(圖)(圖二)

  
圖2. JDBC連接池:連接屬性

  
  在這個畫面中,為JDBC連接池選擇一個名字,并設置其它諸如數據庫名和主機名、連接端口和口令等數據庫參數。
  
  這里并不創建一個新數據庫和一組表,我們將使用Oracle的示例SCOTT/TIGER模式(schema)和EMP表。幾乎每個Oracle安裝中都有這個示例,因此不需要你再去配置。假如沒有EMP表或者這個表是空的,可以用Oracle目錄下的/sqlplus/demo/demobld.sql腳本重建這個表并裝入數據,還可以用/sqlplus/demo/demodrop.sql刪除原有的值。
  
  配置好這些參數之后點“Continue”(圖3)。
  
 XML——連接SQL和Web程序的橋梁(圖)(圖三)

  
圖3. JDBC連接池:連接測試

  
  一般情況不必對這一頁做任何改動,這是一個連接測試頁(可以點“Skip This Step”跳過)。WebLogic Server顯示了驅動類名、(JDBC驅動使用的)URL和身份驗證(用戶名和密碼)以供核對。復核完這些參數后預備測試,點“Test Driver Configuration”按鈕,假如一切正確,將看到“Connection SUCcessful”的信息。最后點“Create and deploy”按鈕完成JDBC連接池配置。
  
  完成了JDBC連接池的工作,現在我們需要創建相應的數據源?;氐絎ebLogic Server控制臺的主頁,按照這個順序選擇:Service Configurations -> JDBC -> Data Source。在接下來的畫面中點擊“Configure a new JDBC Data Source”鏈接,將看到數據源配置成功頁(圖4)。
  
 XML——連接SQL和Web程序的橋梁(圖)(圖四)

  
圖4. 數據源配置成功頁

  
  要定義JDBC數據源名稱和能找到數據源的地方——JNDI路徑。務必記住JNDI路徑,稍后將用它來建立一個與我們代碼的連接。接下來選擇“Continue”,然后選擇正確的連接池和數據源關聯。選中剛剛創建的連接池,再點“Continue”,下一頁答應你選擇部署數據源的服務器和簇。從列表里選中需要的一個,接著點“Create”。數據源已經創建好,我們預備寫代碼了。
  
  預備獨立(Stand-Alone)Java程序的環境
  
  讓我們給即將編寫的小客戶程序預備一個環境。為了能執行SQL查詢和獲取XML數據作為輸出,將用到Oracle XML-SQL utility (XSU),需要配置環境變量CLASSPATH指向Oracle XML-SQL Utility的庫(library)和Oracle XML解析器。一般情況下XSU可以在Oracle的目錄/rdbms/jlib/xsu12.jar找到,XML 解析器在/lib/xmlparserv2.jar。還有我們在使用JNDI,需要在CLASSPATH中包括weblogic.jar文件,一般在WebLogic Server的安裝目錄下:/bea/weblogic81/server/lib/weblogic.jar。
  
  典型的CLASSPATH 看起來會像下面這樣:
  
  CLASSPATH=c:/PRogram Files/java/jdk1.5.0_01/lib;.;
  C:/DevSuiteHome/rdbms/jlib/xsu12.jar;
  C:/DevSuiteHome/lib/xmlparserv2.jar;
  C:/bea/weblogic81/server/lib/weblogic.jar;
  
  考察獨立Java程序的代碼
  
  在展示代碼前,注重到Oracle中有兩種處理XML的方法是有意義的。二者的區別很大,你應該采用適合你手頭任務的辦法。第一種辦法是用Oracle的XSU,答應從任何SQL查詢返回XML;第二種辦法是用Oracle的XMLType列類型(column type)。
  
  XMLType列答應將XML當做數據庫中的一種本地數據類型。因此,這些列可以像其它類型的列一樣參與查詢Consequently。Oracle提供了XMLTYPE()函數來創建一個XMLType數據對象,同時還提供了其它處理這個數據類型的函數,比如XMLELEMENT()和XMLAGG()。從WebLogic Server的在線文檔(The Oracle Driver)或技術網站(Oracle Technology Network)可以讀到關于這種辦法的說明和示例。本文將專注于使用XSU的方法。
  
  下面是在Oracle數據庫上執行SQL查詢并產生XML輸出所需要的全部代碼(oraxml.java)。
  
  1. import javax.naming.*;
  2. import javax.sql.*;
  3. import java.sql.*;
  4. import oracle.xml.sql.query.*;
  5. public class oraxml
  6. {
  7.  public static void main(String args[]) throws SQLException, NamingException
  8.  {
  9.   String tabName = "emp";
  10.   int maxRows = 3;
  11.   Context ctx = new InitialContext ();
  12.   DataSource ds = (DataSource) ctx.lookup ("MyOra");
  13.   Connection conn = ds.getConnection ();
  14.   OracleXMLQuery qu = new OracleXMLQuery (        conn, "select EMPNO, ENAME from " + tabName);
  15.   qu.setMaxRows (maxRows);
  16.   qu.setRowsetTag ("EMPLOYERS");
  17.   qu.setRowTag ("PERSON");
  18.   String xmlString = qu.getXMLString();
  19.   System.out.println (xmlString);
  20.   conn.close ();
  21.  }
  22. }
  
  這段代碼很簡單。11-12行獲取一個JNDI名稱為MyOra的數據源;13和20行分別建立和關閉連接;最有意思的是14-18行執行了一個所謂的“XML查詢”;從技術上講,這是一個經XSU轉換為XML的SQL查詢;14行初始化查詢;15-17行設置XML文檔的結構,15行設定返回的最大行數不超過maxRows,16和17行設定文檔的根元素(root element)和項目分隔符(item delimiters);18行生成一個XML文檔并將其放在xmlString變量中。就像你看到的這樣,代碼很簡單易懂。(英文編者注:注重,這不是成品代碼。最后應該在一個finally語句的括號中關閉連接。)
  
  別忘記這段代碼中用到了JNDI。作為一個獨立的Java程序,必須安排一個命名提供者(naming provider)給它使用。我們將用WebLogic Server作為提供者,配置方法首先要建一個jndi.properties文件,然后確??梢詮沫h境變量訪問這個文件。假如CLASSPATH包含當前目錄(.),就應該將jndi.properties文件放在當前目錄中。這是一個jndi.properties 文件的內容:
  
  java.naming.factory.initial=weblogic.jndi.WLInitialContextFactoryjava.naming.provider.url=t3://localhost:7001
  
  典型的編譯命令和運行結果像下面所展示的這樣(注重輸出被限制為不大于maxRows):
  
  C:/white/work/Java/xmlweb_src>javac oraxml.javaC:/white/work/Java/xmlweb_src>java oraxml<?xml version = '1.0'?><EMPLOYERS>  <PERSON num="1">   <EMPNO>7369</EMPNO>   <ENAME>SMITH</ENAME>  </PERSON>  <PERSON num="2">   <EMPNO>7499</EMPNO>   <ENAME>ALLEN</ENAME>  </PERSON>  <PERSON n

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲系列中文字幕| 国产伊人精品在线| 91免费在线视频网站| 欧美国产极速在线| 超碰日本道色综合久久综合| 久青草国产97香蕉在线视频| 91麻豆国产精品| 日韩在线观看电影| 亚洲白拍色综合图区| 久久久国产一区二区三区| 成人国产精品色哟哟| 久久久久国色av免费观看性色| 国产成人综合精品| 亚洲视频在线观看免费| 91久久精品国产91久久| 91久久久久久久久久久| 国产精品美女无圣光视频| 在线播放国产精品| 精品国产一区二区三区在线观看| 一区二区在线视频播放| 国产亚洲aⅴaaaaaa毛片| 色偷偷综合社区| 黑人极品videos精品欧美裸| 亚洲肉体裸体xxxx137| 九九热精品视频| 日韩av最新在线| 国产精品久久久久久超碰| 国产成人一区二区三区小说| 日本精品视频在线| 国精产品一区一区三区有限在线| 欧美亚洲国产视频小说| 欧美电影免费观看高清完整| 成人亚洲欧美一区二区三区| 国产精品久久久久久久久久99| 国产精品视频自拍| 欧美激情精品久久久久| 在线视频欧美日韩精品| 91日韩在线视频| 欧美精品videos性欧美| 日本精品一区二区三区在线播放视频| 国产精品白丝av嫩草影院| 黄色一区二区在线| 日韩动漫免费观看电视剧高清| 韩剧1988免费观看全集| 日韩欧美在线观看视频| 亚洲天堂精品在线| 高清欧美性猛交| 亚洲一区二区三区视频| 国产成人在线一区| 精品av在线播放| 91精品国产91久久久久久最新| 日韩亚洲欧美中文在线| 亚洲第一页在线| 91精品视频网站| 久久久精品免费| 国产日韩欧美日韩| 国产综合在线视频| 久久99青青精品免费观看| 成人午夜激情网| 亚洲欧美日韩在线一区| 欧美激情久久久久| 成人福利视频在线观看| 日本久久久久久| 久久久久国产精品一区| 欧美日韩国产激情| 亚洲jizzjizz日本少妇| 久久久久久久久久久免费精品| 精品高清一区二区三区| 国产精品久久久久久久久男| 色综合男人天堂| 亚洲少妇激情视频| 26uuu另类亚洲欧美日本一| 91亚洲一区精品| 亚洲一区二区久久久久久久| 成人黄色在线观看| 欧美情侣性视频| 欧美性猛交xxxx免费看久久久| 久久久最新网址| 秋霞午夜一区二区| 国产一区二区三区免费视频| 国产成人jvid在线播放| 亚洲日本欧美中文幕| 国产精品自产拍在线观看| 日韩视频免费大全中文字幕| 欧美成人精品不卡视频在线观看| 午夜精品久久久久久久99黑人| 国内伊人久久久久久网站视频| 日韩国产高清污视频在线观看| 国产成人精品亚洲精品| 欧美专区福利在线| 97视频免费观看| 国产精品久久久久久中文字| 亚洲成人xxx| 欧美综合国产精品久久丁香| 欧美色视频日本高清在线观看| 日韩在线www| 日本一区二区三区在线播放| 国产69精品99久久久久久宅男| 亚洲福利视频网| 日韩av手机在线看| 久久成年人视频| 国产免费观看久久黄| 精品国产欧美一区二区五十路| 久久免费精品日本久久中文字幕| 国产精品中文字幕在线| 中文字幕不卡在线视频极品| 欧美电影在线观看网站| 国产日韩欧美在线观看| 国产亚洲人成a一在线v站| 992tv成人免费影院| 日韩国产欧美区| 疯狂做受xxxx高潮欧美日本| 一本久久综合亚洲鲁鲁| 成人黄色免费在线观看| 日韩欧美在线字幕| 成人性生交大片免费观看嘿嘿视频| 欧美日韩国产综合视频在线观看中文| 成人免费午夜电影| 色偷偷av亚洲男人的天堂| 久久综合88中文色鬼| 亚洲一级黄色av| 热re91久久精品国99热蜜臀| 欧美亚洲午夜视频在线观看| 国产精品永久免费视频| 68精品国产免费久久久久久婷婷| 国内精品小视频在线观看| 国产精品视频网址| 亚洲精品免费一区二区三区| 午夜精品三级视频福利| 亚洲色图美腿丝袜| 中文字幕亚洲无线码a| 色狠狠av一区二区三区香蕉蜜桃| 日韩一二三在线视频播| 国产精品网站入口| 欧美激情亚洲自拍| 国产va免费精品高清在线观看| 国产91精品最新在线播放| 国产成人涩涩涩视频在线观看| 一区二区三区国产在线观看| 欧美亚洲视频在线看网址| 成人97在线观看视频| 欧美精品在线看| 亚洲天堂男人天堂女人天堂| 久久精品成人欧美大片| 久久精品国产亚洲| 日韩精品一区二区视频| x99av成人免费| 国产精品福利无圣光在线一区| 日韩成人久久久| 亚洲第一中文字幕在线观看| 日韩av影视综合网| 爱福利视频一区| 久久久精品一区二区三区| 国产精品视频一区国模私拍| 亚洲国产精品成人一区二区| 少妇激情综合网| 日韩在线中文字幕| 欧美一级大片在线观看| 在线观看国产精品淫| 亚洲色图狂野欧美| 欧美激情第99页| 高清欧美性猛交| 91po在线观看91精品国产性色| 亚洲片在线资源|