明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

使用Ant與Tomcat創(chuàng)建Web應(yīng)用

[摘要]使用何種技術(shù)   我使用Tomcat 4的Servlet/JPS容器技術(shù)實現(xiàn)一個Web應(yīng)用程序。這個過程中仍然有許多不確定的事,在多種可行的技術(shù)中選一種可不是一件容易的事。這篇文章中,我選擇盡量簡單的解決方案,混合使用Java Server Pages(JSPs)以及Java。   應(yīng)當(dāng)盡量避免使...
使用何種技術(shù)

  我使用Tomcat 4的Servlet/JPS容器技術(shù)實現(xiàn)一個Web應(yīng)用程序。這個過程中仍然有許多不確定的事,在多種可行的技術(shù)中選一種可不是一件容易的事。這篇文章中,我選擇盡量簡單的解決方案,混合使用Java Server Pages(JSPs)以及Java。

  應(yīng)當(dāng)盡量避免使用JSPs實現(xiàn)復(fù)雜邏輯;那種程序也許容易寫,但難以調(diào)試而且?guī)缀醪豢赡鼙焕斫夂途S護。好的解決方案是用JSPs負責(zé)Web頁面的顯示(這正是JSPs擅長的),把復(fù)雜邏輯的實現(xiàn)交給Java,如對數(shù)據(jù)庫的訪問。這樣,程序不但比較容易實現(xiàn)和調(diào)試,而且易于理解和維護。

  這個Web應(yīng)用程序可以運行在專用Web服務(wù)器或者是個人電腦上,操作系統(tǒng)可以是Windows,Linux,或者Mac OS。所需的軟件包有Java運行時環(huán)境(JDK1.2或以上版本),Tomcat最新版本(Tomacat 4或以上版本),以及Ant開發(fā)工具(Ant 1.4或以上版本)。Ant用于創(chuàng)建Web應(yīng)用程序包(WAR),以及在Tomcat上安裝部署WAR文件,配置關(guān)系數(shù)據(jù)庫接口javax.sql.DataSource。所有以上提到的軟件包都可以通過Internet免費獲得。

  這個Web應(yīng)用程序還需要一個數(shù)據(jù)庫。幾乎所有支持SQL而且有JDBC驅(qū)動的關(guān)系數(shù)據(jù)庫都可以。MySQL是一個符合條件的不錯選擇。從MySQL.com可以得到MySQL的最新版本以及它的JDBC驅(qū)動Connector/J。

  為了讓Ant與Tomact管理軟件協(xié)同工作,需要將catalina-ant.jar從Tomcat的server/lib目錄拷貝到Ant的lib目錄下。將你的數(shù)據(jù)庫JDBC驅(qū)動程序復(fù)制到Tomcat的common/lib目錄下使Tomcat和其上的Web應(yīng)用程序可以訪問數(shù)據(jù)庫。最后,必須建立Tomcat的admin和manager角色(roles),及其用戶名和密碼,編輯Tomcat的conf目錄下的tomcat-user.xml文件如下:

<?xml version='1.0'?>    <tomcat-users>        <role rolename="admin"/>        <role rolename="manager"/>        <user username="tomcatusername" password="tomcatpassword"                 roles="admin,manager"/>    </tomcat-users>


我的開發(fā)環(huán)境是Apple Cube,運行Mac OS X 10.2.1操作系統(tǒng),軟件包JDK 1.3.1,Tomcat 4.1.12,Ant1.5.1,MySQL 3.23.52,及Connector/J 3.0.1-beta。操作系統(tǒng)升級到Mac OS X 10.2.2未出現(xiàn)任何問題。同樣Tomcat升級到4.1.17也沒出現(xiàn)問題。

Web應(yīng)用程序

  本文通過一個叫做AddressBook的簡單地址簿程序來說明如何應(yīng)用將要介紹的技術(shù)。這個應(yīng)用程序的目的不是建立一個地址簿的正式版本,它僅僅是一個例子。

AddressBook中的Java程序: AddressBook中包含三個Java程序。圖1顯示了他們在Tomcat中的是如何使用的。





AddressBook.ContextListener: AddressBook.ContextListener是一個servlet上下文監(jiān)聽器,它在AddressBook開始和關(guān)閉時被調(diào)用,可以使用AddressBook的部署描述文件web.xml配置。當(dāng)AddressBook開始運行時,創(chuàng)建一個AddressesDB的實例并將它作為一個上下文屬性保存;而當(dāng)AddressBook運行結(jié)束時,從上下文屬性中取出AddressesDB對象并關(guān)閉數(shù)據(jù)庫連接。在運行過程中,當(dāng)JSPs需要連接數(shù)據(jù)庫,它們將訪問上下文屬性中的AddressesDB對象。細節(jié)請看ContextListener.java的完整的帶有注釋的源代碼。

AddressBook. AddressesDB: AddressBook. AddressesDB用于操作地址數(shù)據(jù)庫。它的構(gòu)造函數(shù)建立一個數(shù)據(jù)庫連接,這個會話可以被多個Web會話共享。這個類提供多個數(shù)據(jù)庫連接函數(shù):

getAddress(id)返回用id標(biāo)識的地址,如果地址沒找到則返回null。

addAddress(address)添加地址并返回改變的行數(shù)

deleteAddress(id)刪除地址并返回改變的行數(shù)

getAddresses()返回數(shù)據(jù)庫中所有地址的聚集,如果數(shù)據(jù)庫無效返回null

close()關(guān)閉數(shù)據(jù)庫連接

細節(jié)請看AddressesDB.java的完整的帶有注釋的源代碼。

AddressBook. Address: AddressBook. Address是用于描述地址的類。在用JSPs編程時,用類集中描述數(shù)據(jù)仍不失為一個好的方法。在AddressBook中使用的就是這種方法。AddressBook. Address的構(gòu)造函數(shù)將地址內(nèi)容保存于對象中。這個類中包括取得單個地址域的普通get函數(shù),兩個獲取合并的地址域的get函數(shù),以及一個地址比較函數(shù):

Address(id,surname,fisrtname,street,district,city,postcode)

getId()

getSurname()

getFirstname()

getStreet()

getDistrict()

getCity()

getPostcode()

getFullname()返回firstname+” ”+surname

getFulladdress()返回street+” ”+district+” ”+city+” ”+postcode

compareTo(address)返回負整數(shù)、零、正整數(shù),分別對應(yīng)surname和firstname大于、等于、小于這個surname和firstname,比較是大小寫不敏感的。在存儲地址聚集時使用。

細節(jié)請看Address.java的完整的,帶有注釋的源代碼。

AddressBook中的JSP頁面: AddressBook有七個JSP頁。每個代表一個對AddressBook數(shù)據(jù)庫進行獨立操作的Web頁。每個頁面數(shù)據(jù)庫的狀態(tài)與前頁數(shù)據(jù)庫的狀態(tài)是相互獨立的。如果數(shù)據(jù)庫被其他用戶改變了,Web頁面將檢測到并產(chǎn)生相應(yīng)的動作。例如,如果你正在修改一個地址而另一個用戶在確認修改之前刪除了該地址,JSP將通知你修改不存在的地址失敗。

  圖2顯示JSPs之間的邏輯關(guān)系。





Home.jsp: Home.jsp是AddressBook的主頁,也就是用戶使用AddressBook時見到的第一個頁面。它用一個表顯示Address庫中的所有地址。表中的每一行顯示一個地址,以及刪除或修改地址的連接。頁面底部有一個添加新地址的連接。配置信息見web.xml notes。

添加地址連接將控制權(quán)交給RequestAdd.jsp

刪除地址連接將控制權(quán)交給RequestDelete.jsp,同時將要刪除的地址id傳遞給該頁

修改地址連接將控制權(quán)交給RequestModify.jsp,同時將要修改的地址id傳遞給該頁

細節(jié)請看Home.jsp的完整的帶有注釋的源代碼。

RequestAdd.jsp: RequestAdd.jsp提供一個地址表單用于輸入新地址。頁面底部的取消連接可以取消這次操作。

提交表單將新的地址域值以及控制權(quán)交給DoAdd.jsp

取消操作將控制權(quán)交給Home.jsp。細節(jié)請看RequestAdd.jsp的完整的,帶有注釋的源代碼。

DoAdd.jsp: DoAdd.jsp顯示接收到的地址域值。然后將新地址添加到數(shù)據(jù)庫并顯示是否成功的信息。頁面底部有一個繼續(xù)連接。

點擊繼續(xù)連接回到Home.jsp。細節(jié)請看DoAdd.jsp的完整的,帶有注釋的源代碼。

RequestDelete.jsp: RequestDelete.jsp讀取得到的id相應(yīng)的地址。該頁面在表中顯示地址域以便讓你確認刪除的是正確的地址。頁面底部的兩個連接分別是繼續(xù)請求的繼續(xù)連接和取消請求的取消連接。

選擇繼續(xù)連接將轉(zhuǎn)到DoDelete.jsp并傳遞要刪除的地址id

選擇取消連接回到Home.jsp。細節(jié)請看RequestDelete.jsp的完整的帶有注釋的源代碼。

DoDelete.jsp: DoDelete.jsp讀取傳遞給它的id。在表中顯示該id對應(yīng)的地址,從數(shù)據(jù)庫中刪除它,并顯示是否成功。頁面底部是繼續(xù)連接。

選擇繼續(xù)連接回到Home.jsp。細節(jié)請看DoDelete.jsp的完整的,帶有注釋的源代碼。

RequestModify.jsp: RequestModify.jsp顯示一個表單并填入當(dāng)前的地址,同時提供提交按鈕和取消連接。

提交表單將新的地址域值以及控制權(quán)交給DoModify.jsp

選擇取消連接回到Home.jsp。細節(jié)請看RequestModify.jsp的完整的,帶有注釋的源代碼。

DoModify.jsp: DoModify.jsp顯示接收到的修改的地址域值。然后修改數(shù)據(jù)庫中的地址記錄,并返回成功與否。頁面底部是繼續(xù)連接。

選擇繼續(xù)連接回到Home.jsp。細節(jié)請看DoModify.jsp的完整的,帶有注釋的源代碼。

AddressBook的Addresses數(shù)據(jù)庫表: 如何建立數(shù)據(jù)庫取決于所用的數(shù)據(jù)庫軟件。若你用的不是MySQL以下的步驟就需要根據(jù)情況修改。AddressBook只有一個表Addresses,保存在數(shù)據(jù)庫Public中。表Addresses有七個域:

id,主鍵,自動增長的數(shù)據(jù)域

surname,長度為24的字符域,保存聯(lián)系人的姓

firstname,長度為24的字符域,保存聯(lián)系人的名

street,長度為80的字符域,保存地址的第一行

district,長度為80的字符域,保存地址的第二行

city,長度為40的字符域,保存城市名

postcode,長度為10的字符域,保存郵政編碼

首先建立MySQL數(shù)據(jù)庫(Mac OS X 10.2.1)。用管理員權(quán)限啟動mysql命令行工具,需要的話輸入密碼。創(chuàng)建Public數(shù)據(jù)庫,以及賬號mysqlusername密碼mysqlpassord。命令如下:

# mysql -u root -pmysql> create database Public;mysql> grant all privileges on Public.* to mysqlusername@localhost\identified by 'mysqlpassword' with grant option;mysql> flush privileges;


然后,在Public數(shù)據(jù)庫中創(chuàng)建Addresses表。

mysql> create table Addresses ( \id        int(8) primary key auto_increment, \surname   varchar(24) not null, \firstname varchar(24) not null, \street    varchar(80) not null, \district  varchar(80) not null, \city      varchar(40) not null, \postcode  varchar(10) not null \);


用命令Commit;提交。要檢查對表的操作是否正確,鍵入命令describe Addresser;,將得到如下結(jié)果:

+-----------+-------------+------+-----+---------+----------------+  Field        Type            Null   Key   Default   Extra        +-----------+-------------+------+-----+---------+----------------+  id            int(8)                 PRI   NULL    auto_increment   surname      varchar(24)                                            firstname   varchar(24)                                             street       varchar(80)                                            district     varchar(80)                                            city          varchar(40)                                           postcode     varchar(10)                                          +-----------+-------------+------+-----+---------+----------------+


現(xiàn)在可以插入一行來測試數(shù)據(jù)庫

mysql> insert into Addresses (surname, firstname, street, district,city, postcode) values ("Smith", "John", "1, The High Street,","Downtown,", "Metropolis.", "X99 9XX");mysql> commit;mysql> select * from Addresses;


結(jié)果如下:





注意地址的id被自動賦予值1。至此AddressesBook的數(shù)據(jù)庫創(chuàng)建完成。

配置AddresBook的開發(fā)目錄

  現(xiàn)在我們配置存放AddressBook源文件的目錄,以及Web應(yīng)用程序的war目錄,它也是存放Web應(yīng)用程序包的目錄。下載AddressBook源程序壓縮包。解壓后將得到Ant能夠處理的源程序目錄結(jié)構(gòu),如圖3所示。不需要對AddressBook的開發(fā)目錄進行特殊改變—建議將其解壓至你的home目錄(Mac OS)。





讓我們看看這些文件:

AddressBook/build.properties: AddressBook/build.properties含有若干被AddressBook/build.xml讀取得設(shè)置信息。定制build過程時,盡量編輯較小的build.properties文件,而不要修改復(fù)雜的多的build.xml文件。

app.name=AddressBooktomcat.home=/usr/local/jakarta-tomcat-4.1.12manager.url=http://localhost:8080/managerusername=tomcatusernamepassword=tomcatpassword


app.name參數(shù)不需要修改。如果將來要重用這些文件創(chuàng)建新的Web應(yīng)用程序時把該參數(shù)改為新的程序名。如果在本地機器上運行Tomcat 4,則manager.url參數(shù)也不必修改。

tomcat.home參數(shù)為Tomcat的安裝目錄,以上的設(shè)置表示Tomcat 4.1.12安裝在/url/local目錄下(Mac OS)。Ant將根據(jù)這個參數(shù)設(shè)置編譯AddressBook時的CLASSPATH變量,使它包含Tomcat的common/lib.jar文件。(這樣Tomcat 和Web應(yīng)用程序都可以直接訪問這個文件,而不必將其復(fù)制到應(yīng)用程序的WEB-INF/lib目錄下。)

Tomcat也有一個類似的目錄:shared/lib,給目錄下的.jar文件在運行時對于應(yīng)用程序是可訪問的,但對Tomcat是不可訪問的。

參數(shù)tomcatusrename和tomcatpassword必須與Tomcat的配置文件conf/tomcat-users.xml中的設(shè)置一致。Ant使用它們以及manager.url取得在Tomcat環(huán)境中安裝AddressBook應(yīng)用的權(quán)限。

細節(jié)請看build.properties的完整帶有注釋的源代碼。

AddressBook/build.xml: AddressBook/build.xml文件是Ant的配置文件,它使用許多Ant的標(biāo)簽。以下是比較常用的:

· ant build 創(chuàng)建Web應(yīng)用程序

· ant install 安裝Web應(yīng)用程序用于測試

· ant remove 卸載Web應(yīng)用程序

· ant deploy安裝部署Web應(yīng)用程序

· ant undeploy卸載Web應(yīng)用程序

細節(jié)請看build.xml的完整的帶有注釋的源代碼。

AddressBook/context.xml: AddressBook/context.xml是在Ant處理安裝、重新載入、刪除、部署、卸載請求時裝入Tomcat中的。給文件記錄的是AddressBook的上下文信息,或者是Tomcat運行AddressBook需要的參數(shù)。

Logger項定義了Tomcat用文本格式記錄AddressBook的事件日志,并存放于Tomcat的logs目錄下。以下Logger項定義了名為localhost_AddressBook_log.YYYY-MM-DD.txt的日志文件,其中YYYY-MM-DD為日志日期:

<Logger className="org.apache.catalina.logger.FileLogger" prefix=  "localhost_AddressBook_log." suffix=".txt" timestamp="true"/>


Resource和ResourceParams項定義Tomcat必須為AddressBook創(chuàng)建一個叫jdbc/Publicd的javax.sql.DataSource。以下設(shè)置創(chuàng)建了一個javax.sql.DataSource,其值為org.apache.commons.dbcp.BasicDataSourceFactory類,URL為jdbc:mysql://localhost:3306/Public?autoReconnect=true,JDBC驅(qū)動:org.gjt.mm.mysql.Driver,用戶名和密碼分別為:mysqlusername和mysqlpassword:

以上代碼將javax.sql.DataSource作為該Web應(yīng)用程序的上下文變量。如果該變量不止被一個Web應(yīng)用用到,可以將它定義為全局資源。細節(jié)請看context.xml的完整的帶有注釋的源代碼。

AddressBook/src/*.java: src目錄中存放Web應(yīng)用的三個Java程序。見Address.java,AddressesDB.java和ContextListener.java的描述。

AddressBook/web/*.jsp: web目錄存放Web應(yīng)用的七個JSP頁面。見Home.jsp, RequestAdd.jsp, DoAdd.jsp, RequestDelete.jsp, DoDelete.jsp, RequestModify.jsp, 和 DoModify.jsp的描述。

AddressBook/web/WEB-INF/web.xml: AddressBook/web/WEB-INF/web.xml是AddressBook的web應(yīng)用部署描述文件。其中包含兩個主要參數(shù):listener參數(shù)定義了Java類監(jiān)聽器AddressBook.ContextListener,在程序啟動和關(guān)閉是被調(diào)用。

<listener>   <listener-class>AddressBook.ContextListener</listener-class></listener>


welcom-file-list參數(shù)定義了AddressBook的首頁。如下設(shè)置定義AddressBook的首頁為Home.jsp。

<welcome-file-list>   <welcome-file>Home.jsp</welcome-file></welcome-file-list>


細節(jié)請看web.xml的完整的,帶有注釋的源代碼。

創(chuàng)建,安裝,部署和運行AddressBook: 安裝AddressBook是先將當(dāng)前目錄改為AddressBook目錄,然后運行Ant的install命令:

$ cd AddressBook$ ant install


  如果安裝失敗,檢查Tomcat的conf目錄下的tomcat-user.xml是否配置正確,以及catalina-ant.jar是否從Tomcat的server/lib目錄下拷貝到Ant的lib目錄。

  注意ant install自動觸發(fā)運行Ant的若干個標(biāo)簽,依次為ant int,ant prepare,ant build和ant package:

· ant init初始化時間戳

· ant prepare在AddressBook目錄下創(chuàng)建war目錄結(jié)構(gòu),包括:一個war目錄,一個war/WAR-INF目錄,一個war/WEB-INF/classes目錄,及一個war/WEB-INF/lib目錄。

· ant build創(chuàng)建Web應(yīng)用程序,包括將jsp文件拷貝到war目錄下,將context.xml文件拷貝到war/META-INF目錄下,將web.xml文件拷貝到war/WEB-INF目錄下,并編譯Java文件結(jié)果存入war/WEB-INF/classes目錄下。

· ant package從war目錄創(chuàng)建Web程序包。Web程序包是由jar工具創(chuàng)建的.jar文件。

· 最后,ant install根據(jù)war/META-INF/context.xml的配置信息將Web程序包安裝到Tomcat中。你可能注意到不需要登陸root權(quán)限或Tomcat就可以安裝AddressBook,只要你的普通用戶賬號即可。Ant用定義在AddressBook/build.properties中的tomcatusername和tomcatpassword即可安全的執(zhí)行以上過程。

  安裝過程因配置選項不同而不同,配置信息具體見AddressBook/build.xml。圖4顯示了構(gòu)成AddressBook Web應(yīng)用程序的war目錄結(jié)構(gòu)以及各種文件。





在瀏覽器地址欄中輸入地址http://localhost:8080/AddressBook測試AddressBook程序。應(yīng)該得到如圖5的顯示結(jié)果。如果應(yīng)用程序沒有正確運行,先檢查Tomcat的common/lib目錄下有沒有數(shù)據(jù)庫的JDBC驅(qū)動程序。如果數(shù)據(jù)庫驅(qū)動正確應(yīng)用程序仍然不正確運行,則檢查Tomcat的log目錄下的日志文件,這些文本格式的日志文件將幫助你發(fā)現(xiàn)錯誤。





添加地址,然后修改它,再刪除它,再添加一個地址。你將看到id持續(xù)自動增加。

開發(fā)過程

  AddressBook安裝成功之后,Tomcat調(diào)用AddressBook.ConextListener.contextInitialized創(chuàng)建AddressBook.AddressesDB的一個實例。AddressBook.AddressesDB通過jdbc/Public DataSource建立數(shù)據(jù)庫連接。AddressBook.ConextListener.contextInitialized將AddressBook.AddressesDB的實例作為一個servlet屬性(addressesDB)保存。

  當(dāng)AddressBook的Home.jsp第一次被調(diào)用,Tomcat編譯并執(zhí)行它。Home.jsp通過servlet屬性addressesDB取得AddressBook.AddressesDB的實例,然后從數(shù)據(jù)庫中讀取地址并顯示。其他JSP頁面在第一次被使用時也要先編譯再執(zhí)行,讀取數(shù)據(jù)庫的方法同Home.jsp。

  ant stop用于停止AddressBook程序。Tomcat自動調(diào)用AddressBook.ContextListener.contextDestroyed取得上面提到的servlet屬性addressesDB和AddressBook.AddressesDB的實例,關(guān)閉數(shù)據(jù)庫連接并刪除servlet屬性addressesDB。

  ant start用于啟動AddressBook程序。Tomcat自動調(diào)用AddressBook.ConextListener.contextInitialized重復(fù)啟動過程。

  整個Web應(yīng)用程序的開發(fā)過程是這樣的:修改程序;用ant install創(chuàng)建并安裝;在瀏覽器中鍵入地址http://localhost:8080/applicationName(或點擊刷新按鈕)以測試Web程序;用ant remove刪除Web應(yīng)用程序的上下文信息;重復(fù)整個過程,直到調(diào)試完畢。當(dāng)程序調(diào)試完畢后,使用ant deploy正式將你的程序配置到服務(wù)器上。在重起Tomcat或者重起服務(wù)器后,你的應(yīng)用程序就開始運行了。要將Web應(yīng)用程序從你的服務(wù)器徹底刪除用ant undeploy命令。

Tomcat Manager

  使用Tomcat Manager可以替代Ant。在瀏覽器中鍵入地址http://localhost:8080/manager/html/list,將出現(xiàn)如圖6所示的Tomcat Manager Web頁面。





或者,直接使用以下地址:

http://localhost:8080/manager/list

http://localhost:8080/manager/resources

http://localhost:8080/manager/start?path=/AddressBook

http://localhost:8080/manager/stop?path=/AddressBook

http://localhost:8080/manager/remove?path=/AddressBook

http://localhost:8080/manager/sessions?path=/AddressBook

Tomcat Administrator

  要登陸Tomcat的基于Web的administrator,使用地址http://localhost:8080/admin。在登陸畫面中輸入Tomcat”admin”角色的用戶名和密碼,與”manager” 角色的相同為tomcatusername和tomcatpassword。Tomcat-users.xml文件為admin,manager以及provider角色建立了相同的賬號。為每個Tomcat角色建立不同的賬號是不必要的。

  控制頁面分為三個面板:頭面板,樹面板和數(shù)據(jù)面板。如圖7所示:





樹的分支可被展開和選定。依次展開Service{Tomcat-Standalone} ->Host{localhost}->Context{/AddressBook},最后AddressBook的Resource分支。注意不要將樹底部的全局Resource分支與AddressBook的Resource分支混淆。全局Resource分支可以用來定義任何Web應(yīng)用程序都可用的全局資源。

AddressBook的上下文面板

  選擇Context{/AddressBook}分支,將看到AddressBook的上下文面板(如圖8)。





你可以隨意改變該面板的參數(shù),主要是三種不同的Debug Level參數(shù)。要保存設(shè)置點擊Save按鈕然后點擊頭面板中的Commit Changes按鈕。

AddressBook的Data Source面板

  選擇Context{/AddressBook}的Resource分支中的Data Source分支,你將看到AddressBook的Data Source面板。選擇數(shù)據(jù)源jdbc/Public顯示javax.sql.DataSource(如圖9)。





你可以隨意改變該面板的參數(shù),包括Data Source URL, JDBC Driver Class, User Name, Password, Max. Active Connections, Max. Idle Connections和 Max. Wait for Connection參數(shù)。要保存設(shè)置點擊Save按鈕然后點擊頭面板中的Commit Changes按鈕。

如果你在你的個人電腦上運行Web應(yīng)用程序,這也許不重要,但是如果在作為公司產(chǎn)品的Web服務(wù)器,這就很重要。這些參數(shù)可以被安全的改變,而且不是只有程序員能夠更改,Tomcat administrator同樣可以。作為一個程序員我要記住許多賬號和密碼,我不想知道公司的產(chǎn)品數(shù)據(jù)庫的賬號和密碼。本來這個賬號和密碼是必要的,但是有了javax.sql.DataSource和Tomcat 4的administrator服務(wù),我就不必知道它們了。

Ant用于在開發(fā)軟件時建立Web應(yīng)用程序上下文,而Tomcat administrator服務(wù)用在產(chǎn)品環(huán)境中。

AddressBook的日志面板

選擇樹中的Context{/AddressBook}分支的Logger for Context{/AddressBook}分支,將看到如圖10所示的AddressBook的日志面板





你可以隨意改變該面板的參數(shù),主要是Debug Level和Verbosity Level參數(shù)。要保存設(shè)置點擊Save按鈕然后點擊頭面板中的Commit Changes按鈕。