九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Servlet/JSP深入詳解:基于Tomcat的Web開發(fā)第一章01
要掌握J(rèn)ava Web開發(fā),首先就要學(xué)會編寫Servlet,而要運行Servlet,則需要一個Servlet容器,本書選用的是Tomcat。下面讓我們來了解一下Servlet和Tomcat。
1.1   Web技術(shù)的發(fā)展
隨著Internet的發(fā)展,基于HTTP協(xié)議和HTML標(biāo)準(zhǔn)的Web應(yīng)用呈幾何數(shù)量級的增長,人們的生活在不知不覺中已經(jīng)被網(wǎng)絡(luò)悄悄地改變了。在網(wǎng)絡(luò)普及之前,我們購買圖書要去書店,給親人匯錢要去郵局或者銀行……而現(xiàn)在,一切都是這么便捷,你可以在網(wǎng)上購買圖書、匯款、繳納電話費,你甚至可以為遠(yuǎn)在他鄉(xiāng)的女朋友訂購一束玫瑰。各種各樣的網(wǎng)上業(yè)務(wù)豐富了我們的生活,節(jié)省了我們的時間,提高了我們的工作效率,改善了我們的生活品質(zhì)。支撐這些網(wǎng)上業(yè)務(wù)的就是各種各樣的Web應(yīng)用,而這些Web應(yīng)用又是用各種Web技術(shù)開發(fā)的。
早期的Web應(yīng)用主要是靜態(tài)頁面的瀏覽(如新聞的瀏覽),這些靜態(tài)頁面使用HTML語言來編寫,放在服務(wù)器上;用戶使用瀏覽器通過HTTP協(xié)議請求服務(wù)器上的Web頁面,服務(wù)器上的Web服務(wù)器軟件接收到用戶發(fā)送的請求后,讀取請求URI所標(biāo)識的資源,加上消息報頭發(fā)送給客戶端的瀏覽器;瀏覽器解析響應(yīng)中的HTML數(shù)據(jù),向用戶呈現(xiàn)多姿多彩的HTML頁面。整個過程如圖1-1所示。
圖1-1  瀏覽器請求靜態(tài)頁面
隨著網(wǎng)絡(luò)的發(fā)展,很多線下業(yè)務(wù)開始向網(wǎng)上發(fā)展,基于Internet的Web應(yīng)用也變得越來越復(fù)雜,用戶所訪問的資源已不僅僅局限于在服務(wù)器硬盤上存放的靜態(tài)網(wǎng)頁,更多的應(yīng)用需要根據(jù)用戶的請求動態(tài)生成頁面信息,復(fù)雜一些的還需要從數(shù)據(jù)庫中提取數(shù)據(jù),經(jīng)過一定的運算,生成一個頁面返回給客戶。例如,筆者通過Web瀏覽器想要查詢本公司一年的銷售報表,這個銷售報表是根據(jù)一年的銷售數(shù)據(jù)得出的,而這一年的銷售數(shù)據(jù)非常多,通常都是存儲在數(shù)據(jù)庫中,當(dāng)Web服務(wù)器端軟件接收到客戶端的請求,就需要從數(shù)據(jù)庫中提取一年的數(shù)據(jù),然后按照一定的統(tǒng)計規(guī)則,通過計算生成報表頁面,發(fā)送到請求者的Web瀏覽器端。類似于上述的應(yīng)用還有很多,要為用戶提供各種各樣的增強功能,就需要我們在Web服務(wù)端通過軟件來實現(xiàn)??墒沁@種實現(xiàn),如何才能完成呢?
了解HTTP協(xié)議的讀者,可能會想到,可以遵循HTTP協(xié)議實現(xiàn)一個服務(wù)器端軟件,提供增強功能。想法本身沒有錯誤,但是由于HTTP協(xié)議服務(wù)器端的實現(xiàn)較為復(fù)雜,需要考慮很多方面,而且由于應(yīng)用的廣泛性,不可能針對每一種應(yīng)用都去實現(xiàn)這樣的一個HTTP服務(wù)器,所以這種方法在現(xiàn)實中不太可行。還有一種方法,就是利用已經(jīng)實現(xiàn)HTTP協(xié)議的服務(wù)器端軟件,而這些軟件預(yù)先為我們留出了擴展的接口,我們只需要按照一定的規(guī)則去提供相應(yīng)的擴展功能。當(dāng)這類Web服務(wù)器接收到客戶請求后,判斷請求是否是訪問我們提供的擴展功能,如果是,就將請求交由我們所編寫的程序去處理。當(dāng)處理完成后,程序?qū)⑻幚斫Y(jié)果交回Web服務(wù)器軟件,Web服務(wù)器軟件拿到結(jié)果信息后,再將結(jié)果作為響應(yīng)信息返回給客戶端。第二種方式的好處在于,我們不需要對HTTP協(xié)議有過多的了解,HTTP協(xié)議服務(wù)器端的實現(xiàn)已經(jīng)由Web服務(wù)器軟件完成了,我們只需要根據(jù)我們的應(yīng)用去開發(fā)相應(yīng)的功能模塊,然后將這些功能模塊按照你所采用的Web服務(wù)器軟件的要求,部署到Web服務(wù)器中進行集成。在用戶看來,Web服務(wù)器端就是一個整體,在為他/她提供服務(wù)。
早期使用的Web服務(wù)器擴展機制是CGI,它允許用戶調(diào)用Web服務(wù)器上的CGI程序。CGI的全稱是Common Gateway Interface,即公共網(wǎng)關(guān)接口。大多數(shù)的CGI程序使用Perl來編寫,也有使用C、Python或PHP來編寫的。用戶通過單擊某個鏈接或者直接在瀏覽器的地址欄中輸入URL來訪問CGI程序,Web服務(wù)器接收到請求后,發(fā)現(xiàn)這個請求是給CGI程序的,于是就啟動并運行這個CGI程序,對用戶請求進行處理。CGI程序解析請求中的CGI數(shù)據(jù),處理數(shù)據(jù),并產(chǎn)生一個響應(yīng)(通常是HTML頁面)。這個響應(yīng)被返回給Web服務(wù)器,Web服務(wù)器包裝這個響應(yīng)(例如添加消息報頭),以HTTP響應(yīng)的形式發(fā)送給Web瀏覽器。整個過程如圖1-2所示。
圖1-2  用戶訪問CGI程序
然而CGI程序存在著一些缺點,主要是CGI程序編寫困難、對用戶請求的響應(yīng)時間較長、以進程方式運行導(dǎo)致性能受限等。由于CGI程序的這些缺點,開發(fā)人員需要其他的CGI方案。1997年,SUN公司推出了Servlet技術(shù),作為Java陣營的CGI解決方案。作為對微軟ASP技術(shù)(1996年推出)的回應(yīng),SUN公司于1998年推出了JSP技術(shù),允許在HTML頁面中嵌入Java腳本代碼,從而實現(xiàn)動態(tài)網(wǎng)頁功能。與ASP、JSP類似的服務(wù)器端頁面編寫技術(shù)還有Rasmus Lerdorf于1994年發(fā)明的PHP技術(shù)。
Servlet與Servlet容器
Java Servlet(Java服務(wù)器小程序)是一個基于Java技術(shù)的Web組件,運行在服務(wù)器端,由Servlet容器所管理,用于生成動態(tài)的內(nèi)容。Servlet是平臺獨立的Java類,編寫一個Servlet,實際上就是按照Servlet規(guī)范編寫一個Java類。Servlet被編譯為平臺獨立的字節(jié)碼,可以被動態(tài)地加載到支持Java技術(shù)的Web服務(wù)器中運行。目前Servlet規(guī)范最新的版本是2.5。
在上文中,出現(xiàn)了一個概念“Servlet容器”。那么什么是Servlet容器呢?Servlet容器有時候也叫做Servlet引擎,是Web服務(wù)器或應(yīng)用程序服務(wù)器的一部分,用于在發(fā)送的請求和響應(yīng)之上提供網(wǎng)絡(luò)服務(wù),解碼基于MIME的請求,格式化基于MIME的響應(yīng)。Servlet不能獨立運行,它必須被部署到Servlet容器中,由容器來實例化和調(diào)用Servlet的方法,Servlet容器在Servlet的生命周期內(nèi)包容和管理Servlet。
在JSP技術(shù)推出后,管理和運行Servlet/JSP的容器也稱為Web容器。在本書中,Servlet容器、JSP容器,以及Web容器是同義的。
用戶通過單擊某個鏈接或者直接在瀏覽器的地址欄中輸入URL來訪問Servlet,Web服務(wù)器接收到該請求后,并不是將請求直接交給Servlet,而是交給Servlet容器。Servlet容器實例化Servlet,調(diào)用Servlet的一個特定方法對請求進行處理,并產(chǎn)生一個響應(yīng)。這個響應(yīng)由Servlet容器返回給Web服務(wù)器,Web服務(wù)器包裝這個響應(yīng),以HTTP響應(yīng)的形式發(fā)送給Web瀏覽器。整個過程如圖1-3所示。
Web
圖1-3  用戶訪問Servlet
與CGI程序相比,Servlet具有以下優(yōu)點:
—  Servlet是單實例多線程的運行方式,每個請求在一個獨立的線程中運行,而提供服務(wù)的Servlet實例只有一個。
—  Servlet具有可升級性,能響應(yīng)更多的請求,因為Servlet容器使用一個線程而不是操作系統(tǒng)進程,而線程僅占用有限的系統(tǒng)資源。
—  Servlet使用標(biāo)準(zhǔn)的API,被更多的Web服務(wù)器所支持。
—  Servlet使用Java語言編寫,因此擁有Java程序語言的所有優(yōu)點,包括容易開發(fā)和平臺獨立性。
—  Servlet可以訪問Java平臺豐富的類庫,使得各種應(yīng)用的開發(fā)更為容易。
—  Servlet容器給Servlet提供額外的功能,如錯誤處理和安全。
Servlet容器的分類
根據(jù)Servlet容器工作模式的不同,可以將Servlet容器分為以下三類:
Ø 獨立的Servlet容器
當(dāng)我們使用基于Java技術(shù)的Web服務(wù)器時,Servlet容器作為構(gòu)成Web服務(wù)器的一部分而存在。然而大多數(shù)的Web服務(wù)器并非基于Java,因此,就有了下面兩種Servlet容器的工作模式。
Ø 進程內(nèi)的Servlet容器
Servlet容器由Web服務(wù)器插件和Java容器兩部分的實現(xiàn)組成。Web服務(wù)器插件在某個Web服務(wù)器內(nèi)部地址空間中打開一個JVM(Java虛擬機),使得Java容器可以在此JVM中加載并運行Servlet。如有客戶端調(diào)用Servlet的請求到來,插件取得對此請求的控制并將它傳遞(使用JNI技術(shù))給Java容器,然后由Java容器將此請求交由Servlet進行處理。進程內(nèi)的Servlet容器對于單進程、多線程的服務(wù)器非常適合,提供了較高的運行速度,但伸縮性有所不足。
Ø 進程外的Servlet容器
Servlet容器運行于Web服務(wù)器之外的地址空間,它也是由Web服務(wù)器插件和Java容器兩部分的實現(xiàn)組成的。Web服務(wù)器插件和Java容器(在外部JVM中運行)使用IPC機制(通常是TCP/IP)進行通信。當(dāng)一個調(diào)用Servlet的請求到達時,插件取得對此請求的控制并將其傳遞(使用IPC機制)給Java容器。進程外Servlet容器對客戶請求的響應(yīng)速度不如進程內(nèi)的Servlet容器,但進程外容器具有更好的伸縮性和穩(wěn)定性。
Tomcat簡介
學(xué)習(xí)Servlet技術(shù),首先需要有一個Servlet運行環(huán)境,也就是需要有一個Servlet容器,本書采用的是Tomcat。
Tomcat是一個免費的開放源代碼的Servlet容器,它是Apache軟件基金會(Apache Software Foundation)的一個頂級項目,由Apache、Sun和其他一些公司及個人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和JSP規(guī)范總是能在Tomcat中得到體現(xiàn),Tomcat 6支持最新的Servlet 2.5和JSP 2.1規(guī)范。因為Tomcat技術(shù)先進、性能穩(wěn)定,而且免費,因而深受Java愛好者的喜愛,并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web服務(wù)器。
Tomcat和IIS、Apache等Web服務(wù)器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認(rèn)模式。不過,Tomcat處理靜態(tài)HTML的能力不如Apache,我們可以將Apache和Tomcat集成在一起使用,Apache作為HTTP Web服務(wù)器,Tomcat作為Web容器。
下面給出Tomcat服務(wù)器接受客戶請求并做出響應(yīng)的圖例,如圖1-4所示。
圖1-4  Tomcat服務(wù)器接受客戶請求并做出響應(yīng)的過程
① 客戶端(通常都是瀏覽器)訪問Web服務(wù)器,發(fā)送HTTP請求。
② Web服務(wù)器接收到請求后,傳遞給Servlet容器。
③ Servlet容器加載Servlet,產(chǎn)生Servlet實例后,向其傳遞表示請求和響應(yīng)的對象。
④ Servlet實例使用請求對象得到客戶端的請求信息,然后進行相應(yīng)的處理。
⑤ Servlet實例將處理結(jié)果通過響應(yīng)對象發(fā)送回客戶端,容器負(fù)責(zé)確保響應(yīng)正確送出,同時將控制返回給Web服務(wù)器。
Tomcat的安裝與配置安裝Tomcat之前要先安裝JDK,本書中,筆者所用的JDK版本為1.6.0_05。
JDK的下載地址是:http://java.sun.com/javase/downloads/?intcmp=1281,下載頁面如圖1-5所示。
圖1-5  JDK的下載頁面
要下載Tomcat,首先訪問Tomcat項目的網(wǎng)址:http://tomcat.apache.org/,如圖1-6所示。
圖1-6  Tomcat項目的首頁
在頁面左邊的下載鏈接中選擇要下載的Tomcat版本,在這里,我們選擇“Tomcat 6.x”下載,單擊這個鏈接,進入Tomcat 6.x的下載頁面,如圖1-7所示。
本書使用的Tomcat版本是6.0.16。對于Windows操作系統(tǒng),Tomcat還提供了可執(zhí)行的安裝程序的下載,即“Windows Service Installer”鏈接。通過安裝程序安裝Tomcat,將把Tomcat安裝為Windows的服務(wù)。
筆者建議讀者下載zip壓縮包,通過解壓縮的方式來安裝Tomcat,因為解壓縮的方式也適用于其他的操作系統(tǒng)(如Linux系統(tǒng)),并且更容易與其他的開發(fā)環(huán)境集成。對于初學(xué)者來說,也能更好地學(xué)習(xí)Tomcat的啟動過程。
圖1-7  Tomcat 6.x的下載頁面
單擊“zip”鏈接,下載apache-tomcat-6.0.16.zip。使用WinZip或WinRAR等解壓縮工具將apache-tomcat-6.0.16.zip解壓縮到指定的驅(qū)動器和目錄中。筆者是在D:\OpenSource目錄下直接解壓,產(chǎn)生了目錄apache-tomcat-6.0.16,解壓后的文件夾和文件存放于D:\OpenSource\apache-tomcat-6.0.16目錄下。
Tomcat 6.x需要的J2SE版本最低為5.0。Tomcat 6.x不再需要JDK的支持,只需要安裝JRE就可以了,這是因為Tomcat 6.x使用Eclipse JDT Java編譯器來編譯JSP頁面,而不再使用JDK中的編譯器。Eclipse JDT Java編譯器已經(jīng)綁定到Tomcat的發(fā)行版中。如果你使用Tomcat 5.0.x或者Tomcat 5.5.x,那么仍然需要安裝JDK。
1.5.1  Tomcat的目錄結(jié)構(gòu)
Tomcat安裝后的目錄層次結(jié)構(gòu)如圖1-8所示。
圖1-8  Tomcat 6.0.16目錄層次結(jié)構(gòu)
各目錄的用途如表1-1所示。
表1-1  Tomcat的目錄結(jié)構(gòu)及其用途
目  錄
用    途
/bin
存放啟動和關(guān)閉Tomcat的腳本文件
/conf
存放Tomcat服務(wù)器的各種配置文件,其中包括server.xml(Tomcat的主要配置文件)、tomcat-users.xml和web.xml等配置文件
/lib
存放Tomcat服務(wù)器和所有Web應(yīng)用程序需要訪問的JAR文件
/logs
存放Tomcat的日志文件
/temp
存放Tomcat運行時產(chǎn)生的臨時文件
/webapps
當(dāng)發(fā)布Web應(yīng)用程序時,通常把Web應(yīng)用程序的目錄及文件放到這個目錄下
/work
Tomcat將JSP生成的Servlet源文件和字節(jié)碼文件放到這個目錄下
從表1-1中可以看到,lib目錄下存放的JAR文件可以被所有的Web應(yīng)用程序所訪問,如果多個Web應(yīng)用程序需要訪問相同的JAR文件,那么可以將這些JAR文件放到Tomcat的lib目錄下。此外,對于后面將要介紹的Java Web應(yīng)用程序,在它的WEB-INF目錄下,也可以建立lib子目錄,在lib子目錄下可以存放各種JAR文件,這些JAR文件只能被當(dāng)前Web應(yīng)用程序所訪問。
Tomcat 6.x修改了5.x版本的目錄結(jié)構(gòu),刪除了common、server和shared目錄,將common/lib、server/lib和shared/lib中的JAR文件統(tǒng)一放到了lib目錄下。
1.5.2  運行Tomcat
在Tomcat安裝目錄下的bin子目錄中,有一些批處理文件(以.bat作為后綴名的文件),其中的startup.bat就是啟動Tomcat的腳本文件,用鼠標(biāo)雙擊這個文件,你將看到一個窗口一閃而過,之后就什么也沒有了,這說明Tomcat的啟動出錯了。
單擊Windows的【開始】菜單,選擇【所有程序】→【附件】→【命令提示符】,打開“命令提示符”窗口,進入Tomcat的bin目錄中,在“命令提示符”窗口中輸入startup,你將看到如圖1-9所示的畫面。
圖1-9  運行Tomcat提示出錯信息
筆者以前碰到過很多學(xué)員,在初次運行Tomcat時,看到如圖1-9所示的信息就不知所措了。有的學(xué)員以前還配置過Tomcat,但是再次使用的時候,由于忘記了上次是如何配置的,同樣感覺無從下手。
我們在學(xué)習(xí)軟件開發(fā)時,一定要養(yǎng)成查看錯誤提示信息,進而根據(jù)錯誤提示解決問題的良好習(xí)慣。筆者第一次配置Tomcat時,就是根據(jù)錯誤提示信息一步一步配置成功的。當(dāng)看到錯誤信息時,首先不要慌張和無所適從,要仔細(xì)看清楚錯誤提示,弄明白錯誤的原因。
圖1-9中的錯誤提示信息,已經(jīng)很明確地告訴你了錯誤的原因。我們看圖1-9中的錯誤信息,如下所示:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
這個錯誤信息是告訴你要配置JAVA_HOME或者JRE_HOME環(huán)境變量,以便Tomcat能夠找到JDK或JRE的安裝目錄。從環(huán)境變量的名字,我們可以猜測到JAVA_HOME是配置JDK的安裝目錄,JRE_HOME是配置JRE的安裝目錄。
由于Tomcat 6.x不再需要JDK的支持,所以才新增了JRE_HOME環(huán)境變量,對于6.0之前的Tomcat版本,沒有JRE_HOME環(huán)境變量,只能配置JAVA_HOME環(huán)境變量。
下面,我們在Windows XP Service Pack 2操作系統(tǒng)下設(shè)置JAVA_HOME環(huán)境變量,步驟如下。
① 右鍵單擊“我的電腦”,選擇【屬性】,出現(xiàn)如圖1-10所示的畫面。
② 單擊“高級”選項卡,選擇“環(huán)境變量(N)”,如圖1-11和圖1-12所示。
③ 在“系統(tǒng)變量”下方單擊“新建”按鈕。在“變量名”中輸入“JAVA_HOME”,在變量值中輸入JDK所在的目錄“D:\Java\jdk1.6.0_05”(讀者可以根據(jù)自己機器上JDK的安裝目錄來修改這個值),然后單擊“確定”按鈕,如圖1-13所示。
       
圖1-10 “我的電腦”屬性                                          圖1-11 “高級”選項卡
④ 最后在“環(huán)境變量”對話框上單擊“確定”按鈕,結(jié)束JAVA_HOME環(huán)境變量的設(shè)置。
我們再一次轉(zhuǎn)到Tomcat的bin目錄下,用鼠標(biāo)雙擊startup.bat文件,可以看到如圖1-14所示的啟動信息。
注意圖1-14中圓角矩形框中的文本,可以看到啟動的是Tomcat 6.0.16。
               
圖1-12 “環(huán)境變量”對話框                                  圖1-13  新建JAVA_HOME系統(tǒng)變量
圖1-14  Tomcat啟動信息
然后,打開瀏覽器,在地址欄中輸入http://localhost:8080/(localhost表示本地機器,8080是Tomcat默認(rèn)監(jiān)聽的端口號),將出現(xiàn)如圖1-15所示的Tomcat頁面。
圖1-15  Tomcat的默認(rèn)主頁
注意圖1-15中鼠標(biāo)(小手形狀)指向的鏈接——“Tomcat Documentation”,單擊這個鏈接將進入Tomcat的文檔頁面,有關(guān)Tomcat的幫助信息可以在文檔頁面中找到;讀者也可以直接訪問Tomcat的文檔,文檔首頁的位置是Tomcat安裝目錄下的webapps\docs\index.html。如果要關(guān)閉Tomcat服務(wù)器,可以用鼠標(biāo)雙擊Tomcat bin目錄下的shutdown.bat文件。
如果你機器上的Tomcat啟動失敗,有可能是因為TCP的8080端口被其他應(yīng)用程序所占用,如果你知道是哪一個應(yīng)用程序占用了8080端口,那么先關(guān)閉這個程序。如果你不知道或者不想關(guān)閉占用8080端口的應(yīng)用程序,那么你可以修改Tomcat默認(rèn)監(jiān)聽的端口號。
前面介紹了,Tomcat安裝目錄下的conf子目錄用于存放Tomcat服務(wù)器的各種配置文件,其中的server.xml是Tomcat的主要配置文件,這是一個格式良好的XML文檔,在這個文件中可以修改Tomcat默認(rèn)監(jiān)聽的端口號。用UltraEdit(你可以用“記事本”程序或其他的文本編輯工具)打開server.xml,找到修改8080端口的地方。讀者也許要問了,“這個配置文件,我都不熟悉,怎么知道在哪里修改端口號呢?”對于初次接觸server.xml的讀者,確實不了解這個文件的結(jié)構(gòu),但是我們應(yīng)該有一種開放的思路,既然Tomcat的監(jiān)聽端口號是在server.xml中配置,那么只要我們在這個文件中查找“8080”這樣的數(shù)字字符序列,不就能找到修改端口號的地方了嗎!在UltraEdit中,同時按下鍵盤上的“Ctrl”和“F”鍵,出現(xiàn)如圖1-16所示的“查找”對話框。
圖1-16  UltraEdit的查找對話框
然后在“查找”文本框中輸入“8080”,單擊“下一個”按鈕。重復(fù)這一過程,直到找到如圖1-17所示的在server.xml中配置端口號位置。
圖1-17  server.xml中配置端口號的位置
找到后,如果我們不能確定此處就是修改端口號的地方,也沒有關(guān)系,可以先嘗試著修改一下端口號,然后啟動Tomcat。如果啟動成功并且能夠在修改后的端口號上訪問到Tomcat的默認(rèn)主頁,那就證明了我們修改的地方是正確的。學(xué)習(xí)時,我們應(yīng)該養(yǎng)成這種探索并不斷實驗的精神。在這里,我們可以修改端口號為8000(讀者可以根據(jù)自己機器的配置選擇一個端口號),然后保存。再次啟動Tomcat,在Tomcat啟動完畢后,打開瀏覽器,在地址欄中輸入http://localhost:8000/(讀者根據(jù)自己設(shè)置的端口號做相應(yīng)的修改),就可以看到Tomcat的默認(rèn)主頁了。關(guān)閉Tomcat服務(wù)器時,執(zhí)行bin目錄下的shutdown.bat文件。
如果你想將Tomcat安裝為Windows的服務(wù),以便在Windows系統(tǒng)啟動時即運行Tomcat,那么可以打開“命令提示符”窗口,進入Tomcat安裝目錄下的bin子目錄,然后執(zhí)行下面的命令:
service.bat install
這樣將會在Windows系統(tǒng)中安裝一個Tomcat6服務(wù),要啟動這個服務(wù),可以執(zhí)行下面的命令:
net start Tomcat6
要停止Tomcat6服務(wù),可以執(zhí)行下面的命令:
net stop Tomcat6
要刪除Tomcat6服務(wù),可以執(zhí)行下面的命令:
service.bat remove
要提醒讀者的是:net命令是Windows自帶的命令,而service.bat是Tomcat提供的批處理文件。
1.5.3  Tomcat啟動分析
在本節(jié)中我們將通過對Tomcat啟動過程的分析,來幫助讀者更好地理解和掌握Tomcat。
用文本編輯工具打開用于啟動Tomcat的批處理文件startup.bat,仔細(xì)閱讀。在這個文件中,首先判斷CATALINA_HOME環(huán)境變量是否為空,如果為空,就將當(dāng)前目錄設(shè)為CATALINA_HOME的值。接著判斷當(dāng)前目錄下是否存在bin\catalina.bat,如果文件不存在,將當(dāng)前目錄的父目錄設(shè)為CATALINA_HOME的值。根據(jù)筆者機器上Tomcat安裝目錄的層次結(jié)構(gòu),最后CATALINA_HOME的值被設(shè)為Tomcat的安裝目錄。如果環(huán)境變量CATALINA_HOME已經(jīng)存在,則通過這個環(huán)境變量調(diào)用bin目錄下的“catalina.bat start”命令。通過這段分析,我們了解到兩個信息,一是Tomcat啟動時,需要查找CATALINA_HOME這個環(huán)境變量,如果在Tomcat的bin目錄下調(diào)用startup.bat,Tomcat會自動并正確設(shè)置CATALINA_HOME;二是執(zhí)行startup.bat命令,實際上執(zhí)行的是“catalina.bat start”命令。
如果我們不是在Tomcat的bin目錄作為當(dāng)前目錄時調(diào)用startup.bat,就會出現(xiàn)如圖1-18所示的錯誤信息(在bin目錄的父目錄下調(diào)用除外)。
圖1-18  在其他目錄下啟動Tomcat出錯
如果要想在任意目錄下都能啟動Tomcat,就需要設(shè)置CATALINA_HOME環(huán)境變量,你可以將CATALINA_HOME添加到Windows XP系統(tǒng)的環(huán)境變量中,其值就是Tomcat的安裝目錄。在筆者的機器上,Tomcat的安裝目錄是D:\OpenSource\apache-tomcat-6.0.16。添加CATALINA_HOME環(huán)境變量的過程和前述添加JAVA_HOME環(huán)境變量的過程是一樣的。如果你不想在系統(tǒng)的環(huán)境變量中添加,也可以直接在startup.bat文件中進行設(shè)置。下面是在startup.bat文件中設(shè)置CATALINA_HOME后的文件片段:
rem $Id: startup.bat 562770 2007-08-04 22:13:58Z markt $
rem --------------------------------------------------------------------
set CATALINA_HOME=D:\OpenSource\apache-tomcat-6.0.16
rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%
if not "%CATALINA_HOME%" == "" goto gotHome
set CATALINA_HOME=%CURRENT_DIR%
注意以粗體顯示的這句代碼的作用就是設(shè)置CATALINA_HOME環(huán)境變量,在它的下面是判斷CATALINA_HOME是否為空的語句。如果找不準(zhǔn)位置,干脆將設(shè)置CATALINA_HOME環(huán)境變量的這句代碼放到文件的第一行。JAVA_HOME環(huán)境變量也可以采用同樣的方式進行設(shè)置。不過,如果要在其他目錄下利用shutdown.bat來關(guān)閉Tomcat服務(wù)器,則需要在shutdown.bat文件中設(shè)置CATALINA_HOME和JAVA_HOME這兩個環(huán)境變量,設(shè)置變量的位置和startup.bat文件一樣,都是在判斷CATALINA_HOME是否為空之前。當(dāng)然,為了一勞永逸,避免重裝Tomcat后還要進行設(shè)置(需要是同一版本的Tomcat安裝在同一位置),我們最好還是將CATALINA_HOME和JAVA_HOME這兩個環(huán)境變量添加到Windows XP系統(tǒng)的環(huán)境變量中。
有的讀者可能會對Tomcat安裝目錄的環(huán)境變量的名字是CATALINA_HOME而感到奇怪,按照其他環(huán)境變量的設(shè)置來看,JAVA_HOME表示JDK的安裝目錄,那么應(yīng)該用TOMCAT_HOME來表示Tomcat的安裝目錄,可為什么要使用CATALINA_HOME呢?實際上,在Tomcat 4以前,用的就是TOMCAT_HOME來表示Tomcat的安裝目錄,在Tomcat 4以后,采用了新的Servlet容器Catalina,所以環(huán)境變量的名字也改為了CATALINA_HOME。
在Windows系統(tǒng)下環(huán)境變量的名字是與大小寫無關(guān)的,也就是說,JAVA_HOME和java_home是一樣的。
了解了startup.bat文件以后,我們再來看看真正負(fù)責(zé)啟動Tomcat服務(wù)器的catalina.bat文件。通過分析catalina.bat文件,我們發(fā)現(xiàn)它還調(diào)用了一個文件setclasspath.bat。在setclasspath.bat文件中,它檢查JAVA_HOME環(huán)境變量是否存在,并通過JAVA_HOME環(huán)境變量,找到j(luò)ava.exe,用于啟動Tomcat。在這個文件中,還設(shè)置了其他的一些變量,代表調(diào)用Java的標(biāo)準(zhǔn)命令,有興趣的讀者可以自行分析一下這個文件。在執(zhí)行完setclasspath.bat之后,catalina.bat剩下的部分就開始了Tomcat服務(wù)器的啟動進程。
直接執(zhí)行catalina.bat時,需要帶上命令行的參數(shù)。讀者可以在命令提示符窗口下,執(zhí)行catalina.bat,就會打印出catalina.bat命令的各種參數(shù)及其含義,如圖1-19所示。
圖1-19  catalina.bat的各參數(shù)信息
其中常用的參數(shù)是start、run和stop。參數(shù)start表示在一個單獨的窗口中啟動Tomcat服務(wù)器,參數(shù)run表示在當(dāng)前窗口中啟動Tomcat服務(wù)器;參數(shù)stop表示關(guān)閉Tomcat服務(wù)器。我們執(zhí)行startup.bat,實際上執(zhí)行的就是“catalina.bat start”命令;執(zhí)行shutdown.bat,實際上執(zhí)行的是“catalina.bat stop”命令。“catalina.bat run”命令有時候是非常有用的,特別是當(dāng)我們需要查看Tomcat的出錯信息時。
在開發(fā)JSP程序時,經(jīng)常會碰到自己機器上的8080端口號被別的應(yīng)用程序占用,或者在配置server.xml時出現(xiàn)錯誤,當(dāng)通過startup.bat(相當(dāng)于執(zhí)行“catalina.bat start”)啟動Tomcat服務(wù)器時,如果啟動過程中出現(xiàn)嚴(yán)重錯誤,由于是在單獨的窗口中啟動Tomcat服務(wù)器,所以一旦啟動失敗,命令提示符窗口就自動關(guān)閉了,程序運行中輸出的出錯信息也隨之消失,而且沒有任何的日志信息,這就使得我們沒有辦法找出錯誤原因。當(dāng)出現(xiàn)錯誤時,我們可以換成“catalina.bat run”命令再次啟動,一旦啟動失敗,僅僅是Tomcat服務(wù)器異常終止,但是在當(dāng)前的命令提示符窗口下仍然保留了啟動時的出錯信息,這樣我們就可以查找啟動失敗的原因了。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Servlet 環(huán)境設(shè)置 | 菜鳥教程
在Windows中配置多個Tomcat環(huán)境
圖解利用Eclipse3+Sysdeo Tomcat plugin編輯和調(diào)試JSP
JDK1.6.10和tomcat6.0配置方法
BUG管理平臺-JIRA平臺的部署
JSP的環(huán)境引擎--Tomcat
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服