快速建構(gòu)Oracle網(wǎng)頁應(yīng)用程式系統(tǒng)_第1頁
快速建構(gòu)Oracle網(wǎng)頁應(yīng)用程式系統(tǒng)_第2頁
快速建構(gòu)Oracle網(wǎng)頁應(yīng)用程式系統(tǒng)_第3頁
快速建構(gòu)Oracle網(wǎng)頁應(yīng)用程式系統(tǒng)_第4頁
快速建構(gòu)Oracle網(wǎng)頁應(yīng)用程式系統(tǒng)_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、專題報(bào)導(dǎo) - 快速建構(gòu)Oracle網(wǎng)頁應(yīng)用程式系統(tǒng)40快速建構(gòu)Oracle網(wǎng)頁應(yīng)用程式系統(tǒng)-使用Oracle PL/SQL Web 開發(fā)工具沈玉升國立中興大學(xué)計(jì)算機(jī)及資訊網(wǎng)路中心臺(tái)中市402國光路250號(04-22840306轉(zhuǎn)724)E-Mail:.tw 所謂Oracle網(wǎng)頁應(yīng)用程式是指用Oracle工具程式存取Oracle資料庫的網(wǎng)頁應(yīng)用程式。目前我們較常見的ASP、PHP、JSP等都有提供資料庫連接支援。但對以O(shè)racle資料庫為基礎(chǔ)所開發(fā)的組織內(nèi)各類資訊系統(tǒng)而言,選擇與資料庫密切配合的Oracle網(wǎng)頁開發(fā)工具,更能有效率的發(fā)揮資料庫資料計(jì)算與網(wǎng)站存取瀏覽的

2、資訊展現(xiàn)速度。本文將略述選擇用PL/SQL當(dāng)開發(fā)網(wǎng)頁應(yīng)用系統(tǒng)的考量點(diǎn)、Oracle Web 應(yīng)用程式的執(zhí)行機(jī)制、資料庫伺服端的PL/SQL Web Toolkit簡介、WEB /應(yīng)用程式伺服端必須設(shè)定的DAD(Database Access Descriptor)環(huán)境設(shè)定以及手寫PL/SQL應(yīng)用程式的開發(fā)流程等。並用一個(gè)應(yīng)用實(shí)例擷取片段,在WIN/NT平臺(tái)上示範(fàn),看完本章,即使您是個(gè)網(wǎng)頁應(yīng)用程式新手,也可輕易著手建構(gòu)您的系統(tǒng)了。一、為何選擇用PL/SQL開發(fā)網(wǎng)頁?目前Oracle提供的開發(fā)工具有Java Servlet、PL/SQL Web Toolkit、Designer、Portal或使用

3、 Developer的Forms和Reports等五種基本方式來開發(fā)網(wǎng)頁程式。上述開發(fā)工具各有使用上的優(yōu)缺點(diǎn), 您必須根據(jù)實(shí)際的應(yīng)用系統(tǒng)需求來選擇. 以下幾個(gè)因素可供在網(wǎng)頁開發(fā)工具的選擇評量上參考:1. 使用者群屬性。2. 使用者介面的複雜度。3. 系統(tǒng)開發(fā)時(shí)限。4. 開發(fā)者對工具的熟悉度。因此若您要建構(gòu)的系統(tǒng)使用者來至網(wǎng)際網(wǎng)路、非專業(yè)使用、使用者介面只需提供資料查詢?yōu)g覽或單純的資料登錄維護(hù)作業(yè)(不需做到滑鼠控制等) 、有開發(fā)時(shí)間上的壓力、對Java不熟悉、但熟悉PL/SQL程式語言與基本的HTML網(wǎng)頁資料展現(xiàn)格式等特性,那選擇使用以HTML為基礎(chǔ)的PL/SQL Web Toolkit當(dāng)作網(wǎng)頁

4、應(yīng)用程式的開發(fā)工具應(yīng)是個(gè)不錯(cuò)的決定。二、Oracle Web 應(yīng)用程式的執(zhí)行機(jī)制: 一個(gè)完整的Web系統(tǒng)包括了客端的瀏覽器,中間層的web/應(yīng)用伺服器(Application server),以及後端資料庫伺服器(Database server)等3層架構(gòu)。其中web/應(yīng)用伺服器端是用來與Web瀏覽器溝通,及執(zhí)行應(yīng)用程式的應(yīng)用程式伺服器。後端資料庫則儲(chǔ)存以HTML為基礎(chǔ),使用Oracle PL/SQL Web套裝軟體函數(shù)或程序呼叫方式寫的儲(chǔ)存程式碼(Stored Procedures),這些程式碼產(chǎn)生一系列的網(wǎng)頁供瀏覽器顯示。開發(fā)這種應(yīng)用程式碼較簡易,只要您熟悉Oracle 的PL/SQL語言

5、,對HTML的資料格式及瀏覽器如何呈現(xiàn)的視窗控制有基本的認(rèn)識(shí) ,就可很輕易上手寫web 應(yīng)用程式。本文範(fàn)例安裝的是Oracle 9i Application Server 1.0.2/NT2000版本, 安裝選Oracle HTTP Server only,<圖一>為Oracle9i應(yīng)用程式伺服器的主要元件,Web server是直接與瀏覽器溝通的元件,其溝通的方法是使用HTTP (HyperText Transport Protocol),目前Oracle新的版本都是使用標(biāo)準(zhǔn)Apache Web server。在我們所開發(fā)的應(yīng)用程式裡,Apache HTTP servr為固定的檔

6、案提供服務(wù),這些檔案包括固定的HTML檔案或影像檔等。換句話說,您寫的HTML檔案或影像檔必須放在Web主機(jī)端,儲(chǔ)存程式必須放在資料庫端。Apache JservOracleJSPWeb server(Apache HTTP server) Web server JavaPL/SQLMod_cgi Form serverReport serverDatabase<圖一>Oracle9i應(yīng)用程式伺服器的主要元件在此以PL/SQL Web應(yīng)用程式實(shí)例(請參考範(fàn)例說明單元) 的執(zhí)行流程來簡略說明運(yùn)作機(jī)制:1. 當(dāng)使用者要求一個(gè)Web網(wǎng)頁(鍵入或點(diǎn)選一個(gè)URL)時(shí).如<圖二>畫

7、面鍵入 http:/shen/schair/index.html2. HTTP server收到index.html裡有呼叫執(zhí)行pls/schair的 PL/SQL儲(chǔ)存程序請求時(shí)(Request),就會(huì)將這個(gè)請求送至Apache的mod_plsql模組。由<圖三>的登入系統(tǒng)原始碼可知,此網(wǎng)頁使用HTML form method 接收變數(shù)的方式將值傳給action="/pls/schair/tedp_chk"3. mod_plsql模組使用包含在URL的設(shè)定需求,由DAD(Database Access Descriptor)決定用哪個(gè)資料庫帳號簽入後驅(qū)動(dòng)該資料庫

8、端的儲(chǔ)存程序。4. 接收的請求會(huì)傳給資料庫的儲(chǔ)存程序(Stored PL/SQL Procedure)處理,執(zhí)行的結(jié)果利用PL/SQL Web Toolkit的HTP套裝軟體產(chǎn)生HTML文件格式送出給Web server,轉(zhuǎn)送至瀏覽器展示。三、PL/SQL Web Toolkit簡介由上述單元的執(zhí)行流程可知,在您叫用PL/SQL網(wǎng)頁應(yīng)用程式前,Web Toolkit套裝軟體需先載入系統(tǒng),如此您寫的PL/SQL網(wǎng)頁應(yīng)用程式才能在資料庫端執(zhí)行。PL/SQL Web Toolkit包括2大類:1. htp和 htf套裝軟體:用來產(chǎn)生html標(biāo)籤格式的輸出結(jié)果。此套裝軟體包含使用到的PL/SQL資料類

9、別,程序及函式呼叫等,與HTML3.2版本指令一對一對應(yīng),用來將資料庫端抓取的資料利用該套裝軟體產(chǎn)生動(dòng)態(tài)html網(wǎng)頁輸出。如下左邊呼叫Procedure指令,是存在資料庫端的程序程式,其執(zhí)行後的輸出結(jié)果如右邊的產(chǎn)生html展示在瀏覽器上。呼叫Procedure 產(chǎn)生 HTMLProcedure showBeginhtp.htmlOpen;htp.header(1,Overview);htp.print(Hello Word);htp.para;htp.bold(基本網(wǎng)頁展現(xiàn));htp.htmlclose;End;<HTML><H1> Overview</H1>

10、;Hello Word<p><B>基本網(wǎng)頁展現(xiàn)</B></HTML>2. owa套裝軟體:字首OWA_開頭的套裝軟體用來處理資料庫伺服端與web應(yīng)用伺服端間的http溝通。包括owa_cookie/cookie設(shè)定,owa_image/影像按鈕方位操控,owa_opt_lock/資料庫記錄鎖定,owa_pattern/字串搜尋,owa_sec/安全機(jī)制,owa_text/大量字串處理,owa_util/軟體工具等函式或程序呼叫。以下是cookie設(shè)定的儲(chǔ)存程序owa使用範(fàn)例:procedure schair_setcookie (v_cookie

11、_name VARCHAR2, v_cookie_val VARCHAR2, v_close VARCHAR2 DEFAULT 'CLOSE')ISBEGIN owa_util.Mime_Header('text/html',FALSE); owa_cookie.Send(v_cookie_name,v_cookie_val); IF v_close = 'CLOSE' THEN owa_util.Http_Header_Close; END IF;END;您可使用以下SQL指令來列出上述套裝軟體名稱,以確認(rèn)PL/SQL Web Toolkit是

12、否安裝成功: select owner,object_name from dba_objects where object_type=PACKAGE and (object_name like HT%or object_name like OWA%);四、建DAD來啟動(dòng)資料庫相關(guān)程式執(zhí)行在Oracle HTTP server上選mod_plsql模組,建一個(gè)DAD(Database Access Descriptor)紀(jì)錄,作為PL/SQL web應(yīng)用程式呼叫資料庫服務(wù)時(shí)用哪個(gè)資料庫帳號簽入,以驅(qū)動(dòng)該資料庫端的儲(chǔ)存程序。以下是DAD名稱為schair的步驟:1.在瀏覽器上鍵入: http:/s

13、hen/點(diǎn)選mod_plsql.2.點(diǎn)選:閘道 Database Access Descriptor 設(shè)定 3.點(diǎn)選:新增預(yù)設(shè) (空白的組態(tài)) 4.新增schair DAD 五、手寫PL/SQL網(wǎng)頁應(yīng)用程式 當(dāng)您已將使用者系統(tǒng)環(huán)境設(shè)定完成後,接著就可撰寫您的網(wǎng)頁應(yīng)用程式了。只要有一般的文書編輯器就可開始動(dòng)工。以下是網(wǎng)頁的撰寫流程:1. 應(yīng)用程式設(shè)計(jì):以HTML為基礎(chǔ)的web應(yīng)用程式使用http通訊協(xié)定,因此在設(shè)計(jì)網(wǎng)頁間的流程時(shí)必須考慮到http運(yùn)作的特性限制。例如http的運(yùn)作是”stateless”, server端無法辨認(rèn)請求者的身分,因此必須建立系統(tǒng)登入機(jī)制以辨認(rèn)呼叫者的身份。目前是使用

14、cookie儲(chǔ)存使用者帳號密碼在client端,並在每個(gè)被呼叫的程序程式裡作cookie檢查。由於web網(wǎng)頁的運(yùn)作模式是使用者叫用一個(gè)URL進(jìn)入系統(tǒng),從網(wǎng)頁接收資料,接著web等待使用者下達(dá)下一個(gè)點(diǎn)選按鈕或輸入相關(guān)訊息,因此明確的畫出每個(gè)網(wǎng)頁間的連接流程,定義所有的模組功能及傳遞參數(shù)是有必要的。 2.網(wǎng)頁設(shè)計(jì): 依據(jù)上一個(gè)步驟畫出的應(yīng)用系統(tǒng)流程圖,設(shè)計(jì)HTML網(wǎng)頁。當(dāng)然您可用記事本完成所有的HTML,但選擇視覺化的HTML軟體編輯器(像Macromedia Dreamwaver)來設(shè)計(jì)您的網(wǎng)頁畫面以產(chǎn)生html程式碼會(huì)更有效率。 3.轉(zhuǎn)換: 將html程式碼改寫成使用PL/SQL儲(chǔ)存程式,只需

15、將每行的html用單引號括起來,由htp.print來呼叫就完成了。如下例: htp.print('<table><tr><td>'); htp.print('<a href="table_qry?v_emp='|v_empl|'"'|' target="main_frame">'|''); htp.print('Table查詢/維護(hù)</a>'); htp.print('</td>

16、<td>'); htp.print('<a href="table_logout?v_emp='|v_empl|'"'|'target = "_top">登出系統(tǒng)</a>'); htp.print('</td></tr></table>'); 4.加入動(dòng)態(tài)邏輯程式: 將pl/sql相關(guān)的資料計(jì)算指令嵌入程式中。六、範(fàn)例說明 以下web應(yīng)用程式範(fàn)例是用來查詢資料庫相關(guān)table系統(tǒng)文件紀(jì)錄。在此擷取相關(guān)網(wǎng)頁及程式碼

17、片段來說明使用PL/SQL寫成的應(yīng)用程式開發(fā)步驟。1.入口網(wǎng)站呼叫,接收帳號密碼:<圖二>畫面鍵入 http:/shen/schair/說明:內(nèi)定值是呼叫web server 端的<isuites目錄>apacheapachehtdocsschairindex.html網(wǎng)頁其中 shen是HTTP server的主機(jī)名稱,schair是在htdoc文件根目錄下(由http.conf所定義的DocumentRoot"c:isuitesApacheApachehtdocs") 所建的應(yīng)用程式存放目錄,除了PL/SQL 儲(chǔ)存程序存放在資料庫,其餘的 web

18、應(yīng)用程式檔案均放在此目錄下。2. index.html網(wǎng)頁原始碼製作:<圖三>圖二的原始碼內(nèi)容.說明:1.<body background="rose.bmp"> 使用相對位址呼叫rose.bmp圖檔,因此此檔必須放在htdocs文件根目錄下的schair子目錄才能被呼叫到。2.<form method="post" action="/pls/schair/tedp_chk">此行敘述會(huì)將變數(shù)傳送到資料庫端,啟動(dòng)DAD所定義的 oracle使用者schair 登入資料庫去執(zhí)行 tedp_chk 程序

19、。其中 /pls 是由httpd.conf呼叫plsql.conf所定義的虛擬路徑,由mod-plsql用來呼叫相關(guān)的PL/SQL工具處理。3.資料庫端的PL/SQL儲(chǔ)存程序: procedure TEDP_CHK(v_empl varchar2,v_pass varchar2)ISbegin schair_setcookie('cookie_pass',upper(v_pass),'NOCLOSE'); schair_setcookie('cookie_empl',upper(v_empl),'NOCLOSE'); owa_ut

20、il.Redirect_Url(owa_util.Get_Owa_Service_Path|'table_frame');end;<圖四>PL/SQL 儲(chǔ)存程序程式. 說明:由index.html所接收的v_empl變數(shù)傳給tedp.chk程序去做client的帳號及密碼cookie設(shè)定。接著owa_util.Redirect_Url呼叫資料庫端執(zhí)行table_frame程序,該程序呼叫使用目錄供點(diǎn)選。4.網(wǎng)頁點(diǎn)選資料輸入:<圖五>變數(shù)讀取說明:1.在畫面上方點(diǎn)選TABLE查詢及維護(hù) 即出現(xiàn)如圖五網(wǎng)頁,等候輸入變數(shù)。拉選應(yīng)用系統(tǒng)欄位選擇scahir,字串

21、輸入欄鍵入 shfcode,再按執(zhí)行查詢。2.以下程序片段是此網(wǎng)頁的參數(shù)傳遞,接收,及執(zhí)行等內(nèi)容:PROCEDURE TABLE_QRY(v_emp varchar2 default null)IS sel_name varchar2(12) ; v_selno varchar2(7); v_date varchar2(8); v_date1 varchar2(8); p_target varchar2(1); p_sys varchar2(10); p_tab varchar2(20); cookie_status varchar2(1) default 'N'PL/SQL參

22、數(shù)傳遞-系統(tǒng)代碼:p_sys cursor c2 is select '*' sys_code,'全部' sys_name from dual union select sys_code,sys_code|' '|nvl(rtrim(sys_name),'?') sys_name from tabowner;搜尋動(dòng)態(tài)網(wǎng)頁記錄begin . htp.FormSelectOpen('p_sys','應(yīng)用系統(tǒng):'); FOR c2_rec IN c2 LOOP htp.FormSelectOption(c2_rec.sys_name,cattributes=>'VALUE="'|c2_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論