国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle Web應用開發之Apache架設與PL/SQL頁面設計

2024-08-29 13:37:33
字體:
來源:轉載
供稿:網友

  Oracle有多種方法在網頁上顯示數據庫中的數據,如jsp或xml編程。在Oracle8i/9i中應用開發人員可以自由使用java或PL/SQL,把PL/SQL代碼嵌入網頁中實現業務邏輯的頁面就是PSP頁面。
  
  
  PSP頁面及其運行環境Apache mod_plsql模塊
  
  
  Oracle 數據庫中的Oracle HTTP Server組件就是Apache服務器,在Oracle8i/9i中接受PL/SQL調用的Web組件就是Apache的mod_plsql模塊,該模塊為Oracle數據庫產品,在Oracle9iAS中的Oracle Portal中同樣包含,本文不介紹Oracle9iAS中的Web服務。mod_plsql模塊模塊提供了在Apache、Oracle Portal和數據庫之間的嚴密的綜合性和安全性,并改善交互作用和經Web請求調用的程序的執行情況。
  
  Portal開發工具箱(Portal Development Kit,PDK)的兩個主要特點是完全用PL/SQL實現的PDK -PL/SQL和用Java實現調用接口的PDK-Java。它們都能訪問Web資源或數據庫服務器,兩者都能調用Java程序,假如Java程序被導入數據庫中,可以從PL/SQL調用它們。下面是構成全部Portal環境的組件列表:
  
  1.Oracle Database Aerver
  
  2.HTP/HTF包和工具(PL/SQL Web Toolkit)
  
  3.Portal PRocedures(Portal進程)
  
  4.Portal Schema(數據庫表)
  
  5.Oracle 9iAS application Server(及Logon Server)
  
  6.Apache HTTP Server
  
  7.Mod_PLSQL Apache Plug-in
  
  8.Portalets
  
  9.External images(外部圖象)
  
  10.建立應用程序需要的Tables和數據
  
  Oracle 9iAS Application Server和Apache HTTP Server是結構中的底層部分,它們成為開發中的最重要的部分之一。Listener和Mod_PLSQL網關是配對的,Listener自身是個完整的Apache HTTP Server,它的作用是治理HTTP樣式請求的進程。Mod_PLSQL網關負責交換數據進出數據庫。Mod_PLSQL網關包括為了和Net8交流的全部必要信息。Oracle把Apache HTTP Server和Mod_PLSQL網關都作為Oracle9iAS和數據庫安裝的一部分進行安裝。
  
  下面說明當在瀏覽器瀏覽網址http://localhost/pls/simpledad/show時(結果如圖1所示)服務器的響應過程。
  
   Oracle Web應用開發之Apache架設與PL/SQL頁面設計(圖一)
  圖1
  
  
  Apache監聽器是一個HTTP服務,處理所有通過請求端口(默認端口為80)的請求,請求首先路由到本地主機。因為請求字符串中包含"pls",即虛擬目錄,該字符串(表示請求的實際字符串是可配置的,此處為默認配置)的定義在$ORACLE_HOME/apache/modplsql/cfg/plsql.conf文件中,Apache根據這一文件識別出"pls"是一個PL/SQL請求并且把執行任務傳遞給PL/SQL模塊(mod_plsql)。mod_plsql隨后查看網址字符串的剩下部分。"simpledad"是數據庫訪問描述符(Database access Descriptor,DAD),它給出關于mod_plsql怎樣被連接到數據庫中去執行請求的信息,可以配置多個DAD,它包含用戶名、密碼、認證方式、路徑別名等信息。
“show”為mod_plsql執行的PL/SQL過程,假如在URL的最后沒有指定過程名,則mod_plsql會查找默認的過程名,此默認過程名也可在DAD中設置。過程運行并發送結果(使用PL/SQL Web Toolkit生成的)到HTTP緩沖區中,當過程執行完后,HTTP緩沖區的內容通過mod_plsql和Apache返回到瀏覽器。過程可以直接使用PL/SQL Web Toolkit編程,也可以通過loadpsp命令行工具把PSP頁面加載到數據庫中生成過程,瀏覽PSP頁面只需在URL中以過程名結尾即可,不需擴展名“.psp”。
  
  需要注重的是,在Portal體系中,可以由文件夾和文檔來治理用于顯示在瀏覽器中的圖象和多媒體,而本文在僅安裝Oracle數據庫時,圖片等多媒體類型的文件必須存放在“$ORACLE_HOME/apache/modplsql/cfg/images/”路徑下,并且在PSP頁面中調用時使用路徑“admin_/images/”。
  
  PL/SQL語言已經長時間作為Oracle數據庫和開發環境的基礎,Oracle本身是使用PL/SQL建立的,并且Oracle已經建立了從PL/SQL過程直接訪問Html的方法,但太依靠于PL/SQL代碼會使后來的可能不熟悉PL/SQL代碼的開發者難于維護應用程序。使用PL/SQL頁面表示層的優勢之一是實現了表示層與業務邏輯的分離,業務邏輯以存儲過程的形式存儲在數據庫中,優勢之二是PL/SQL頁面頁面的運行取決于對數據庫過程的調用,獨立于應用服務器,在數據庫緩存服務器支持下運行性能好。
  
  
  配置Apache的mod_plsql模塊
  
  
  設置Apache Web 服務器中的mod_plsql模塊來接收瀏覽器對數據庫中的存儲過程的調用。Oracle HTTP Server組件已經包含在Oracle9.0.1服務器中,使用缺省的端口和主機參數,配置文件$ORACLE_HOME/apache/apache/conf/httpd.conf不用修改。需要為Apache Web 服務器設置DAD,步驟如下:
  
  1.瀏覽網址http://202.99.18.136,也是本機地址或Apache服務器的主機地址.如圖2所示。
   Oracle Web應用開發之Apache架設與PL/SQL頁面設計(圖二)
  
  
  圖2
  
  
  2.打開組件mod_plsql的鏈接,如圖3所示。
   Oracle Web應用開發之Apache架設與PL/SQL頁面設計(圖三)
  圖3
  
  
  3.點擊"網關數據庫訪問描述符設置",如圖4所示。可以將新的數據庫訪問描述符添加到現有列表。此處配置的信息包括:用戶名、口令、連接字符串、文檔上載路徑和過程、需要進行 long raw 上載的文件擴展名、路徑別名和相關過程,以及確認連接的信息。本例中修改SIMPLEDAD,如圖5所示。
   Oracle Web應用開發之Apache架設與PL/SQL頁面設計(圖四)
  圖4
  4.在SIMPLEDAD的編輯頁面中,修改Oracle 用戶名為cf,Oracle 口令為cf,Oracle 連接字符串為db:1521:o90,假如網關在所連接的數據庫以外的其他Oracle主目錄中運行,則需要TNS連接字符串。此外,也可使用以下格式的組合字符串來替代TNS連接字符串,即::是運行數據庫的主機名,是TNS監聽程序監聽的端口號,是數據庫例程的Oracle SID名稱。為了獲取最佳性能,請保持網關的數據庫連接池處于打開狀態。網關使用"文檔訪問信息"向與此數據庫訪問描述符關聯的數據庫上載或下載文檔。默認情況下所有文檔都將以BLOB類型上載。通過在Long Raw字段中指定以逗號分隔的文件擴展名,可以覆蓋此默認設置。此字段的"*"值將使所有文檔以Long Raw 數據類型上載。"文檔訪問過程"指定用于訪問文檔的虛擬路徑。"文檔訪問過程"字段指定網關處理文檔請求所調用的過程。此處都使用缺省值。假如通過此網關連接的應用程序支持將絕對路徑映射到要害字,可以指定要害子,本例中此處為空。設置完該頁面后返回上級頁面。
   Oracle Web應用開發之Apache架設與PL/SQL頁面設計(圖五)
  圖5
  
  
  5.下面設置全局網關。在如圖3所示的網關配置菜單中選擇"網關全局設置",如圖6所示,將第5步中編輯修改的數據庫訪問描述符SIMPLEDAD作為默認全局網關的DAD。
   Oracle Web應用開發之Apache架設與PL/SQL頁面設計(圖六)
  圖6
  
  
  
  編寫存儲過程和網頁代碼
  
  
  本實例的數據庫對象都在cf/cf操作模式下。數據庫環境為Oracle9.0.1,帶有Oracle HTTP Server安裝(已自動安裝mod_plsql模塊),未安裝Oracle9iAS及其任何組件。
  
  1.建立表student并插入7條記錄。
  
  CREATE TABLE student
   (ID NUMBER(5,0) NOT NULL
   ,NAME VARCHAR2(15) NOT NULL
   ,DOB DATE
   ,GENDER VARCHAR2(2) DEFAULT '男'
   ,CLASSYR NUMBER(4,0) DEFAULT 2002 NOT NULL
   ,MAJOR VARCHAR2(25)
   ,EMAIL VARCHAR2(50)
   ,PHOTO VARCHAR2(100)
   );
  alter session set nls_date_format = 'dd-mon-yyyy';
  alter session set nls_date_language = 'AMERICAN';
  insert into student values ( 1001,'趙鵬','14-JUL-1975','男',2001,'History',
  '1001@NetUniversity.org','u1001.gif')
  /
  insert into student values ( 1002,'劉宇','08-OCT-1975','女',2001,'Science',
  '1002@NetUniversity.org','u1002.gif')
  /
  …………
  
  
  
  2.以帳戶cf/cf建立存儲過程show_student。

  
  create or replace procedure show_student
  (p_id     in out student.id%TYPE
  ,p_name     out student.name%TYPE
  ,p_dob      out student.dob%TYPE
  ,p_gender    out student.gender%TYPE
  ,p_classyr    out student.classyr%TYPE
  ,p_major     out student.major%TYPE
  ,p_email     out student.email%TYPE
  ,p_photo     out student.photo%TYPE
  )
  IS
  CURSOR get_student(p_id in student.id%TYPE DEFAULT 1001) IS
  SELECT * FROM student
  WHERE id = NVL(p_id,1001);
  student_row student%ROWTYPE;
  BEGIN
  IF p_id<1001 THEN
    p_id:=1001;  
  END IF;
  IF p_id>1007 THEN
    p_id:=1007;
  END IF;
  OPEN get_student(p_id);
  FETCH get_student INTO student_row;
  CLOSE get_student;
  p_name     := student_row.name;
  p_dob      := student_row.dob;
  p_gender    := student_row.gender;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天气| 丰顺县| 梅河口市| 太和县| 修水县| 临清市| 新巴尔虎右旗| 环江| 双流县| 正镶白旗| 唐河县| 太和县| 库车县| 汾西县| 南宫市| 汉源县| 东台市| 密云县| 上思县| 大庆市| 太保市| 新沂市| 白玉县| 龙江县| 龙游县| 云霄县| 长葛市| 武宣县| 呼伦贝尔市| 陆丰市| 九江市| 专栏| 翁源县| 江都市| 巴塘县| 北川| 九台市| 潼关县| 花莲市| 宝鸡市| 鹿邑县|