六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

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

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

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

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

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

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

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

  為了讓Ant與Tomact管理軟件協(xié)同工作,需要將catalina-ant.jar從Tomcat的server/lib目錄拷貝到Ant的lib目錄下。將你的數(shù)據(jù)庫(kù)JDBC驅(qū)動(dòng)程序復(fù)制到Tomcat的common/lib目錄下使Tomcat和其上的Web應(yīng)用程序可以訪問(wèn)數(shù)據(jù)庫(kù)。最后,必須建立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>


我的開(kāi)發(fā)環(huán)境是Apple Cube,運(yùn)行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)升級(jí)到Mac OS X 10.2.2未出現(xiàn)任何問(wèn)題。同樣Tomcat升級(jí)到4.1.17也沒(méi)出現(xiàn)問(wèn)題。

Web應(yīng)用程序

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

AddressBook中的Java程序: AddressBook中包含三個(gè)Java程序。圖1顯示了他們?cè)赥omcat中的是如何使用的。





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

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

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

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

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

getAddresses()返回?cái)?shù)據(jù)庫(kù)中所有地址的聚集,如果數(shù)據(jù)庫(kù)無(wú)效返回null

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

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

AddressBook. Address: AddressBook. Address是用于描述地址的類。在用JSPs編程時(shí),用類集中描述數(shù)據(jù)仍不失為一個(gè)好的方法。在AddressBook中使用的就是這種方法。AddressBook. Address的構(gòu)造函數(shù)將地址內(nèi)容保存于對(duì)象中。這個(gè)類中包括取得單個(gè)地址域的普通get函數(shù),兩個(gè)獲取合并的地址域的get函數(shù),以及一個(gè)地址比較函數(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)返回負(fù)整數(shù)、零、正整數(shù),分別對(duì)應(yīng)surname和firstname大于、等于、小于這個(gè)surname和firstname,比較是大小寫不敏感的。在存儲(chǔ)地址聚集時(shí)使用。

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

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

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





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

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

刪除地址連接將控制權(quán)交給RequestDelete.jsp,同時(shí)將要?jiǎng)h除的地址id傳遞給該頁(yè)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

id,主鍵,自動(dòng)增長(zhǎng)的數(shù)據(jù)域

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

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

street,長(zhǎng)度為80的字符域,保存地址的第一行

district,長(zhǎng)度為80的字符域,保存地址的第二行

city,長(zhǎng)度為40的字符域,保存城市名

postcode,長(zhǎng)度為10的字符域,保存郵政編碼

首先建立MySQL數(shù)據(jù)庫(kù)(Mac OS X 10.2.1)。用管理員權(quán)限啟動(dòng)mysql命令行工具,需要的話輸入密碼。創(chuàng)建Public數(shù)據(jù)庫(kù),以及賬號(hào)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ù)庫(kù)中創(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;提交。要檢查對(duì)表的操作是否正確,鍵入命令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)在可以插入一行來(lái)測(cè)試數(shù)據(jù)庫(kù)

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被自動(dòng)賦予值1。至此AddressesBook的數(shù)據(jù)庫(kù)創(chuàng)建完成。

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

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





讓我們看看這些文件:

AddressBook/build.properties: AddressBook/build.properties含有若干被AddressBook/build.xml讀取得設(shè)置信息。定制build過(guò)程時(shí),盡量編輯較小的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ù)不需要修改。如果將來(lái)要重用這些文件創(chuàng)建新的Web應(yīng)用程序時(shí)把該參數(shù)改為新的程序名。如果在本地機(jī)器上運(yùn)行Tomcat 4,則manager.url參數(shù)也不必修改。

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

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

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

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

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

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

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

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

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

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

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

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

Logger項(xiàng)定義了Tomcat用文本格式記錄AddressBook的事件日志,并存放于Tomcat的logs目錄下。以下Logger項(xiàng)定義了名為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項(xiàng)定義Tomcat必須為AddressBook創(chuàng)建一個(gè)叫jdbc/Publicd的javax.sql.DataSource。以下設(shè)置創(chuàng)建了一個(gè)javax.sql.DataSource,其值為org.apache.commons.dbcp.BasicDataSourceFactory類,URL為jdbc:mysql://localhost:3306/Public?autoReconnect=true,JDBC驅(qū)動(dòng):org.gjt.mm.mysql.Driver,用戶名和密碼分別為:mysqlusername和mysqlpassword:

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

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

AddressBook/web/*.jsp: web目錄存放Web應(yīng)用的七個(gè)JSP頁(yè)面。見(jiàn)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)用部署描述文件。其中包含兩個(gè)主要參數(shù):listener參數(shù)定義了Java類監(jiān)聽(tīng)器AddressBook.ContextListener,在程序啟動(dòng)和關(guān)閉是被調(diào)用。

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


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

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


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

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

$ cd AddressBook$ ant install


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

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

· ant init初始化時(shí)間戳

· ant prepare在AddressBook目錄下創(chuàng)建war目錄結(jié)構(gòu),包括:一個(gè)war目錄,一個(gè)war/WAR-INF目錄,一個(gè)war/WEB-INF/classes目錄,及一個(gè)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,只要你的普通用戶賬號(hào)即可。Ant用定義在AddressBook/build.properties中的tomcatusername和tomcatpassword即可安全的執(zhí)行以上過(guò)程。

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





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





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

開(kāi)發(fā)過(guò)程

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

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

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

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

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

Tomcat Manager

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





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

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。在登陸畫(huà)面中輸入Tomcat”admin”角色的用戶名和密碼,與”manager” 角色的相同為tomcatusername和tomcatpassword。Tomcat-users.xml文件為admin,manager以及provider角色建立了相同的賬號(hào)。為每個(gè)Tomcat角色建立不同的賬號(hào)是不必要的。

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





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

AddressBook的上下文面板

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





你可以隨意改變?cè)撁姘宓膮?shù),主要是三種不同的Debug Level參數(shù)。要保存設(shè)置點(diǎn)擊Save按鈕然后點(diǎn)擊頭面板中的Commit Changes按鈕。

AddressBook的Data Source面板

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





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

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

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

AddressBook的日志面板

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





你可以隨意改變?cè)撁姘宓膮?shù),主要是Debug Level和Verbosity Level參數(shù)。要保存設(shè)置點(diǎn)擊Save按鈕然后點(diǎn)擊頭面板中的Commit Changes按鈕。



主站蜘蛛池模板: 欧美视频高清 | 欧美一级成人一区二区三区 | 午夜三级黄色片 | 亚洲国产日韩在线观看 | 一级做性色a爰片久久毛片免费 | 日本免费高清视频二区 | 天天干天天做天天操 | 欧美性xxxxxx性 | 性荡视频在线播放视频 | 日本xx高清视频免费观看 | 四虎永久在线精品 | 五月天激情婷婷大综合 | 日韩欧美亚洲国产精品字幕久久久 | 热久久这里是精品6免费观看 | 西瓜影院日韩大片在线观看 | 亚洲一区精品在线 | 日韩爱爱网站 | 午夜国产精品无套 | 日韩精品 欧美 | 亚洲欧洲精品在线 | 四虎永久在线观看免费网站网址 | 日韩毛片基地 | 亚洲欧美日本综合 | 四虎永久免费地址 | 亚洲国产一区二区a毛片 | 性人久久久久 | 青青青青青青在线精品视频 | 五月婷婷一区 | 欧美一级免费片 | 亚洲欧美日韩高清一区二区三区 | 色伊人国产高清在线 | 奇米第四色888 | 日韩在线视频在线观看 | 亚洲va欧美ⅴa国产va影院 | 中文天堂| 一级做a爰片久久毛片免费 一级做a爰片久久毛片美女图片 | 日韩手机在线视频 | 欧洲精品视频完整版在线 | 五月天婷婷网站 | 天天综合天天添夜夜添狠狠添 | 日韩视频高清免费看 |