Embed
Email

??????Oracle??????

Document Sample
??????Oracle??????
Shared by: HC111124055510
Categories
Tags
Stats
views:
5
posted:
11/23/2011
language:
Chinese
pages:
10
專題報導 - 快速建構 Oracle 網頁應用程式系統 31





快速建構 Oracle 網頁應用程式系統



--使用 Oracle PL/SQL Web 開發工具



沈玉升

國立中興大學計算機及資訊網路中心

台中市 402 國光路 250 號(04-22840306 轉 724)

E-Mail:ysshen@nchu.edu.tw





所謂 Oracle 網頁應用程式是指用 Oracle 工具程式存取 Oracle 資料庫的網

頁應用程式。目前我們較常見的 ASP、PHP、JSP 等都有提供資料庫連接支援。

但對以 Oracle 資料庫為基礎所開發的組織內各類資訊系統而言,選擇與資料庫

密切配合的 Oracle 網頁開發工具,更能有效率的發揮資料庫資料計算與網站存

取瀏覽的資訊展現速度。





本文將略述選擇用 PL/SQL 當開發網頁應用系統的考量點、Oracle Web 應用

程式的執行機制、資料庫伺服端的 PL/SQL Web Toolkit 簡介、WEB /應用程式伺

服端必須設定的 DAD(Database Access Descriptor)環境設定以及手寫 PL/SQL

應用程式的開發流程等。並用一個應用實例擷取片段,在 WIN/NT 平台上示範,看

完本章,即使您是個網頁應用程式新手,也可輕易著手建構您的系統了。







一、為何選擇用 PL/SQL 開發網頁?



目前 Oracle 提供的開發工具有 Java Servlet、PL/SQL Web Toolkit、

Designer、Portal 或使用 Developer 的 Forms 和 Reports 等五種基本方式來開



發網頁程式 上述開發工具各有使用上的優缺點, 您必須根據實際的應用系統需

求來選擇. 以下幾個因素可供在網頁開發工具的選擇評量上參考:

1. 使用者群屬性。

2. 使用者介面的複雜度。

3. 系統開發時限。

4. 開發者對工具的熟悉度。





因此若您要建構的系統使用者來至網際網路、非專業使用、使用者介面只需

提供資料查詢瀏覽或單純的資料登錄維護作業(不需做到滑鼠控制等) 、有開發

時間上的壓力、對 Java 不熟悉、但熟悉 PL/SQL 程式語言與基本的 HTML 網頁資

料展現格式等特性,那選擇使用以 HTML 為基礎的 PL/SQL Web Toolkit 當作網頁



中興大學計資中心技術通訊第 17 期

專題報導 - 快速建構 Oracle 網頁應用程式系統 32



應用程式的開發工具應是個不錯的決定。







二、Oracle Web 應用程式的執行機制:





一個完整的 Web 系統包括了客端的瀏覽器,中間層的 web/應用伺服器

(Application server),以及後端資料庫伺服器(Database server)等 3 層架構。

其中 web/應用伺服器端是用來與 Web 瀏覽器溝通,及執行應用程式的應用程式伺

服器。後端資料庫則儲存以 HTML 為基礎,使用 Oracle PL/SQL Web 套裝軟體函數

或程序呼叫方式寫的儲存程式碼(Stored Procedures),這些程式碼產生一系列

的網頁供瀏覽器顯示。開發這種應用程式碼較簡易,只要您熟悉 Oracle 的

PL/SQL 語言,對 HTML 的資料格式及瀏覽器如何呈現的視窗控制有基本的認識 ,

就可很輕易上手寫 web 應用程式。



本文範例安裝的是 Oracle 9i Application Server 1.0.2/NT2000 版本,

安裝選[Oracle HTTP Server only],為 Oracle9i 應用程式伺服器的主要

元件,Web server 是直接與瀏覽器溝通的元件,其溝通的方法是使用 HTTP

(HyperText Transport Protocol),目前 Oracle 新的版本都是使用標準 Apache

Web server。在我們所開發的應用程式裡,Apache HTTP servr 為固定的檔案提

供服務,這些檔案包括固定的 HTML 檔案或影像檔等。換句話說,您寫的 HTML 檔案

或影像檔必須放在 Web 主機端,儲存程式必須放在資料庫端。







Web server mod_jserver Apache Jserv

(Apache

Web server

HTTP OracleJSP

mod_ose Java

server)

Mod_cgi mod_plsql PL/SQL





mod_cgi Form server

Report server

Database





Oracle9i 應用程式伺服器的主要元件





在此以 PL/SQL Web 應用程式實例(請參考「範例說明」單元) 的執行流程來

簡略說明運作機制:

1. 當使用者要求一個 Web 網頁(鍵入或點選一個 URL)時.如畫面鍵

入 http://shen/schair/index.html

中興大學計資中心技術通訊第 17 期

專題報導 - 快速建構 Oracle 網頁應用程式系統 33



2. HTTP server 收到 index.html 裡有呼叫執行 pls/schair 的 PL/SQL

儲存程序請求時(Request),就會將這個請求送至 Apache 的 mod_plsql

模組。由的登入系統原始碼可知,此網頁使用 HTML form method

接收變數的方式將值傳給 action="/pls/schair/tedp_chk"

3. mod_plsql 模組使用包含在 URL 的設定需求,由 DAD(Database Access

Descriptor)決定用哪個資料庫帳號簽入後驅動該資料庫端的儲存程

序。

4. 接收的請求會傳給資料庫的儲存程序(Stored PL/SQL Procedure)處理,

執行的結果利用 PL/SQL Web Toolkit 的 HTP 套裝軟體產生 HTML 文件

格式送出給 Web server,轉送至瀏覽器展示。





三、PL/SQL Web Toolkit 簡介





由上述單元的執行流程可知,在您叫用 PL/SQL 網頁應用程式前,Web Toolkit

套裝軟體需先載入系統,如此您寫的 PL/SQL 網頁應用程式才能在資料庫端執

行。PL/SQL Web Toolkit 包括 2 大類:

1. htp 和 htf 套裝軟體:用來產生 html 標籤格式的輸出結果。此套裝軟體包含

使用到的 PL/SQL 資料類別,程序及函式呼叫等,與 HTML3.2 版本指令一對一對

應,用來將資料庫端抓取的資料利用該套裝軟體產生動態 html 網頁輸出。

如下左邊「呼叫 Procedure」指令,是存在資料庫端的程序程式,其執行後的輸出

結果如右邊的「產生 html」展示在瀏覽器上。



呼叫 Procedure 產生 HTML

Procedure show

Begin Overview

htp.htmlOpen; Hello Word

htp.header(1,’Overview’);

htp.print(‘Hello Word’); 基本網頁展現

htp.para;

htp.bold(‘基本網頁展現’);

htp.htmlclose;

End;





2. owa 套裝軟體:字首 OWA_開頭的套裝軟體用來處理資料庫伺服端與 web 應用伺



服端間的 http 溝通 包括 owa_cookie/cookie 設定,owa_image/影像按鈕方位

操控,owa_opt_lock/資料庫記錄鎖定,owa_pattern/字串搜尋,owa_sec/安全

機制,owa_text/大量字串處理,owa_util/軟體工具等函式或程序呼叫。以下

是 cookie 設定的儲存程序 owa 使用範例:









中興大學計資中心技術通訊第 17 期

專題報導 - 快速建構 Oracle 網頁應用程式系統 34









procedure schair_setcookie (v_cookie_name VARCHAR2,

v_cookie_val VARCHAR2,

v_close VARCHAR2 DEFAULT 'CLOSE')

IS

BEGIN

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 指令來列出上述套裝軟體名稱,以確認 PL/SQL Web

Toolkit 是否安裝成功:

select owner,object_name

from dba_objects

where object_type=’PACKAGE’

and (object_name like ‘HT%’or object_name like ‘OWA%’);





四、建 DAD 來啟動資料庫相關程式執行





在 Oracle HTTP server 上選 mod_plsql 模組,建一個 DAD(Database Access

Descriptor)紀錄,作為 PL/SQL web 應用程式呼叫資料庫服務時用哪個資料庫帳

號簽入,以驅動該資料庫端的儲存程序。以下是 DAD 名稱為 schair 的步驟:

1.在瀏覽器上鍵入:

http://shen/

點選 mod_plsql.









中興大學計資中心技術通訊第 17 期

專題報導 - 快速建構 Oracle 網頁應用程式系統 35



2.點選:

閘道 Database Access

Descriptor 設定









3.點選:

新增預設 (空白的組態)









4.新增 schair DAD









中興大學計資中心技術通訊第 17 期

專題報導 - 快速建構 Oracle 網頁應用程式系統 36









五、手寫 PL/SQL 網頁應用程式

當您已將使用者系統環境設定完成後,接著就可撰寫您的網頁應用程式了。只

要有一般的文書編輯器就可開始動工。以下是網頁的撰寫流程:





1. 應用程式設計:

以 HTML 為基礎的 web 應用程式使用 http 通訊協定,因此在設計網頁間的流

程時必須考慮到 http 運作的特性限制。例如 http 的運作是”stateless”,

server 端無法辨認請求者的身分,因此必須建立系統登入機制以辨認呼叫者的

身份。目前是使用 cookie 儲存使用者帳號密碼在 client 端,並在每個被呼叫的

程序程式裡作 cookie 檢查。

由於 web 網頁的運作模式是使用者叫用一個 URL 進入系統,從網頁接收資料,接著

web 等待使用者下達下一個點選按鈕或輸入相關訊息,因此明確的畫出每個網頁

間的連接流程,定義所有的模組功能及傳遞參數是有必要的。





2.網頁設計:

依據上一個步驟畫出的應用系統流程圖,設計 HTML 網頁。當然您可用記事本

完成所有的 HTML,但選擇視覺化的 HTML 軟體編輯器(像 Macromedia Dreamwaver)

來設計您的網頁畫面以產生 html 程式碼會更有效率。





3.轉換:

將 html 程式碼改寫成使用 PL/SQL 儲存程式,只需將每行的 html 用單引號’

括起來,由 htp.print 來呼叫就完成了。如下例:



htp.print('');

htp.print(''||'');

htp.print('Table 查詢/維護');

htp.print('');

htp.print('登出系統');

htp.print('');







4.加入動態邏輯程式:

將 pl/sql 相關的資料計算指令嵌入程式中。







六、範例說明

以下 web 應用程式範例是用來查詢資料庫相關 table 系統文件紀錄。在此擷

取相關網頁及程式碼片段來說明使用 PL/SQL 寫成的應用程式開發步驟。



中興大學計資中心技術通訊第 17 期

專題報導 - 快速建構 Oracle 網頁應用程式系統 37





1.入口網站呼叫,接收帳號密碼:









畫面鍵入 http://shen/schair/

說明:內定值是呼叫 web server 端的

\apache\apache\htdocs\schair\index.html 網頁

其中 shen 是 HTTP server 的主機名稱,schair 是在 htdoc 文件根目錄下

(由 http.conf 所定義的

DocumentRoot"c:\isuites\Apache\Apache\htdocs")

所建的應用程式存放目錄,除了 PL/SQL 儲存程序存放在資料庫,其餘的

web 應用程式檔案均放在此目錄下。





2. index.html 網頁原始碼製作:









圖二的原始碼內容.

說明:1. 使用相對位址呼叫 rose.bmp 圖檔,因

中興大學計資中心技術通訊第 17 期

專題報導 - 快速建構 Oracle 網頁應用程式系統 38



此此檔必須放在 htdocs 文件根目錄下的 schair 子目錄才能被呼叫到 。

2.此行敘述會將

變數傳送到資料庫端,啟動 DAD 所定義的 oracle 使用者 schair 登入

資料庫去執行 tedp_chk 程序。其中 /pls 是由 httpd.conf 呼叫

plsql.conf 所定義的虛擬路徑,由 mod-plsql 用來呼叫相關的 PL/SQL

工具處理。





3.資料庫端的 PL/SQL 儲存程序:



procedure TEDP_CHK(v_empl varchar2,v_pass varchar2)

IS

begin

schair_setcookie('cookie_pass',upper(v_pass),'NOCLOSE');

schair_setcookie('cookie_empl',upper(v_empl),'NOCLOSE');

owa_util.Redirect_Url(owa_util.Get_Owa_Service_Path||'table_frame');

end;





PL/SQL 儲存程序程式.

說明:由 index.html 所接收的 v_empl 變數傳給 tedp.chk 程序去做 client 的帳

號及密碼 cookie 設定。接著 owa_util.Redirect_Url 呼叫資料庫端執行

table_frame 程序,該程序呼叫使用目錄供點選。





4.網頁點選資料輸入:









變數讀取

說明:1.在畫面上方點選[TABLE 查詢及維護] 即出現如圖五網頁,等候輸入變

數。拉選[應用系統]欄位選擇 scahir,字串輸入欄鍵入 ‘shfcode’,再按

[執行查詢]。

2.以下程序片段是此網頁的參數傳遞,接收,及執行等內容:

中興大學計資中心技術通訊第 17 期

專題報導 - 快速建構 Oracle 網頁應用程式系統 39



PROCEDURE TABLE_QRY(v_emp varchar2 default null) PL/SQL 參數傳遞

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';





-系統代碼: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;

begin 輸入資料變數讀

……..

htp.FormSelectOpen('p_sys','應用系統:'); 取,接收,及執行

FOR c2_rec IN c2 LOOP

htp.FormSelectOption(c2_rec.sys_name,cattributes=>'VALUE="'||c2_rec.sys_c

ode||'"');

END LOOP;

htp.FormSelectClose;



htp.print('Table 或 View 或 Column 等之 中英文名稱 字串搜尋:');

htp.FormText('v_qrystr',24,24,'');



htp.formsubmit(cvalue=>'執行查詢');

htp.formclose;

end;





5.查詢結果顯示:









變數讀取查詢結果







中興大學計資中心技術通訊第 17 期

專題報導 - 快速建構 Oracle 網頁應用程式系統 40



6.資料維護作業:









資料維護作業







七、結語:





使用 PL/SQL 撰寫的 WEB 應用程式其優點是存取資料庫速度快,特別適合處理

大量的資料運算,但只能用專屬於 Oracle 資料庫與它的應用程式伺服器,無法移

植到其他不同的資料庫或 WEB 伺服器。若您將來有更換不同的 WEB 伺服器或資料

庫而不更動 WEB 應用程式的考量,那選擇 Java 或許會較有彈性,相對的其存取資

料庫速度較慢。





八、參考文獻:





1. 謝金興譯,Oracle 網頁應用 101,麥格羅‧希爾國際出版。

2. ORACLE,Administrator Oracle9i Application Server Student Guide,2001。

3. ORACLE,Oracle Web Application Server:Develop Web-Based Applications

student Guide。

4. ORACLE,Oracle Web Application Server Cartridge User’s Guide R3。









中興大學計資中心技術通訊第 17 期


Other docs by HC111124055510
Energy Saving 101�ICBA Members
Views: 1  |  Downloads: 0
Karta dan
Views: 7  |  Downloads: 0
Collana
Views: 1  |  Downloads: 0
UNION APPRENTICESHIP PROCESS
Views: 0  |  Downloads: 0
Peatling Parva 1881 Census
Views: 2  |  Downloads: 0
No Child Left Behind
Views: 0  |  Downloads: 0
B2401 LAB SYLLABUS
Views: 0  |  Downloads: 0
What�s Love got to do with it��
Views: 0  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!