程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 編寫操作 DB2 數據的 Web 應用程序(第 1 部分)

編寫操作 DB2 數據的 Web 應用程序(第 1 部分)

編輯:DB2教程

簡介

數字,數字無處不在,每個人都想得到不同形式的數據。本文描述了我是如何編寫幾個 servlet 和 JSP(Java Server Pages)來允許管理員、開發人員、測試員、計劃人員以及任何人訪問最新的測試結果並用多種格式顯示它們的,這幾個 servlet 和 JSP 運行在 IBM HTTP Web 服務器上的 WebSphere Advanced Edition  (AE v4.01) 下,使用 Java™ 1.3 JDK,訪問存儲在 IBM DB2 UDB  V7.2 數據庫中的原始測試數據。

閱讀本文後,您將能夠安裝和配置 WebSphere AE 版本 4.01、安裝和配置 DB2 以及編寫 servlet 和 JSP。您還將學習如何配置這些 servlet 和 JSP 以便與 AE 協調工作、創建 DB2 表並向它們填充數據、在更多機器中的某一台上運行整個配置以及最終啟動諸如 Netscape (v4.7) 那樣的 Web 浏覽器並查看它完全正確地運行。為了增加一些樂趣,我在浏覽器中包含了諸如自動切換頁面那樣的幾個小項,還包含了聲音字節。我將描述如何添加允許測試員用新的測試運行更新數據庫的附加 servlet。

最後再提一句,我想說的是:本示例解決了需要用從高級摘要到非常詳細信息在內的多種格式的測試信息的特殊問題。有一種非常類似的方法可用於多種類型的數據。

本文適用於希望了解 Web 世界的 DB2 開發人員。本文的內容很基礎,足以適用於所有類別的新手,這些類別是:DB2、Web、servlet、JSP 和 Html。其中的示例很簡單、步驟也很詳細,您足以輕松讀懂它們。

概述

圖 1顯示了最終配置。諸如 Netscape 或 Internet Explorer 那樣的 Web 浏覽器擔當 WebSphere 高級版服務器的客戶機。


圖 1:典型的生產拓撲結構
編寫操作 DB2 數據的 Web 應用程序(第 1 部分)

服務器可以與浏覽器位於同一台機器上,也可以位於遠程機器上。Web 服務器連接至一個數據庫服務器以便檢索數據,然後該 Web 服務器格式化該數據以在浏覽器中顯示。該數據庫服務器可以與該 Web 服務器位於同一台機器上,也可以位於不同的機器上。開發這樣的環境時,所有組件都在一台機器上較容易而且較實際。開發、測試和調試的任務也更容易。

但是,一旦應用程序准備用於生產,那麼浏覽器可以在任何機器上,或許不在 Web 服務器的機器上,而根據負載,Web 服務器和數據庫服務器可能是同一台機器,也可能是不同的機器。本文中所有步驟都已在一台機器上完成。我將指出這個開發環境和生產環境之間的區別。 2002-6-30

環境設置

在實際開始享受編寫和測試應用程序的樂趣之前,我們需要安裝各種組件。因為這涉及 servlet,所以我們需要編寫 Java 代碼,這意味著您將需要安裝 Java JDK 版本 1.3,因為這是 WebSphere AE 4.01 支持的版本。我們還需要安裝 DB2。我在這篇更新的文章中使用了版本 7.2。最後,安裝 AE 4.01。作為替代選擇,如果您沒有或不希望獲取 JDK 和 DB2,那麼您只要安裝包括 IBM 版本的 JDK 1.3 以及還包括 DB2 Instant DB(DB2 的較小版本)的 AE。我將把後一選項作為最直接的方法描述。側欄中是前一選項所需的步驟。所有步驟和抓屏都是在安裝了 Service Pack 2 的 Windows 2000 上完成的。對於 Windows NT 平台,這些步驟應當是相同的。

WebSphere 高級版安裝

本文中我將自始至終使用 WAS 表示 WebSphere 高級版的主要組件 WebSphere Application Server。

圖 2:安裝技巧

安裝 JDK 1.3:從您喜愛的網站下載 Java 開發者工具箱,運行自解壓可執行文件或解壓縮,然後運行安裝。完成安裝後,在 PATH 環境變量中添加 <inst.-path>\jre\bin;<inst.-path>\bin;。同時在 CLASSPATH 中添加 <inst.-path>\jre\lib\rt.jar;<inst.-path>\lib\tools.jar;。

安裝 DB2 UDB:插入 IBM DB2 UDB V7.2 CD。自動播放應該啟動安裝程序。確保安裝了樣本數據庫,並測試它以確保每一步都正確完成。將自動配置運行時環境。如果您查看 PATH 和 CLASSPATH 環境變量,那麼應該看到那兒有一些 DB2 信息。作為替代選擇,如果已安裝了 V7.1,那麼在 V7.1 上面安裝 FixPak 3 或更高版本。

安裝 WAS 4.01:最容易的方法是選擇 Typical 安裝,它安裝所有您需要的組件。對於 Custom 安裝,取消選擇您已安裝的組件。要使用您現有的 JDK 1.3,取消選擇它,然後按下 Other JDK 按鈕。確保找到您的 JDK。如果沒有,那麼使用 Browse... 按鈕來定位。類似地,如果您已安裝了 HTTP 服務器,那麼從列表上取消選擇它。我建議您不要取消選擇樣本,因為它們提供了可用於學習的多種代碼。

插入 WebSphere CD,自動播放應該使安裝程序開始運行。如果沒有,那麼通過從位於 Windows 桌面的 Start 菜單上選擇“Run”來運行 CD 上的 install.exe。大致遵循這些步驟:

選擇 Typical Install 或 Custom Install。Typical Install 將安裝 HTTP 服務器、WAS、DB2 和 JDK。Custom Install 允許您選擇您希望安裝的組件,所以如果您已安裝了 DB2 或 JDK,那麼使用這個選項。下列步驟假設選擇 Typical Install,因為那可能是最常見的安裝類型。

輸入作為 WAS 安全性標識的用戶標識和密碼。僅為簡單起見,我使用我的 Windows 登錄標識。

選擇安裝 WAS 的目錄。如果您正在安裝 HTTP 服務器,那麼還將要求您輸入它的安裝目錄。我建議采用不同位置。

輸入 DB2 用戶標識和密碼以便 WebSphere 設置和訪問 DB2。WAS 為一起提供的樣本創建一個名為“was”的數據庫。注:這可能不是訪問運行在 Web 服務器上的 DB2(通過 servlet 或類似的方法)的用戶標識和密碼。由於我已經安裝了 DB2,所以我輸入現有的用戶標識和密碼。

輸入 WAS 的文件夾名以便創建桌面快捷方式。

既然已經收集了所有信息,那麼安裝可以繼續。取決於您的安裝選擇,在安裝了 HTTP 服務器、DB2 和 JDK 後將安裝 WAS。

安裝完成後,需要重新引導。

重新引導之後,您將看到一個打開的 DB2 CLP 窗口以及正在創建的 WAS 數據庫。這用於隨 WAS 一起提供的樣本。根據您機器的性能,它將運行幾分鐘。

數據庫配置

本節的目的不是解釋如何創建 DB2 表、列和鍵等。在本節中,我們將演示一種使用包括 DB2 在內的多種工具以解決特定問題的方法。因此,這裡將不探究數據庫配置、表設置和數據填充。DB2 有極佳的手冊、聯機幫助和控制中心(Control Center)或命令中心(Command Center)GUI 工具來輔助這個任務。

在本示例中使用了兩張表。TSTCASES 包含諸如每個平台上每種產品的測試用例號那樣的靜態信息。TSTRSLTS 表包含諸如每個平台上每種產品每次測試運行的結果等動態信息。這兩張表都包含在 TESTSTAT(測試統計)數據庫中。TESTSTAT 數據庫和這些表都是由以下 DB2 命令創建的。無論您的模式名是什麼(通常是您的機器名),字段“Machinename”應該用模式名來替代。

create database TESTSTAT

TSTCASES 表是由以下 DB2 命令創建的:

CREATE TABLE "Machinename.TSTCASES"("PROD_ID" CHAR(10) NOT NULL, "PRODUCT" CHAR(30) 
NOT NULL,"PLATFORM" CHAR(20) NOT NULL, "NUM_C_AUTO_TCS" INTEGER NOT NULL , 
"NUM_Java_AUTO_TCS" INTEGER NOT NULL , "NUM_C64_AUTO_TCS" INTEGER NOT NULL, 
"NUM_C_MANUAL_TCS" INTEGER NOT NULL , "NUM_Java_MANUAL_TCS" INTEGER NOT NULL , 
"NUM_C64_MANUAL_TCS" INTEGER NOT NULL, 
"NUM_JSUI_TCS" INTEGER NOT NULL , "NUM_OLT_TCS" INTEGER NOT NULL , 
"NUM_LOGBR_TCS" INTEGER NOT NULL , "NUM_OTHER_TCS" INTEGER NOT NULL) ; 
 
ALTER TABLE "Machinename.TSTCASES" ADD PRIMARY KEY ("PROD_ID", "PLATFORM"); 

TSTRSLTS 表是由以下 DB2 命令創建的:

CREATE TABLE "Machinename"."TSTRSLTS" ("DRIVER" CHAR(15) NOT NULL, "PLATFORM" 
CHAR(20) NOT NULL, "PROD_ID" CHAR(10) NOT NULL, 
"TEST_MacHINE" CHAR(15) NOT NULL, "JDK_LEVEL" CHAR(15) NOT NULL, "COMPILER_LEVEL" 
CHAR(15) NOT NULL, "OS_LEVEL" CHAR(15) NOT NULL, "NUM_TCS" INTEGER NOT NULL, 
"NUM_PASSED" INTEGER NOT NULL, "DATE_TIME" TIMESTAMP NOT NULL, "C_AUTO_PASSED" 
INTEGER NOT NULL WITH DEFAULT 0, "C_AUTO_FAILED" INTEGER NOT NULL WITH DEFAULT 0, 
"JAVA_AUTO_PASSED" INTEGER NOT NULL WITH DEFAULT 0, "Java_AUTO_FAILED" 
INTEGER NOT NULL WITH DEFAULT 0, "C64_AUTO_PASSED" INTEGER NOT NULL 
WITH DEFAULT 0, "C64_AUTO_FAILED" INTEGER NOT NULL WITH DEFAULT 0, 
"C_MANUAL_PASSED" INTEGER NOT NULL WITH DEFAULT 0, "C_MANUAL_FAILED" INTEGER NOT NULL 
WITH DEFAULT 0, "Java_MANUAL_PASSED" INTEGER NOT NULL WITH DEFAULT 0, 
"Java_MANUAL_FAILED" INTEGER NOT NULL WITH DEFAULT 0, "C64_MANUAL_PASSED" 
INTEGER NOT NULL WITH DEFAULT 0, "C64_MANUAL_FAILED" INTEGER NOT NULL WITH DEFAULT 
0, "JSUI_PASSED" INTEGER NOT NULL WITH DEFAULT 0, "JSUI_FAILED" INTEGER 
NOT NULL WITH DEFAULT 0, "OLT_PASSED" INTEGER NOT NULL WITH DEFAULT 0, 
"OLT_FAILED" INTEGER NOT NULL WITH DEFAULT 0, "LOGBR_PASSED" INTEGER 
NOT NULL WITH DEFAULT 0, "LOGBR_FAILED" INTEGER NOT NULL WITH DEFAULT 0, 
"OTHER_PASSED" INTEGER NOT NULL WITH DEFAULT 0, "OTHER_FAILED" INTEGER 
NOT NULL WITH DEFAULT 0, "LATEST" CHAR(1) NOT NULL WITH DEFAULT 'N'); 
 
    
 
ALTER TABLE "Machinename"."TSTRSLTS" ADD CONSTRAINT PRIMARY 
KEY ("DRIVER", "PLATFORM", "PROD_ID", "JDK_LEVEL", "COMPILER_LEVEL", "OS_LEVEL); 
 

通過以下命令,將數據填充到 TSTCASES 表中:

IMPORT FROM <path>\tstcases OF DEL MODIFIED BY chardel"" coldel, 
decpt. MESSAGES dummy INSERT INTO <Machine-name>.TSTCASES

通過以下命令,將數據填充到 TSTRSLTS 表中:

IMPORT FROM <path>\tstrslts OF DEL MODIFIED BY chardel"" coldel, 
decpt. MESSAGES dummy INSERT INTO <Machine-name>.TSTRSLTS

注:DB2 有輔助創建數據庫、表等的向導。不一定非得學習上面的命令,但卻很有用,特別是對於要獲得經驗的人員。

WebSphere 高級版配置

下一個任務是在開始添加我們新的應用程序之前配置 WAS,並確保它正確地運行。我們將配置 WAS,所以它的樣本中至少有一個將運行。有一個到 http://<node>/WSsample.index.Html 的桌面鏈接,該鏈接是對樣本、如何配置它們以及運行它們的鏈接的介紹。我將不描述如何設置所有樣本,所以有關那方面的信息,請參考該鏈接。稍後當我們集成新的應用程序時,將有更多信息。

作為 IBM HTTP 服務器安裝的一部分,創建了兩個服務:IBM HTTP Server 和 IBM HTTP Administration。這兩個服務應該被自動啟動,而且現在的狀態應該是 Started。

WAS 安裝添加了一個名為 IBM WS Adminserver 4.0 的服務。可能沒有啟動它,但需要啟動它。現在從 Services 控制面板或從 Start 菜單啟動它。選擇 Start->Programs->IBM WebSphere->Application Server V4.0 AE->Start Admin Server來啟動這個服務。如果它不能啟動,那麼轉至 MS-Command 提示窗口,切換至 <install-path>/aPPServer/bin 目錄,並輸入 adminserver.exe以顯示啟動過程和失敗的原因。

從 Start 菜單點擊 Start->Programs->IBM WebSphere->Application Server V4.0 AE->Administration Console啟動 WAS Administration Console。根據您在安裝期間使用的組名,您的菜單名可能稍有不同。如果出現問題,那麼遵循那些類似的適用於管理服務器的步驟,但是要運行 adminclIEnt.bat。

在 Administration Console 的左上窗格中,展開 WebSphere Administrative Domain。展開 Nodes 選擇項。您將看到列出的您的機器名。選中您的機器名以便更新右邊窗格。這樣允許您更改各種配置。您的機器被稱為節點。打開您的機器以便查看應用程序服務器列表。打開那個列表,查看缺省服務器列表。如果服務器正在運行,那麼其圖標將是一個帶箭頭的框,如果服務器不在運行,其圖標將是含有紅色 X 的框。如果它不在運行,則您希望啟動服務器。從菜單欄選中 PLAY按鈕(或 start 按鈕)。
注:如果啟動您的節點時出現問題,您可以查看位於 <install-path>/aPPServer/logs 目錄中的各種日志文件。同時,Administration Console 的底部顯示了近期發生的各種事件。如果有問題,您可以查看那裡,然後滾動列表以進行故障診斷。您可以選中一條消息,並按下 Details 按鈕來查看更多信息。

現在查看它是否完全工作正常。轉至 Start->Programs->IBM WebSphere->Application Server V4.0 AE->Samples。這樣就啟動了您的缺省浏覽器,並顯示 Samples 頁面。我們將測試 Form 樣本。在浏覽器的左窗格中,從 Samples.ear節下選中 YourCo鏈接。現在右窗格顯示各種樣本。選中 Form鏈接。這裡,您可以閱讀該樣本做什麼,然後選中 Run this sample鏈接。或許將啟動一個新的浏覽器窗口,其中顯示一個表單。輸入一些信息,然後按下 Submit按鈕。幾秒鐘後,應該顯示結果頁面。此時,我們知道已配置了 WAS,而且它正在運行。現在轉至我們的應用程序!

-

開始享受樂趣 — 您的第一個頁面

圖 3演示了我們應用程序的最終文件結構。它是一個 Java 服務器頁面、Html 頁面和 servlet 的組合。沒有擴展名的文件是 servlet。縮進顯示了層次結構或者哪個頁面調用了另一個頁面。在本文中,我不會包括或描述所有頁面的詳細信息,因為該功能的許多方面都是多次重復的。


圖 3.應用程序結構
編寫操作 DB2 數據的 Web 應用程序(第 1 部分)

我們將創建第一個 HTML 頁面 TestTeam.html,在浏覽器中打開該頁面然後配置 WAS 以便在請求時提供這個頁面。這是第一個頁面,但不是主頁。從 圖 3中,我們看到 TestTeam.html 只調用 TestMain.jsp。 圖 4a顯示了這個 HTML 源代碼。請注意 1-2 行的樣本文本。這意味著這個頁面應該顯示 8 秒鐘(Content="8"),然後要顯示的 URL 是 TestMain.JSp。TestMain.JSP 是主頁。下面的 圖 4b 顯示了這個 Html 文件的結果。

5-15 行顯示了 Html 的幾個基礎知識。它按序顯示了如何將背景設置為圖像,在本例中它是小的 jpg 文件,當一次又一次重復使用該文件時,它構成了一個白色大理石背景。接著是標題,隨後是 1-2 行中顯示的介紹性語句,它是一張 DB2 UDB V7.1 徽標的圖片以及一張 WebSphere Advanced Edition 徽標的圖片。請注意 alt="..b..."。如果不能顯示圖片,那麼就顯示該文本。接近末尾的 19-21 行是嵌入聲音字節(wav 文件)的語句。當顯示該頁面時,聲音字節就播放了。我將這個頁面設置為顯示 8 秒鐘的原因是為了允許聲音字節播放完成。這個特定的聲音是取自 Star Trek 的開門聲。

圖 4a:TestTeam.Html 代碼樣本及其顯示

1  <Html><HEAD><META HTTP-EQUIV="Refresh" 
2  Content="8; URL=TestMain.JSP"> 
3  <TITLE>Test Results</TITLE></HEAD> 
4  <body text="#FF0000" bgcolor="#FFFFFF" link="#FFFF00" vlink="#F00000" 
5  alink="#FF8080" background="resources/whtmarb.jpg"> 
6  <center><H1>Test Results</H1> 
7  <p><font color="#0000FF"> This Web site 
8  is driven by WebSphere Advanced Edition 
9  4.01, IBM HTTP server, DB2 UDB V7.2, 
10 JDK 1.3 SR?</font></p> 
11 <table><tr><td><center><img 
12 src="/School/UploadFiles_7810/201105/20110503092356342.gif" 
15 alt="WebSphere AE 4.01"></center> 
16 </td></tr></table> 
17 <p>Owner/Designer : Ed Van Gennip. [email protected]</p> 
18 </center> 
19 <embed SRC="resources/holodeck.wav" autostart=true 
20 hidden=true width=2 height=2> 
21 </embed> 
22 </body></Html> 


圖 4b:第一個測試頁面的結果
編寫操作 DB2 數據的 Web 應用程序(第 1 部分)

創建新的應用程序

編寫一些 Html 只有一半樂趣,真正的樂趣是將代碼集成到 Web 服務器中、啟動浏覽器、坐下來欣賞您用心血和汗水編寫的應用程序按照設計的那樣運行。在編寫任何附加代碼之前,最好確保我們能將這單個頁面作為簡單應用程序來正確地運行。因為我們添加頁面、JSP 和 servlet 時,應用程序就更復雜了。如果發生問題,那麼要確定問題在哪裡就比較困難。如果我們有一頁應用程序,並且出現錯誤,那麼縮小問題的范圍並解決它將容易得多。所以那就是我們將采用的方法。

從 WebSphere Advanced Administration Console 工具欄上選中 Tools,然後選中 Application Assembly Tool。這樣將啟動創建應用程序(*.ear 文件)或獨立模塊(*.war 文件)的新工具。

在第一個屏幕上選中 Create Web Module Wizard 圖標。雙擊或按下 OK 按鈕。這樣將創建可以在稍後可選地添加到應用程序的 .war 文件。

在 Filename 字段中輸入 test.war。可選地輸入顯示名稱和描述。按 Next 按鈕繼續。

在下一個屏幕中我們添加 servlet 類文件、圖片和圖標。由於這時我們只嘗試運行初始 HTML 屏幕,因此我們將輸入最少的信息。這是‘迭代’開發方法。即,當我們開發它們時添加這些部分,而不是設計並開發每個部分,然後將它們都放置在一起,希望它們都能完全正確地運行。單擊 Add Resource Files 按鈕。我們希望添加該頁面本身的 Html 文件以及所有圖片、聲音文件和您想要放置在該頁面上的任何其它內容。

在 Root Directory or Archive字段中輸入指向該樣本文件位置的路徑,例如 c:/article。按 Enter 鍵。在樹狀窗格中,選中 Web 圖標。現在右窗格顯示那個目錄的內容。選中 TestTeam.Html。按下 Add 按鈕。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved