貫通tomcat --- 電子書

http://www.educity.cn/jiaocheng/j10865.html  php

 

第1章 認識Tomcathtml

  【本章導讀】前端

  Tomcat服務器是一個免費的開放源代碼的Web應用服務器。它是Apache軟件基金會(Apache Software Foundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其餘公司及我的共同開發而成。因爲有了Sun的參與和支持,最新的Servlet和JSP規範老是能在Tomcat中及時地獲得體現,Tomcat 6支持最新的Servlet 2.5和JSP 2.1規範。由於Tomcat技術先進、性能穩定且免費,因此深受Java愛好者的喜好並獲得了部分軟件開發商的承認,成爲目前比較流行的Web應用服務器。java

  本章做爲本書的第1章,簡要回顧了Java Web應用的歷史、技術發展概況,以及Tomcat如何融入到這個技術發展過程當中。經過本章的學習,讀者可以瞭解Tomcat的體系結構、Tomcat新的版本特徵,以及Tomcat與其餘Web服務器、應用服務器的區別。linux

  本章主要內容包括動態頁面技術的基本知識、Tomcat有哪些新的特性、Tomcat的體系結構,以及如何區分Tomcat與Web服務器、應用服務器的關係。程序員

  1.1 Java Web應用簡介web

  在Sun的Java Servlet規範中,對Java Web應用作了這樣的定義:"Java Web應用由一組Servlet、HTML頁面、類,以及其餘能夠被綁定的資源構成。它能夠在第三方供應商提供的實現Servlet規範的Web應用容器中運行。"Java Web應用的主要特徵之一就是與ServletContext的關聯。每一個Web應用都有且只有一個ServletContext.當Java Web應用運行時,Servlet容器爲每一個Web應用建立惟一的ServletContext對象,使得它能被同一個Web應用中的全部組件共享。Servlet容器(例如Tomcat)控制這種關聯,而且保證在ServletContext中存儲對象時,不會發生衝突。在Java Web應用中能夠包含以下內容:sql

  Servletshell

  JSP數據庫

  實用類

  靜態文檔,如HTML、圖片等

  客戶端類

  描述Web應用的信息(Web.xml)

  在生成一個Web應用時,第一步要作的工做就是生成Web應用的目錄結構。表1-1中經過一個名爲example的例子,描述了Web應用應該包含的目錄結構。這些目錄都應該放在Servlet容器的<SERVER_ROOT>目錄下,好比在Tomcat中就是%CATALINA_HOME%/webapps.

表1-1Web應用目錄結構

 

  從目錄結構中能夠看到,對於一個Web應用來講,classes既能夠放置在/WEB-INF/classes目錄下,也能夠放置在/WEB-INF/lib目錄下。對於類加載器來講,將首先從/classes目錄里加載類,而後再從/lib目錄加載。若是在這兩個目錄中放置了一樣的類文件,則/classes目錄裏面的類被加載使用。

  全部Web應用的核心就是它的部署描述符。部署描述符是一個XML文件,命名爲web.xml,存放在/<SERVER-ROOT>/applicationname/WEB-INF/目錄下。它描述整個Web應用的配置信息。針對上面的案例來講,web.xml存放在/<SERVER-ROOT>/example/WEB-INF目錄下。部署描述符主要包含如下描述信息:

  ServletContext初始化參數

  本地目錄

  會話配置

  Servlet/JSP定義

  Servlet/JSP映射

  MIME類型映射

  歡迎文件列表

  錯誤頁面

  安全

 
 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

Java API

 

  1.1.1  Java API

  Tomcat做爲Servlet容器,是Java 2企業版平臺(J2EE)中的關鍵組件。

J2EE定義了一組基於Java的API,知足生成企業級的Web應用。

不管企業的大小,均可以使用J2EE技術,可是J2EE的目標是爲了解決大的軟件系統帶來的問題。

J2EE創建在Java 2標準版之上(J2SE),J2SE包含了Java二進制代碼(例如JVM和字節碼編譯器),以及核心的Java代碼庫。

J2EE依賴J2SE的功能。J2EE和J2SE都包含在http://Java.sun.com,且都做爲應用程序可以基於的平臺選擇種類。

  正如上面所述,J2EE是Java API的標準集合。應用程序接口(API)用於軟件開發人員描述服務商所提供的服務接口。在Java中,API用於描述Java虛擬機(JVM)及其代碼庫所能提供的服務接口。Java中的API都由Java標準制定組織Java Community Process(JCP)來維護。JCP是一個開放的國際組織,主要由Java開發者,以及被受權者組成,職能是發展和更新Java技術規範、參考實現(RI)、技術兼容包(TCK)。Java技術和JCP二者的原創者都是Sun計算機公司。然而,JCP已經由Sun於1995年創造Java的非正式程序,演進到現在有數百名來自世界各地Java表明成員一同監督Java發展的正式程序。

  JCP維護的規範包括J2ME,J2SE,JavaEE,XML,OSS和JAIN等。組織成員能夠提交JCR(Java Specification Requests),經過特定程序之後,進入到下一版本的規範裏面。

  全部聲稱符合JavaEE規範的JavaEE類產品(應用服務器、應用軟件、開發工具等),必須經過該組織提供的TCK兼容性測試(須要購買測試包),經過該測試後,須要繳納JavaEE商標使用費。完成了前述的兩項工做便是經過了JavaEE認證(Authorized Java Licensees of JavaEE)。

 

 

 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

J2EE API

 

  1.1.2 J2EE API

  1.J2EE 1.4簡介

  J2EE 1.4平臺包含了衆多的API,Servlet和JSP API僅僅是其中的兩個。表1-2中描述了其餘的J2EE API。

表1-2 J2EE 包含的其餘API

 

  除了J2EE制定的API,J2EE應用也在很大程度上依賴J2SE API.近年來,J2EE API有多個已經移植到J2SE平臺。一個是Java命名目錄接口(JNDI),另一個是XML處理Java API(JAXP)。J2EE和J2SE構成了企業軟件開發的平臺。近年來,雖然微軟的。NET平臺聲稱做爲J2EE平臺的替代品,然而對於。NET來講將來的路還很遙遠。

 

  2.J2EE 5簡介

  J2EE 5不是間接地由J2EE更名而來的,Sun對其作了重大修改,算是一種新的技術。從提交公開審查的規範草案J2EE 5來看,J2EE 5的關注重點是簡化應用開發,尤爲是大量採用元數據標註(annotation)和POJO(普通Java對象)驅動的開發方式,對平臺進行了從新定義。對比此前的J2EE規範,J2EE 5最重要的新增特性就是Java持久化API(即EJB 3 entity bean)、JSF、JSTL等。

  從整個EJB規法的角度來講,EJB 3相對於EJB 2.0的最大變動在於Entity Bean持久化API上。在EJB 3中,Entity Bean持久化已經單獨做爲一個Persistence API規範和其餘的EJB部分分離開來。 EJB 2.0模型存在一些缺陷:

  (1)EJB 2.0模型要求建立多個組件接口,並實現多個沒必要要的回調方法。

  (2)組件接口要求實現EJBObject或EJBLocalObject,以及處理許多沒必要要的異常。

  (3)基於XML的EJB 2.0部署描述符比較複雜且容易出錯。

  (4)基於EJB模型的容器管理持久性在開發和管理方面過於複雜,而且失去了幾個基本特性--如使用數據庫序列定義主鍵的標準方法。

  (5)EJBQL語法很是有限,並且是靜態的,沒法作到運行期間的動態查詢。

  (6)EJB 2.0組件並不是是真正面向對象的,由於它們在繼承和多態性方面有使用限制。

  (7)查找和調用EJB 2.0是一項複雜的任務,即便是在應用程序中使用最基本的EJB也須要對JNDI有一個詳細的瞭解。

  (8)對容器的依賴使得EJB 2.0只能用於服務器組件的開發,沒法實現一次編寫,來進行四處運行的面向構件的開發。

  全部這些複雜性和缺陷,都致使EJB 2.0的採用沒法真正簡化開發並提升生產力。EJB3.0旨在解決以往EJB2.0模型的複雜性和提升靈活性,具體體如今:

  (1)去除了沒必要要的接口Remote,Home,EJB,以及回調方法實現。

  (2)實體Bean採用了POJO模型,一個簡單的Java bean就能夠是一個Entity Bean.無需依賴容器運行和測試。

  (3)全面採用O/R Mapping技術來實現數據庫操做。

  (4)實體Bean能夠運行在全部須要持久化的應用,無論是客戶端仍是服務器端。從而真正實現面向構件的開發。

  (5)實體Bean如今支持繼承和多態性。

  (6)靈活豐富的EJB3查詢語言。

  (7)SQL支持。

  (8)使用元數據批註代替部署描述符,減小複雜性。

  Java EE5做爲J2EE平臺誕生6年後的第4代規範,重點關注的是目前Java開發的幾個熱點:開發效率、運行效率和企業應用整合。目標也是讓J2EE開發簡單、簡單再簡單。J2EE 5做爲新一代Java架構的規範,已經愈來愈受到開發者的重視。

 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

CGI

 

  1.1.3  CGI

  Web頁面並不只僅只由靜態頁面組成,顯示一樣的頁面給每一個用戶。許多頁面內容的產生依賴於不一樣的瀏覽者。靜態頁面在Web應用中佔有重要的位置,可是若是沒有動態頁面參與,不少重要的頁面站點將不能良好的運行,來知足其功能需求。

  通用網關接口(Common Gateway Interface CGI)是最初的動態內容機制,它在Web服務器上執行,容許網站管理員定製他們的頁面。CGI模型描述以下:

  (1)客戶端發送請求給服務端,好比超文本連接標示語言(HTML)頁面;

  (2)服務器接受用戶請求並交給CGI程序處理;

  (3)CGI程序將處理結果傳送給服務器;

  (4)服務器將結果做爲HTTP響應返回給用戶。

  CGI能夠使用多種編程語言來實現,例如Perl.可是CGI不是很是有高效,每次服務端接受到請求,它都必須啓動新的CGI進程來處理。在用戶量不大的狀況下,這個問題還不至於太明顯。可是若是用戶請求量較大,每次都啓動新的CGI進程處理,相對服務器資源代價就會較高。

  因爲CGI自己的缺陷,所以許多替代方案應運而生。通常來講,在這些方案中若是提供環境存在於已經存在的服務器中或者做爲服務器的功能組件的話,它將得到更大的成功。因爲Apache良好的模塊應用程序接口(API),許多CGI的替代品都創建在Apache服務器(www.apache.org)之上。開發者能夠經過API擴展Apache的功能,而不用更改服務器自己代碼。對於程序員來講,生成動態內容,不失爲一個好的策略。當Apache開始傳輸HTTP請求給模塊時,Apache加載模塊到它的內存;而後只要模塊處理完請求,Apache把響應返回給客戶端。因爲模塊已經加載在服務端的內存中,所以加載解釋器的開銷幾乎能夠忽略不計,使得腳本(Scipts)執行得更快。

  目前不多有開發者有能力開發相似的模塊,所以許多第三方模塊提供了其基本的功能,甚至比一般的CGI更增強大。如下是一些例子:

  Mod_perl:內嵌在服務器中的Perl解釋器,減小了每次請求加載Perl解釋器的開銷。

  Mod_php4:與上面mod_perl同樣,提升PHP的執行效率。

  Mod_fastcgi:駐留在內存,提升CGI的響應速度。

  微軟也提供了Internet信息服務(IIS)Web服務器接口,稱爲Internet服務應用程序接口(ISAPI)。因爲IIS做爲Windows操做系統的組成部分,所以IIS目前被普遍地使用。在第19章中,將會詳細講述Tomcat與IIS如何集成,如何整合利用它們最好的性能特徵。

  微軟也開發了動態服務器主頁(ASP)技術,使得用戶可以嵌入Scripts腳本,好比嵌入VBScript到標準的HTML頁面中。事實證實這個技術很是有效,並且對於Java Web技術起到了推動做用。

 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

Servlet

 

  1.1.4  Servlet

  Servlet是一種獨立於平臺和協議的服務器端的Java應用程序,能夠生成動態的Web頁面。Servlet是位於Web服務器內部的服務器端的Java應用程序,與傳統的從命令行啓動的Java應用程序相同,Servlet由Web服務器進行加載,該Web服務器必須包含支持Servlet的Java虛擬機。

  現將Java Servlet與Applet技術作以下的比較:

  1.類似之處

  它們都不是獨立的應用程序,沒有main()方法。

  它們都不是由用戶或程序員調用,而是由另一個應用程序(容器)調用。

  它們都有一個生存週期,包含init()和destroy()方法。

  2.不一樣之處

  Applet具備很好的圖形界面(AWT),與瀏覽器一塊兒,在客戶端運行。

  Servlet 則沒有圖形界面,運行在服務器端。

  與傳統的CGI和許多其餘相似CGI的技術相比,Java Servlet具備更高的效率,更容易使用,功能更強大,具備更好的可移植性,更節省投資。在將來的技術發展過程當中,Servlet有可能完全取代CGI,這是由於Java Servlet相對CGI具備以下的優勢:

  (1)高效

  在傳統的CGI中,每一個請求都要啓動一個新的進程。若是CGI程序自己的執行時間較短,那麼啓動進程所須要的時間極可能超過實際執行時間。而在Servlet中,每一個請求由一個輕量級的Java線程處理(而不是重量級的操做系統進程)。

  在傳統CGI中,若是有N個併發的對同一CGI程序的請求,則該CGI程序的代碼在內存中就會從新裝載了N次;而對於Servlet,處理請求的是N個線程,只須要一份Servlet類代碼。在性能優化方面,Servlet也比CGI有着更多的選擇。

  (2)方便

  Servlet提供了大量的實用工具例程,例如,自動地解析和解碼HTML表單數據、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態等。

  (3)功能強大

  在Servlet中,許多使用傳統CGI程序很難完成的任務均可以輕鬆地完成。例如,Servlet可以直接和Web服務器交互。而普通的CGI程序不能。Servlet還可以在各個程序之間共享數據,使得數據庫連接池之類的功能很容易實現。

  (4)可移植性好

  Servlet用Java編寫,Servlet API具備完善的標準。所以,爲IPlanet Enterprise Server寫的Servlet無須任何實質上的改動便可移植到Apache、Microsoft IIS或者WebStar,幾乎全部主流服務器都直接或經過插件支持Servlet.

  (5)節省投資

  不只有許多廉價甚至免費的Web服務器可供我的或小規模網站使用,並且對於現有的服務器,若是它不支持Servlet的話,要加上這部分功能也每每是免費的(或只須要極少的投資)。

  Java Server Pages(JSP)是一種實現普通靜態HTML和動態HTML混合編碼的技術,JSP並無增長任何本質上不能用Servlet實現的功能。可是,在JSP中編寫靜態HTML更加方便,沒必要再用println語句來輸出每一行HTML代碼。更重要的是,藉助內容和外觀的分離,頁面製做中不一樣性質的任務能夠方便地分開:好比,由頁面設計者進行HTML設計,同時留出供Servlet程序員插入動態內容的空間。

  若是對於寫過Applet程序的人來講,相信寫Servlet程序並不難,甚至更爲簡單。由於Servlet沒有圖形界面,寫起來與傳統的文字界面程序同樣簡單。與Applet同樣,在Servlet中同樣定義了一個生命週期:

  (6)初始化時期

  與Applet類似,在Servlet中,也有一個Init()方法

  Public void init(ServletConfig config) throws ServletException

  {

  Super.init();//作一些初始化動做

  }

  當Servlet被Servlet引擎加載後,接下來就會執行init()方法,所以咱們能夠重載init()方法,用於完成一些所須要的初始化動做。好比打開文件,讀取設定的默認值,以及創建一個連接池(Connection Pool)等。可是不要忘記,本身的Init()執行完後,要記得調用super.init(),以避免有些系統的初始化被不當心省略掉了。

  (7)執行時期

  提供了一些與HTTP協議對應的有關方法。由於它是抽象類別,因此必須繼承它,而後重載該方法。執行時期分爲數類,分別是對應HTTP方法中的Get,Post等方法,例如doGet()對應到Get或doPost()對應到Post方法。以doGet()爲例,若是瀏覽器傳過來的是Get請求模式,那麼就會執行doGet()方法。一樣地,doPost()方法也就是在HTML Form傳過來的Post請求時執行。若是對HTTP協議不是很瞭解,那麼請參閱相關書籍和資料。

  (8)結束時期

  在Init()方法中,開啓了某些資源。當網頁服務器系統要從新啓動,或是要回收資源時,就會調用destroy()這個方法,執行這個最後的部分。可是一樣也要記得調用super.destroy()方法。

  (9)執行架構

  Servlet屬多線程執行方式,同一時間會有多個線程處理對應的客戶端的請求,所以它的service()方法會被同時調用。從圖1-1中能夠看到,其中的Init()與destroy()方法永遠只會執行一次,由於即便是多線程方式執行,Servlet的實體仍是隻有一個,故初始化與結束僅需一次便可。這是Servlet引擎管理的,Servlet引擎會保證這樣的執行結果。

圖1-1 Servlet執行架構

  2005年9月26日,Sun公司和JSR154的專家組發佈了Servlet API的一個新的版本。在通常狀況下,一個JSR的新版本僅僅就是對之前少數有名無實的規範進行去除更新。但此次,新版本中增長了新的特徵,它們對Servlets的產生了重要影響,使得Servlet的版本升到了2.5.

  Servlet 2.5的一些變化,包括它基於最新的J2SE 5.0開發的;支持annotations;Web.xml中的配置更加方便;去除了少數的限制;優化了一些實例等等。

  從一開始,Servlet 2.5 規範就列出J2SE 5.0(JDK 1.5)做爲它最小的平臺要求。它使得Servlet 2.5只能適用基於J2SE 5.0開發的平臺,這個變更意味着全部J2SE5.0的新特性均可以保證對Servlet 2.5程序員有用。

  在傳統意義上,Servlet和J2EE版本一直與JDK的版本保持同步發展。可是,此次Servlet的版本跳過了1.4版本。專家組認爲版本的加速增加是正常的,由於J2SE 5.0提出了一個引人注目的、Servlet和JEE規範都要利用的特徵--Annotations.

  Annotations是做爲JSR175的一部分(一種爲Java語言設計提供便利的Metadata)提出的一種新的語言特點。它是利用Metadata爲Java編碼結構(類、方法、域等)裝飾的一種機制。它不能像代碼那樣執行,可是能夠用於標記代碼。這個過程是基於Metadata信息的代碼處理機,經過更新它們的事件行爲來實現的。

  Annotations能夠憑藉不一樣的技巧來註釋類和方法,例如連續地標記接口或者是@deprecated Javadoc評論。這種新式的Metadata能夠便利地提供一種標準的機制來實現註釋功能,以及經過庫來建立用戶本身的註釋類型的變量。

  下面是一個簡單的Web service 註釋例子:

  import Javax.jws.WebService;

  import Javax.jws.WebMethod;

  @WebService

  public class HelloWorldService {

  @WebMethod

  public String helloWorld() {

  return "Hello World!";

  }

  }

  @WebService和@WebMethod這兩個註釋類型,在JSR181(爲Java平臺提供的Web ServicesMetadata)有詳細說明,能夠像類同樣的引用,標記這個類做爲一個Web service而且標記它的helloWorld()方法做爲一個Web service方法。對於它們自己來講,註釋只是寫在那裏並無什麼做用,好像在崗位上作記錄同樣。可是,一個容器一旦加載這個類並對那些註釋進行二進制編碼,就能夠把這個類連到Web service上。

  註釋能夠接受屬性/值這些參數。它保存着參數的信息而且能夠利用這些參數來更改被請求的事件行爲。例以下面更高級的註釋例子:

  @WebService(

  name = "PingService",

  targetNamespace=http://acme.com/ping

  )

  @SOAPBinding(

  style=SOAPBinding.Style.RPC,

  use=SOAPBinding.Use.LITERAL

  )

  public class Ping {

  @WebMethod(operationName = "Foo")

  public void foo() { }

  }

  一旦加載了這個類,一個正確配置的容器就會識別出注釋及其參數,並將此做爲一個PingService,而後將它經過利用remote-procedure-call/literal的編碼方式與一個Foo operation相連。實際上,註釋就是指明瞭類和類的容器之間的聯繫。

  不論使用註釋與否,即便在不使用時--它對於理解服務器上程序的執行依然有着重要意義。爲了讓服務器識別類中的註釋,它必須加載這些類,這就意味着服務器必須是啓動着的。服務器經過WEB-INF/classes目錄下和WEB-INF/lib目錄下的全部類文件來查找註釋。(在任何規範下,服務器都只需查找這兩個目錄。)能夠經過下面的方法指明<Web-app>根的屬性而沒必要使用任何註釋:

  <Web-app xmlns=http://Java.sun.com/xml/ns/Javaee

  version="2.5" full="true">

  </Web-app>

  Servlet 2.5還爲Web.xml引入了幾個小的變更,使得它更加方便。

  首先,當寫<filter-mapping>,能夠在<Servlet-name>標籤中使用*號來表明全部的Servlets.而之前,必須一次把一個Servlet綁定到過濾器上,像這樣:

  <filter-mapping>

  <filter-name>Image Filter</filter-name>

  <Servlet-name>ImageServlet</Servlet-name>

  </filter-mapping>

  如今就能夠一次綁定全部的Servlets:

  <filter-mapping>

  <filter-name>Image Filter</filter-name>

  <Servlet-name>*</Servlet-name>??<!-- 新特徵 -->

  </filter-mapping>

  這有很大的用途,例如:

  <filter-mapping>

  <filter-name>Dispatch Filter</filter-name>

  <Servlet-name>*</Servlet-name>

  <dispatcher>FORWARD</dispatcher>

  </filter-mapping>

  其次,當寫<Servlet-mapping> 或者 <filter-mapping>時,能夠在同一標籤中採用複合匹配的標準。之前一個<Servlet-mapping>只支持一個<url-pattern>元素,如今它能夠支持更多個元素,例如:

  <Servlet-mapping>

  <Servlet-name>color</Servlet-name>

  <url-pattern>/color/*</url-pattern>

  <url-pattern>/colour/*</url-pattern>

  </Servlet-mapping>

  一樣地,之前<filter-mapping>也是隻支持一個<url-pattern> 或者一個 <Servlet-name>,如今它均可以支持任意多個元素:

  <filter-mapping>

  <filter-name>Multipe Mappings Filter</filter-name>

  <url-pattern>/foo/*</url-pattern>

  <Servlet-name>Servlet1</Servlet-name>

  <Servlet-name>Servlet2</Servlet-name>

  <url-pattern>/bar/*</url-pattern>

  </filter-mapping>

  Servlet 2.5還能夠將合法的HTTP/1.1方法名放進<http-method>元素中。當使用這些方法時,<http-method>將指明<security-constraint>標記裏的方法應該被應用。從之前來看,它僅限於HTTP/1.1的7個標準方法:GET,POST,PUT,DELETE,HEAD,OPTIONS和TRACE.如今,HTTP/1.1容許對方法進行擴展,WebDAV(Web-based Distributed Authoring and Versioning)就是用於這種擴展的廣泛技術。在Servlet 2.5中,你能夠安全地約束任何可能的HTTP方法名、標準及擴展,包括WebDAV方法,例如LOCK,UNLOCK,COPY及MOVE.

  當須要寫一個WebDAV的Servlet時,再也不必須使用doLock()和doCopy()方法,而只需寫本身的service()方法及分派request.getMethod()方法。正是因爲這種變化,工做人員沒必要再考慮系統的安全性。

  Servlet 2.5去除了關於錯誤處理和回話跟蹤的一些限制。對於錯誤處理,在Servlet 2.5以前,配置在<error-page>中的錯誤處理頁面不能經過調用setStatus()方法來修改觸發它們的錯誤代碼。這一規範是基於這樣的觀點,即錯誤頁面的工做是指出每一個錯誤而不是修改錯誤。可是,在實際使用中,錯誤頁面不能只是用於指出錯誤,而是還能作更多的事情,甚至能夠代替在線幫助來幫助用戶解決問題。因而,Servlet 2.5減弱了這一規範,這一規範也將再也不限制錯誤頁面所產生的反饋信息。

  對於會話跟蹤,在Servlet 2.5以前,調用RequestDispatcher.include()的Servlet不能設置響應的標題頭,而又是Servlet 2.5減弱了這一規範。原規範的目的是使內部的Servlets限制在本身的頁面空間中,不能夠影響外部的頁面。如今這個規範已經被減弱,就容許在內部的Servlet中使用request.getSession()命令,這樣這個命令就能夠悄悄地建立一個會話跟蹤Cookie的標題頭。雖然在邏輯上要求限制內部的資源,但在邏輯上也要求這些限制不該該取消其啓動Session的功能。這個變更對於Portlet規範來講顯得尤爲重要。其做用是:若是響應已經有效,則getSession()命令就會拋出一個IllegalStateException9(異常)。而在此以前,就沒有這個功能。

  Servlet 2.4規範規定響應在這幾種狀況下應該是有效的,在響應的setContentLength方法中內容已經明確說明,以及內容已經寫進了響應中。這種狀況只有您的代碼像下面這樣才能夠使響應從新定向:

  response.setHeader("Host", "localhost");

  response.setHeader("Pragma", "no-cache");

  response.setHeader("Content-Length", "0");

  response.setHeader("Location", "http://www.apache.org");

  Servlet技術忽略特定區域的標題頭,由於內容知足0字節長度,響應就會當即生效。而在它開始以前,響應就已失效了!Servlet容器一般拒絕執行這種行爲,而Servlet 2.5版本增長了"長度必須大於0"的這個原則。

  Servlet 2.4規範規定必須在調用request.getReader()方法以前調用request.setCharacterEncoding()方法。可是,若是你忽略這個原則而在其以後去調用request.setCharacterEncoding()方法,那麼會產生什麼樣的後果,這個問題在規範裏並無說明。爲了簡便起見,如今排除這種狀況!

  Cross-context sessions(不一樣上下文目錄間的會話)

  最近,關於Cross-context會話處理的規則已經明確說明。當Servlets指派從一個上下文到其餘上下文的請求時,這個規則就發揮了做用--在目標調用過程當中,包括哪些會話。這個版本的出現使得一個上下文目錄主頁裏的Portlets能夠經過幾種內部的命令來對別的上下文目錄裏的Portlets起做用。Servlet 2.5明確指出一個上下文目錄裏的資源能夠訪問其餘上下文目錄的Session(會話),而不用考慮這個請求從哪裏開始的。這意味着Portlets能夠脫離主頁的範圍而在本身的範圍裏運行,並且這個規範還會應用在不兼容的Serlvet容器中。

  因爲Servlet 2.5版本保持了一些原來的性質,幾個大的概念不得不延後到下一個階段。它們包括:

  新的輸入/輸出(NIO)支持:使Servlets進行客戶端通訊成爲可能。

  過濾器wrap-under或wrap-over語義:有時用過濾器包裝請求,或者響應對象去修改方法行爲或者啓用新的方法。當把這種包裝和服務器對請求和響應的包裝結合起來時,又應該怎麼包裝在一塊兒呢?

  用於歡迎的Servlets文件:做爲索引應該充當歡迎做用的文件嗎?在此以前,這個回答是確定的。可是規範沒有明確地說明如何使用這個功能,尤爲在沒有索引的狀況下。

  用於歡迎的文件的分派規則:如何分派歡迎文件,這個細節並無徹底說明,而是遺留了一些開放的缺口來應對不兼容問題。

  登陸後選擇默認頁面:若是用戶經過他們的書籤訪問Servlet的登陸頁面,那麼在成功登陸後頁面應該轉向哪裏呢?這個問題至今還沒有明確說明。

  用戶的主題日誌:在經過網站正確地註冊以後,不經過傳統地登陸方式沒有辦法使Servlet信任用戶。

  若是拋開註釋來看Servlet 2.5的變化,可見在配置文件Web.xml中去除了一些限制,同時又優化了實例行爲,使其更適合、更便於開發Web系統(網頁)。

  Servlet 2.5中註釋的做用也有所變化。Servlets自己並不能聲明註釋類型的變量,甚至性能弱的Servlet容器都不支持註釋。然而在J2EE5環境下的Servlets編寫者能夠看到,經過公共的註釋及EJB3.0和JAX-WS2.0規範而引入的註釋類型會對代碼產生很大變化,而且這也將對Servlet如何管理外部資源、對象的持久化及EJB的構成產生重大影響。

  Servlet儘管在性能和服務端負載方面超越了CGI,可是它仍然有本身的缺點:

  在複雜的HTML網頁中加入動態部分,若是用Servlet來處理的話,編寫代碼的工做量將至關之大。

  因爲在程序中的硬編碼,使得應用程序維護性極差。由於若是在HTML中修改文本內容,則Servlet必須從新編譯。

  Servlet要求頁面設計人員必須對Java有足夠的瞭解。

  正是因爲Servlet存在上面的問題,才致使了JSP技術的出現。

 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

JSP

 

  1.1.5  JSP

  JSP (Java Server Pages)是由Sun公司倡導、許多公司參與一塊兒創建的一種動態網頁技術標準,實現了普通靜態HTML和動態HTML混合編碼的技術。JSP是在服務器端創建的動態網頁,更明確地說,JSP是能在Web服務器端整個Java語言至HTML網頁的環境中,利用HTML網頁內含的Java程序代碼取代原有的CGI、ISAPI或者IDC的程序,以便執行原有CGI/WinCGI、ISAPI的功能。許多由CGI程序生成的頁面大部分仍舊是靜態HTML,動態內容只在頁面中有限的幾個部分出現。可是包括Servlet在內的大多數CGI技術及其變種,老是經過程序生成整個頁面,JSP技術能夠分別建立這兩個部分。

  現將JSP與ASP、PHP技術相比較,應會發現有以下的優勢。

  將內容的生成和顯示進行分離

  使用JSP技術,Web頁面開發人員能夠使用HTML或者XML標識來設計和格式化最終頁面。使用JSP標識或者小腳原本生成頁面上的動態內容,其生成的內容的邏輯被封裝在標識和JavaBeans組件中,而且捆綁在小腳本中,全部的腳本在服務器端運行。由於核心邏輯被封裝在標識和Beans中,因此其餘人,如Web管理人員和頁面設計者,可以編輯和使用JSP頁面,而不影響內容的生成。在服務器端,JSP引擎解釋JSP標識和小腳本,生成所請求的內容(例如:經過訪問JavaBeans組件、使用JDBC技術訪問數據庫等),而且將結果以HTML(或者XML)頁面的形式發送至瀏覽器。這有助於開發者既保護本身的代碼,又保證任何基於HTML的Web瀏覽器的徹底可用性。

  強調可重用的組件

  絕大多數的JSP頁面依賴於可重用的、跨平臺的組件(JavaBeans或者Enterprise JavaBean組件)來執行應用程序所要求的更爲複雜的操做。開發人員可以共享和交換執行普通操做的組件,使得這些組件爲更多的使用者或者客戶團體所使用。基於組件的方法加速了整體開發過程,使得各類組織在他們現有的技能和優化結果的開發努力中獲得平衡。

  採用標籤簡化頁面開發

  Web頁面開發人員不會都是熟悉腳本語言的編程人員。JSP技術封裝了許多功能,這些功能是在生成易用的、與JSP相關的XML標識的動態內容時所須要的。標準的JSP標識可以訪問和實例化JavaBeans組件、設置或者檢索組件屬性、下載Applet,以及執行用其餘方法更難於編碼和耗時的功能。

  經過開發定製標籤庫,JSP技術是能夠擴展的。從此第三方開發人員和其餘人員能夠爲經常使用功能建立本身的標籤庫。這使得Web頁面開發人員可以使用如同標籤同樣的工具來執行特定功能。

  健壯性與安全性

  因爲JSP頁面的內置腳本語言是基於Java編程語言的,並且全部的JSP頁面都被編譯爲Java Servlet,JSP頁面就具備Java技術的全部好處,包括健壯的存儲管理和安全性。

  良好的移植性

  做爲Java平臺的一部分,JSP擁有Java編程語言"一次編寫,各處運行"的特色。隨着愈來愈多的供應商將JSP支持添加到他們的產品中,能夠使用本身所選擇的服務器和工具,並且更改工具和服務器並不影響當前的應用。

  企業級的擴展性和性能

  當與Java 2平臺、企業版(J2EE)和Enterprise JavaBeans技術整合時,JSP頁面將具備更好的擴展性和性能。

  JSP並無增長任何本質上不能用Servlet實現的功能。可是,在JSP中編寫靜態HTML更加方便,沒必要再用Println語句來輸出每一行HTML代碼。更重要的是,藉助內容和外觀的分離,頁面製做中不一樣性質的任務能夠方便地分開。好比,由頁面設計專家進行HTML設計,同時留出供Servlet程序員插入動態內容的空間。

  SSI是一種受到普遍支持的在靜態HTML中引入外部代碼的技術。JSP在這方面的支持更爲完善,由於它能夠用Servlet而不是獨立的程序來生成動態內容。另外,SSI實際上只用於簡單的包含,而不是面向那些可以處理表單數據、訪問數據庫的"真正的"程序。

  JavaScript可以在客戶端動態地生成HTML.雖然JavaScript頗有用,但它只能處理以客戶端環境爲基礎的動態信息。除了Cookie以外,HTTP狀態和表單提交數據對JavaScript來講都是不可用的。另外,因爲是在客戶端運行,JavaScript不能訪問服務器端資源,好比數據庫、目錄信息等。

  2006年Sun發佈了JSP和JSF新技術規範,其中最重要的一點是二者將表達式語言(Expression Language,EL)部分合二爲一。在不久的未來,這兩種技術有可能更進一步地彼此融合,成爲一種統一的表現層技術。JSP 2.1把Expression Language(EL)輸出到它本身各自分離的文檔中,在技術上,這些文檔是JSP規範的子文檔。這些統一的EL規範定義了一個更高層的Java 包--Javax.el.這個包與使用它的技術之間徹底獨立,而且容許此技術將自身插入EL處理過程。更改的JSP規範聽從使用標準化EL的規範。對於前面提到的JSR-252,這個規範並沒什麼新特性。Faces 1.2支持新的標準化EL,還包含一些Bug修復的相關規範。

  Faces和JSP在JSRs下的結盟帶來了一些新功能,也爲未來的發展打下了堅實的基礎。例如,在同時使用Faces和JSP的Web應用中,網頁僅使用JSP(不包含任何Faces內容)來訪問Managed Beans成爲可能。在JSP規範的附錄E中和Faces規範的前言中均可以看到更改內容的細節。

 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

JSP標籤庫

 

  1.1.6  JSP標籤庫

  JSP技術中,actions是一系列元素的集合,包括生成、訪問程序語言對象,影響輸出流。JSP規範中定義了6個標準actions,除了這些標準actions,JSP技術也支持可重用組件,稱爲自定義actions.在JSP頁面中,actions經過自定義標籤來觸發。一個標籤庫是自定義標籤的集合,是一種經過JavaBean生成基於XML的腳本的方法。從概念上講,標籤就是很簡單並且可重用的代碼結構。下面的JSP文件是引入了標籤庫後的代碼:

  <% @ page language ="Java " %>

  <html>

  <head>

  <title>Hello World</title>

  </head>

  <body>

  <app: HelloWorld/>

  </body>

  </html>

  相對於沒有采用標籤庫的JSP文件代碼:

  <% @ page language ="Java " %>

  <html>

  <head>

  <title>Hello World</title>

  </head>

  <body>

  <%

  String message = request.getAttribute("message");

  if (message == null || message.equals (""))

  {

  message = "Hello World";

  }

  %><%=message%>

  </body>

  </html>

  能夠看到一些改進。一個相似HTML標籤封裝了整個功能。實際上,越複雜的應用程序,採用JSP標籤越能提升程序的可讀性。每一個標籤都有一個相對應的包含代碼的Java類。標籤都是成對出現,一個開始標籤緊接着就是一個結束標籤。例如:

  <aTag> Something here </aTag>

  標籤生命週期包含:當遇到開始標籤時,稱爲doStartTag()方法和一個doEngTag()方法,以及一個爲下一次請求作準備,重設全部狀態的方法。

  自定義標籤庫封裝了可重用的任務,所以它們在多個應用中被使用。精通Java語言的開發者生成JSP標籤庫,Web應用設計人員使用標籤庫,專一於表示層的顯示,而不須要關注具體的細節。

  標籤庫的特徵以下:

  能經過調用的頁面傳遞的屬性來定製。

  能訪問JSP頁面中所容許的全部對象。

  能修改調用頁面的響應。

  能相互通訊。

  能相互嵌套,支持複雜的JSP頁面交互。

 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

JSP EL

 

  1.1.7  JSP EL

  JSP EL(Exression Language)表達式語言,是包含在JSTL(JavaServer Page Standard Library)1.0的一個簡單的資料存取與運算的語言。自從JSP2.0後,則歸入了JSP正式標準,稱爲JSP所支持的特性之一。JSP Exression Language定義了變量存取、運算、函數等內容,配合JSTL其餘標籤或流程控制標籤,就能夠實現更好的邏輯視圖分離之目的。例如:下面是一個JSP網頁利用Exression Language來計算使用者所請求的兩個數字相加結果:

  <html>

  <head><title>EL Test</title>

  </head>

  <body>

  簡單的EL運算

  <H1>${param.a}+${param.b}=${param.a+param.b}</H1>

  </body>

  </html>

  若是使用表單或直接在網址上傳入a與b的值,例如:http://localhost:8080/myjsp/elTest.jsp?a=10&b =14則會取得下面的結果:

  <html>

  <head><title>EL Test</title></head>

  <body>

  簡單的EL運算:

  <H1> 10 + 14 = 24 </H2>

  </body>

  </html>

  在這個簡單的例子中,能夠看到Expression Language是使用 ${ 與 } 來包括所要存取的隱含對象、變量與其進行運算,param是Expression Language的隱含對象,表示使用者的請求參數,param.a表示取得使用者請求參數a的值。大體而言,Expression Language中的每個隱含對象,其訪問的數據與做用範圍對應於JSP隱含對象。至於+則是Expression Language中定義的操做符,EL操做符同通常的程式語言同樣,提供有算術運算、邏輯運算、關係運算等運算符。

 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

Servlet容器介紹

 

  1.1.8  Servlet容器介紹

  Servlet容器也叫作Servlet引擎,是Web服務器或應用程序服務器的一部分,用於在發送的請求和響應之上提供網絡服務,解碼基於MIME的請求,格式化基於MIME的響應。Servlet容器在Servlet的生命週期內包容和管理Servlet.

  根據Servlet容器工做模式的不一樣,能夠將Servlet容器分爲如下3類。

  (1)獨立的Servlet容器

  當使用基於Java技術的Web服務器時,Servlet容器做爲構成Web服務器的一部分而存在。然而大多數的Web服務器並不是基於Java,所以,就有了下面兩種容器的工做模式。

  (2)進程內的Servlet容器

  Servlet容器由Web服務器插件和Java容器兩部分的實現組成。Web服務器插件在某個Web服務器內部地址空間中打開一個JVM(Java虛擬機),使得Java容器能夠在此JVM中加載並運行Servlet.若有客戶端調用Servlet的請求到來,插件取得對此請求的控制並將它傳遞(使用JNI技術)給Java容器,而後由Java容器將此請求交由Servlet進行處理。進程內的Servlet容器對於單進程、多線程的服務器很是適合,提供了較高的運行速度,但伸縮性有所不足。

  (3)進程外的Servlet容器

  Servlet容器運行於Web服務器以外的地址空間,它也是由Web服務器插件和Java容器兩部分的實現組成的。Web服務器插件和Java容器(在外部JVM中運行)使用IPC機制(一般是TCP/IP)進行通訊。當一個調用Servlet的請求到達時,插件取得對此請求的控制並將其傳遞(使用IPC機制)給Java容器。進程外Servlet容器對客戶請求的響應速度不如進程內的Servlet容器,但進程外容器具備更好的伸縮性和穩定性。

  Tomcat做爲一個免費的開源Web服務器,它是Apache軟件基金會(Apache Software Foundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其餘公司及我的共同開發而成。因爲有了Sun的參與和支持,最新的Servlet和JSP規範老是能在Tomcat中獲得及時地體現。由於Tomcat技術先進、性能穩定,而且免費,因此深受Java愛好者的喜好並獲得了部分軟件開發商的承認,成爲目前比較流行的Web服務器。

 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

選用合適的Web技術

 

  1.1.9 選用合適的Web技術

  JSP做爲J2EE的一部分,既能夠用於開發小型的Web站點,也能夠用來開發大型的、企業級的應用程序。到底如何選用合適的Web技術來開發本身的站點,本節着重講述對於不一樣規模的Web系統,使用JSP進行開發的不一樣方式。

  1.直接使用JSP

  對於最小型的Web站點來講,能夠直接使用JSP來構建動態網頁。這種站點最爲簡單,所須要的也是簡單的留言板、動態日期等基本的功能。對於這種開發模式,通常能夠將全部的動態處理部分都放置在JSP的Scriptlet中。

  這種結構的優勢就是編程簡單,成本很低。容許頁面的設計者根據資源的狀態、動態來生成頁面的內容。可是當系統規模增大的時候,這樣的結構不適合多個客戶同時訪問資源,由於同時會有大量的請求須要服務端來處理。每一個請求都會創建一個連接,消耗必定的資源。這樣,就須要讓這些連接共享一些資源。其中最明顯的例子就是用JDBC連接數據庫中用到的連接池(Connection pools)。另外,該結構也會致使JSP中出現大量的JAVA代碼。這雖然對Java程序設計人員來講不會有什麼問題,但是大量的代碼分散在JSP中,不利於維護和修改。

  2.JSP+JavaBeans(Model 1)

  中型站點面對的是數據庫查詢、用戶管理和小量的商業業務邏輯。對於這種站點,不能將全部的東西所有交給JSP頁面來處理。在單純的JSP中加入JavaBeans技術,將有助於這種中型網站的開發。利用JavaBeans將很容易完成如數據庫連接、用戶登陸與註銷、商業業務邏輯封裝的任務。例如:將經常使用的數據庫連接寫成一個JavaBeans,既方便了使用,又能夠使JSP文件簡單而清晰。經過封裝,還能夠防止通常開發人員直接得到訪問數據庫的權限。

  3.JSP+JavaBeans+Servlet

  不管用ASP仍是PHP開發動態網站,長期以來都有一個比較重要的問題,就是網站的邏輯關係和網站的顯示頁面不容易分開。這使得代碼的可讀性和可維護性不高。另外一方面,動態Web的開發人員也在抱怨,將網站美工設計的靜態頁面和動態程序合併過程是一個異常痛苦的過程。

  如何解決這個問題呢?JSP問世後,有些人認爲Servlet已經徹底能夠被JSP代替。然而,事實是在Servlet再也不擔負動態頁面生成的任務之後,開始擔負起決定整個網站邏輯流程的任務。在邏輯關係異常複雜的網站中,藉助於Servlet與JSP良好的交互關係和JavaBeans的協助,徹底能夠將網站的整個邏輯結構放在Servlet中,而將動態頁面的輸入放在JSP頁面中來完成。在這種開發方式中,一個網站能夠有一個或幾個核心的Servlet來處理網站的邏輯,經過調用JSP頁面來完成客戶端的請求。讀者在後面將能夠看到,在J2EE模型中,Servlet的這項功能能夠被EJB等取代。

  4.MVC開發模型

  在MVC開發模型中,整個系統能夠分爲三個主要的部分:

  (1)視圖

  視圖就是用戶界面部分,在Web應用程序中也就是HTML、XML、JSP頁面。這個部分主要處理用戶能看到的東西,動態的JSP部分處理了用戶能夠看見的動態網頁,而靜態網頁則由HTML、XML輸出。

  (2)控制器

  控制器負責網站的整個邏輯。它用於管理用戶與視圖發生的交互。讀者能夠將控制器想象成處在視圖和數據之間,對視圖與模型交互進行管理的部分。經過使視圖徹底獨立於控制器和模型,就能夠輕鬆替換前端客戶程序,也就是說,網頁製做人員能夠獨立自由改變Web頁面而不用擔憂影響這個基於Web應用程序的功能。

  在J2EE中,控制器的功能通常是由Servlet、JavaBeans、Enterprise JavaBeans中的SessionBeans來擔當。

圖1-2 MVC體系結構

  MVC的優勢表如今如下幾個方面:

  能夠爲一個模型在運行時同時創建和使用多個視圖。變化-傳播機制能夠確保全部相關的視圖獲得及時的模型數據變化,從而使全部關聯的視圖和控制器作到行爲同步。

  視圖與控制器的可接插性,容許更換視圖和控制器對象,並且能夠根據需求動態地打開或關閉、甚至在運行期間進行對象替換。

  模型的可移植性。由於模型是獨立於視圖的,因此能夠把一個模型獨立地移植到新的平臺工做。須要作的只是在新平臺上對視圖和控制器進行新的修改。

  潛在的框架結構。能夠基於此模型創建應用程序框架,不只僅是用在設計界面的設計中。

  MVC的不足之處表如今如下幾個方面:

  增長了系統結構和實現的複雜性。對於簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增長結構的複雜性,並可能產生過多的更新操做,下降運行效率。

  視圖與控制器間的過於緊密的連接。視圖與控制器是相互分離,但確實聯繫緊密的部件。視圖沒有控制器的存在,其應用是頗有限的,反之亦然。這樣就妨礙了它們的獨立重用。

  視圖對模型數據的低效率訪問。依據模型操做接口的不一樣,視圖可能須要屢次調用才能得到足夠的顯示數據。對未變化數據的沒必要要的頻繁訪問,也將損害操做性能。

 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

Tomcat體系結構介紹

 

  1.2  Tomcat體系結構介紹

  Tomcat目前最新的版本是6.0,支持Servlet 2.5和JSP2.1規範。它由一系列嵌套的組件組成。

  頂層組件:位於整個配置文件的頂層。

  連接器:連接表明了介於客戶與服務之間的通訊接口,負責將客戶的請求發送給服務器,並將服務器的響應結果傳遞給客戶。

  容器組件:包含了其餘組件的集合。

  嵌套組件:能夠加入到容器中的組件,但不能包含其餘組件。

  圖1-3描述了Tomcat配置的結構。

圖1-3 Tomcat配置體系結構圖

  當配置Tomcat時,能夠移除一些不須要的對象,但並不會影響服務。通常來講,若是使用Web服務器集成的話,如Apache,則引擎和主機組件是沒必要要的。Tomcat的組件都是能夠在server.xml文件中進行配置的,每一個Tomcat組件在Server.xml文件中對應一種配置元素。在第三章中,將會詳細講述Servel.xml文件配置,如今主要對Tomcat的基本組件進行介紹。

  1.頂層組件

  頂層組件包含Server組件和Service組件。Server組件是Tomcat服務器的實例,能夠在Java虛擬機(JVM)中生成惟一的服務器實例。它還能夠在一個服務器中,爲不一樣的端口設置單獨的服務配置。這樣,既方便單獨地重啓應用程序,又能夠在某特定的JVM崩潰時,確保其餘實例上的應用程序是安全的。Service組件用來訪問請求,把請求轉發給合適的Web應用程序,而後返回請求的處理結果;與它的連接器組成引擎組件。引擎也就是Servlet引擎,是請求處理的組件。引擎檢查HTTP頭,而後決定傳送給哪一個主機或者應用程序。每一個Service都被命名,方便管理員可以經過日誌記錄每一個Service的信息。

  2.連接器組件

  連接器連接Web應用程序和客戶端,表明和客戶端實際交互的組件。它負責接受來自客戶端的請求,以及向客戶返回響應結果。Tomcat的默認端口是8080,爲了不與其餘的Web服務器標準端口(80)相沖突。比較常見的連接器是HTTP connector和Apache JServ Protocl(AJP)connector.

  3.容器組件

  容器組件負責接受來自頂層組件的請求,而後處理這些請求,並把處理結果返回給上層組件。容器組件包括引擎組件(Engine Component)、主機組件(Host Component)和上下文組件(Context Component)。引擎組件負責接受和處理來自它所屬的Service中的全部Connector的請求。每一個Service組件只能包含一個引擎組件。主機組件定義了一個虛擬主機,它容許在同一臺物理機器上,配置多個Web應用;多個主機組件能夠包含在引擎組件中。上下文組件是使用最爲頻繁的組件,每一個上下文組件表明了容許在虛擬主機上的每一個Web應用。一個虛擬主機可以運行多個Context,它們經過各自的Context Path進行相互區分。

  4.嵌套組件

  嵌套組件嵌套在容器內,爲管理人員提供管理服務。包括全局資源組件(The Global Resources Component)、加載器組件(Loader Component)、日誌組件(Logger Component)、管理器組件(Manager Component)、域組件(Realm Component)、資源組件(Resources Component)和閥組件(Valve Component)。

  全局資源組件只能嵌套在Server組件中,用於配置server中其餘組件所用到的全局JNDI資源。加載器組件只能嵌套在上下文組件中,用於指定一個Web應用程序的類加載器,並將該應用程序的類和資源加載到內存中。通常來講,Tomcat中默認的類加載器就能知足大部分的需求,所以開發人員沒有必要定製本身的類加載器。日誌組件能借助Log4J來實現記錄日誌。

  管理器組件也只能在Context中有效。管理器組件是會話管理器,負責會話的建立和維護。域組件是一個包含用戶名、密碼和用戶角色的數據庫。角色與Unix的group相似。域的不一樣實現容許將Catalina集成到認證信息已經被建立和維護的環境中,而後利用這些信息來實現容器管理的安全性。在任何組件中(如引擎、主機或者上下文組件)均可以嵌套域組件。另外,引擎或者主機的域會自動被低層次的容器集成,除非被明確覆蓋。資源組件只在上下文組件中支持,它表明的是Web應用程序中的靜態資源,以及它們被容許存放的格式,例如壓縮文件等。

  閥組件用於在請求在被到達目的以前,截取該請求,並處理它。有點相似於Servlet規範中定義的過濾器。它是Tomcat專有的、目前還不能用於其餘的Servlet/JS容器。閥組件能夠嵌入到其餘組件中,如引擎、主機和上下文組件。閥組件一般用於記錄請求、客戶端IP地址,以及服務器端利用率信息,這種技術被稱爲請求轉儲(Request Dumping)。一個請求轉儲閥記錄HTTP頭的信息和Cookies信息。響應轉儲閥記錄響應HTTP頭和Cookies信息。閥是可重用的組件,能按照用戶的需求增刪。

 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

Tomcat與應用服務器

 

  1.3  Tomcat與應用Web服務器

  1.3.1  Tomcat與應用服務器

  到目前爲止,Tomcat一直被認爲是Servlet/JSP API的執行器,也就所謂的Servlet容器。然而,Tomcat並不只僅如此,它還提供了JNDI和JMX API的實現機制。儘管如此,Tomcat仍然還不能算是應用服務器,由於它不提供大多數J2EE API的支持。

  頗有意思的是,目前許多的應用服務器一般把Tomcat做爲它們Servlet和JSP API的容器。因爲Tomcat容許開發者只需經過加入一行致謝,就能夠把Tomcat嵌入到它們的應用中。遺憾的是,許多商業應用服務器並無遵照此規則。

  對於開發者來講,若是是爲了尋找利用Servlet、JSP、JNDI和JMX技術來生成Java Web應用的話,選擇Tomcat是一個優秀的解決方案;可是爲了尋找支持其餘的J2EE API,那麼尋找一個應用服務器或者把Tomcat做爲應用服務器的輔助,將是一個不錯的解決方案;第三種方式是找到獨立的J2EE API實現,而後把它們跟Tomcat結合起來使用。雖然整合會帶來相關的問題,可是這種方式是最爲有效的。

 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

Tomcat與Web服務器

 

  1.3.2 Tomcat與Web服務器

  Tomcat是提供一個支持Servlet和JSP運行的容器。Servlet和JSP能根據實時須要,產生動態網頁內容。而對於Web服務器來講, Apache僅僅支持靜態網頁,對於支持動態網頁就會顯得無能爲力;Tomcat則既能爲動態網頁服務,同時也能爲靜態網頁提供支持。儘管它沒有一般的Web服務器快、功能也不如Web服務器豐富,可是Tomcat逐漸爲支持靜態內容不斷擴充。大多數的Web服務器都是用底層語言編寫如C,利用了相應平臺的特徵,所以用純Java編寫的Tomcat執行速度不可能與它們相提並論。

  通常來講,大的站點都是將Tomcat與Apache的結合,Apache負責接受全部來自客戶端的HTTP請求,而後將Servlets和JSP的請求轉發給Tomcat來處理。Tomcat完成處理後,將響應傳回給Apache,最後Apache將響應返回給客戶端。

 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

Tomcat 6新特徵

 

  1.3.3 Tomcat 6新特徵

  Tomcat 6有着許多的新特徵,例如支持Java 5的泛型(Generic)。相對於Tomcat 5來講,Tomcat 6支持最新的JSP 2.1規範(JSR 245)和Java Servlet 2.5規範(JSR 154)。除了支持JSP2.1外,Tomcat 6徹底支持統一表達式語言(Unified EL)2.1.同時,Tomcat 6也是最早支持Java Server Faces 1.2規範的Web服務器。此外,Tomcat 6優化了內存使用,提高了IO能力,重構了集羣。

 
 
 
 

第 1 章:認識Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

小結

 

  1.4 小結

  本章簡要地回顧了Java Web的歷史、技術發展情況,介紹了動態Web頁面的各類類型。對於不一樣規模的Web系統來講,有多個開發框架可供選擇:直接使用JSP、JSP+JavaBeans+Servlet、MVC模型等開發方式。

  Tomcat 6做爲Tomcat目前的最新版本,支持最新的Servlet 2.5和JSP 2.1規範。Tomcat因爲僅僅只提供了Servlet/Jsp支持,所以它不能稱爲應用服務器;Tomcat既能提供靜態網頁支持,也能爲動態網頁服務,可是處理靜態頁面的效率沒有其餘的Web服務器快、功能完善。所以一般的解決方案是將Tomcat與其餘J2EE應用服務器或其餘的Web服務器結合起來使用。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月11日

 

安裝JDK

 

  第2章 安裝Tomcat

  【本章導讀】

  在本章中,讀者將學會如何在不一樣操做系統上進行Tomcat的安裝,以及Tomcat源碼安裝。同時,經過本章的學習,讀者將能掌握Tomcat的安裝目錄結構,以及Web應用程序的目錄結構。

  本章主要內容有:如何在Windows和Linux中安裝Tomcat,如何安裝JDK,Tomcat的安裝目錄結構,以及Tomcat安裝過程出現的問題和解決的辦法。

  2.1 安裝JDK

  Tomcat跟其餘基於Java的應用程序同樣,都須要Java虛擬機(JVM)的支持。Sun公司發佈了免費的、針對Windows、Linux和Solaris的不一樣JVM版本。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

在Windows上安裝JDK

 

  2.1.1 在Windows上安裝JDK

  從Sun公司的網站(http://java.sun.com/javase/downloads/index.jsp)上下載最新的版本Tomcat 6.Tomcat 6雖然須要運行在JSE5.0或更高版本之上,可是它僅須要Java運行環境就可,再也不像之前的版本須要徹底的Java開發包。目前JDK的最新版本爲JDK 6,所以下載最新的JDK 6 Update3就能夠了。JDK 6 Update 3包含了Java運行環境和命令行開發工具。如圖2-1所示。

圖2-1  SunJDK下載頁面

  【例2-1】在Windows上安裝JDK

  在Windows上Java安裝包是一個標準的Windows安裝包,操做簡單方便。雙擊jdk-6u3-windows-i586-p.exe,出現對話框,如圖2-2所示。

  選擇【接受(A)】按鈕,就會出現自定義安裝對話框,如圖2-3所示。

圖2-2 JDK安裝許可證界面           圖2-3 JDK自定義安裝界面

  選擇Java安裝的目錄,本書將Java安裝目錄改成:C:\JDK1.6.修改完後,單擊【下一步】按鈕,出現安裝進度條,進入安裝過程,安裝完後會提示JDK安裝完畢。而後出現JRE自定義安裝對話框,如圖2-4所示。

  一樣更改安裝目錄爲c:\JRE1.6,固然用戶能夠根據本身的須要更改安裝目錄。單擊【下一步】按鈕,出現安裝進度條,進入安裝過程,安裝完後會提示JRE安裝完畢。如圖2-5所示。

圖2-4  JRE自定義安裝           圖2-5  JRE安裝完成

  此時Java安裝完畢,下一步設置環境變量。選擇Windows開始菜單欄上"開始→設置→控制面板",而後選擇"系統"選項。如圖2-6所示。

  選擇"高級"標籤,單擊【環境變量】按鈕。這時出現如圖2-7所示。

圖2-6  系統屬性             圖2-7  環境變量

  單擊系統變量【新建】按鈕,輸入JAVA_HOME做爲變量名,而後輸入Java剛剛安裝的目錄路徑。如圖2-8所示。

  而後修改%PATH%變量,增長%JAVA_HOME%\bin路徑。增長該路徑,是爲了使得Java可以在命令行中能夠執行。如圖2-9所示。

圖2-8  添加JAVA_HOME新的環境變量       圖2-9  修改PATH環境變量

  驗證變量是否修改爲功,能夠打開命令行,輸入:

  > java –version

  應該能夠看到結果,如圖2-10所示。

圖2-10 Java版本顯示結果

  至此,在Windows上Java安裝完成。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

在Linux上安裝JDK

 

  2.1.2  在Linux上安裝JDK

  從Sun網站下載合適的Linux版本,如圖2-11所示。

圖2-11 Sun下載Linux版本頁面

  Sun提供Linux平臺上JDK的兩個版本Linux RPM in self-extracting file和Linux self-extracting file.這兩個版本的區別在於:前者把RPM安裝包封裝在壓縮包的二進制格式,適合低級用戶安裝;後者則適合高級用戶,至關於一個"綠色"的zip版本JDK,沒有安裝程序,安裝完後可能須要作一些連接。

  【例2-2】在Linux上安裝JDK

  使用self-extracting binary安裝Java,首先必須設置它的執行權限,在命令行中輸入以下命令:

  # chmod +x jdk-6u3-linux-i586.bin

  【提示】

  用self-extracting binary在Linux上安裝Java時,沒必要設置成Root權限,由於該二進制包不會覆蓋任何系統文件。

  而後改變目錄到須要安裝的目錄下(本書安裝目錄是/usr/java/jdk1.6),執行二進制文件,輸入以下命令:

  # ./ jdk-6u3-linux-i586.bin

  以後會出現licence對話框,單擊【agree】按鈕,開始Java安裝。跟Windows安裝同樣,必須設置$JAVA_HOME環境變量,指明JDK的安裝目錄。一種是修改用戶所對應的~/.bashrc文件,在該文件中增長:

  JAVA_HOME=/usr/java/jdk1.6/

  export CLASSPATH=.

  export PATH = $JAVA_HOME/bin:$PATH

  另一種是設置Linux的全局環境變量(這個須要Root權限),在/etc/profile文件增長以下幾行:

  JAVA_HOME=/usr/java/jdk1.6/

  export JAVA_HOME

  PATH=$JAVA_HOME/bin:$PATH

  CLASSPATH=.:$JAVA_HOME/lin/tools.jar:$JAVA_HOME/lib/dt.jar

  export PATH JAVA_HOME CLASSPATH

  而後保存文件,註銷當前用戶。從新登陸後,在控制檯下輸入java –version,若是出現版本信息,代表安裝成功。

  使用RPM包安裝Java.首先必須肯定是Root用戶,而後在命令行中輸入以下命令:

  # chmod a+x jdk-6u3-linux-i586-rpm.bin

  # ./ jdk-6u3-linux-i586-rpm.bin

  # rpm –iv jdk-6u3-linux-i586-rpm.bin

  以後,按照以前所述的修改系統環境變量,測試安裝是否成功。

  2.2 安裝Tomcat

  前面講述了JDK的安裝,如今能夠開始Tomcat的安裝了。本節先講述Windows下的Tomcat安裝,而後是Linux下的Tomcat安裝。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

在Windows上安裝Tomcat

 

  2.2.1 在Windows上安裝Tomcat

  從Apache網站上(http://Tomcat.apache.org/download-60.cgi)下載最新的Tomcat版本,目前Apache發佈的最新Tomcat版本是6.014.如圖2-12所示。

圖2-12  Apache網站Tomcat下載頁面

  在"Binary Distribution"欄的Core子欄下提供了三種Tomcat 6的方式:zip、tar.gz、Windows Service Installer.zip方式下載後獲得的是一個zip文件,無須安裝,解壓縮後便可使用。tar.gz方式下載後獲得一個tar.gz文件,是在GNU操做系統(一種相似於Unix的操做系統,其源碼是能夠被複制、修改和從新發布的)中用tar命令打包而成的,所以必須在與GNU相兼容的操做系統中解包,Solaris和Mac OS X操做系統中不能使用。"Windows Service Installer"方式下載後獲得的是一個exe文件(如圖2-12所示的版本爲apache-Tomcat-6.0.14.exe)。Tomcat 6是在Windows操做系統下的安裝程序,這種方式安裝的Tomcat 6能夠經過Windows的服務來控制啓動、中止。

  【例2-3】在Windows上安裝Tomcat

  雙擊下載apache-Tomcat-6.0.14.exe文件,出現安裝Licence Agreement對話框,如圖2-13所示。

圖2-13  Tomcat安裝頁面License對話框

  單擊【I Agree】按鈕,進入到Choose Component對話框,如圖2-14所示。

圖2-14  Tomcat自定義安裝對話框

  通常默認Normal便可,單擊【Next】按鈕進入到選擇安裝路徑選項,如圖2-15所示。

  修改安裝的目錄,本書Tomcat的安裝目錄爲C:\Tomcat 6.單擊選擇【Next】按鈕,進入到配置對話框,如圖2-16所示。

圖2-15  Tomcat安裝目錄修改     圖2-16  Tomcat安裝配置對話框

  能夠修改Connector端口和管理員用戶名、密碼。本書使用的默認值爲8080端口,管理員用戶名是admin,密碼爲空。單擊【Next】按鈕,進入JVM路徑選擇對話框,如圖2-17所示。

圖2-17  Tomcat安裝選擇JRE安裝目錄

  選擇JDK安裝的路徑後,單擊【Install】按鈕,開始Tomcat安裝,完成後會提示安裝完成。

  接下來設置環境變量。同JDK設置環境變量同樣,在系統變量中增長一項爲%CATALINA_HOME%,它代表Tomcat在本機上安裝的路徑。修改後如圖2-18所示。

圖2-18  Tomcat環境變量設置

  爲了測試Tomcat安裝是否成功,必須運行Tomcat服務器,選擇"開始→Apache Tomcat 6.0→Monitor Tomcat",出現Tomat控制檯,如圖2-19所示。

圖2-19  Tomcat控制檯對話框

  單擊【Start】按鈕,開始Tomcat服務。成功啓動後,控制檯服務狀態會變成Started,如圖2-20所示。

圖2-20  Tomcat啓動成功後對話框

  Tomcat啓動後,打開瀏覽器,輸入http://localhost:8080,若是可以看到Tomcat的默認頁面(如圖2-21所示),則代表安裝成功。

2-21 Tomcat默認頁面

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

在Linux或Mac OS上安裝Tomcat

 

  2.2.2 在Linux或Mac OS上安裝Tomcat

  在Linux或者Mac系統上安裝Tomcat也是很是簡便的。基本流程爲:

  從Apache網站上(http://Tomcat.apache.org/download-60.cgi)下載Tomcat的zip格式或者gzip tar格式文件。

  解壓文件到硬盤,例如/usr/java/Tomcat 6.

  輸出$CATALINA_HOME變量,使用下列Shell命令

  # CATALINA_HOME=/usr/java/Tomcat 6

  # export CATALINA_HOME

  相似與JDK的安裝,能夠把這些命令加到~/.bashrc或者/etc/profiles文件裏面。

  最後使用上面Shell命令啓動Tomcat.

  打開瀏覽器,輸入http://localhost:8080/,查看Tomcat是否安裝成功。也能夠選擇Tomcat中左邊菜單欄的JSP例子,運行其中一個,確保Tomcat運行沒有任何錯誤信息。

  至此,Tomcat在Linux或者MAC系統上安裝完畢。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

Tomcat端口配置

 

  2.2.3  Tomcat端口配置

  Tomcat通常用8080端口做爲默認端口。若是用戶須要修改Tomcat的端口配置,打開%CATALINA_HOME%\conf目錄下的server.xml文件,找到下面文本:

  <!-- A "Connector" represents an endpoint by which requests are received

  and responses are returned. Documentation at :

  Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)

  Java AJP  Connector: /docs/config/ajp.html

  APR (HTTP/AJP) Connector: /docs/apr.html

  Define a non-SSL HTTP/1.1 Connector on port 8080

  -->

  <Connector port="8080" protocol="HTTP/1.1"

  connectionTimeout="20000"

  redirectPort="8443" />

  能夠看到端口一項寫的是8080,修改這個設置爲用戶定製的端口。好比將端口修改成port="80",那麼從新啓動Tomcat後,打開瀏覽器,只需輸入http://localhost就可看到Tomcat的默認頁面,再也不像之前後面還需加上冒號和端口號。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

安裝Ant

 

  2.2.4  安裝Ant

  Ant工具是Apache的一個開源項目,它是一個優秀的軟件工程管理工具。Ant相似於Make工具,但克服了傳統的Make工具的缺點。傳統的Make每每只能在某一平臺上使用,Ant自己用Java語言實現,而且使用XML格式的配置文件來構建成,能夠很方便地實現多平臺編譯,很是適合管理大型工程。

  從Ant官方網站(http://ant.apache.org/bindownload.cgi)下載最新的二進制版本。目前最新的版本爲1.7.0,如圖2-22所示。

圖2-22  Ant下載頁面

  【例2-4】安裝Ant

  將下載的apache-ant-1.7.0-bin.zip文件解壓,設置以下環境變量:

  ANT_HOME ant的安裝目錄(本書默認安裝目錄爲C:\ant1.7)如圖2-23所示。

圖2-23  Ant安裝目錄變量設置

  PATH把%ANT_HOME%/bin目錄添加到PATH變量中,便於命令行能直接運行Ant.如圖2-24所示。

圖2-24  Path變量設置

  測試Ant是否安裝成功,打開命令行,輸入ant –version,若是能看到Ant信息,如圖2-25所示,則代表Ant安裝成功。

圖2-25 Ant版本信息

  至此,Ant安裝完畢。下一節講述如何使用Ant來安裝Tomcat。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

安裝Tomcat源碼

 

  2.2.5 安裝Tomcat源碼

  從Apache網站上(http://Tomcat.apache.org/download-60.cgi)下載最新的Tomcat源碼版本,目前最新的版本爲apache-Tomcat-6.0.14-src.而後執行下面操做:

  進入到Tomcat解壓目錄(本書默認爲c:\ apache-Tomcat-6.0.14-src)。

  肯定JDK和ANT已經安裝。

  在源碼目錄下新建一個build.properties文件,輸入如下代碼:

  # ----- Proxy setup -----

  # Uncomment if using a proxy server

  #proxy.host=proxy.domain

  #proxy.port=8080

  #proxy.use=on

  # ----- Default Base Path for Dependent Packages -----

  # Replace this path with the directory path where dependencies binaries

  # should be downloaded

  base.path=/usr/share/java

  在命令行輸入命令Ant.

  構建的過程大概會持續幾分鐘,最後構建好的項目存放在${Tomcat.source}\output\build目錄下。固然也能夠在用戶指定的目錄下新建目錄,將編譯好的Tomcat二進制代碼移植過來,環境變量的設置同上。

  若是用戶想更新源碼,並從新編譯,需輸入如下命令:

  > ant checkout

  > ant build

  至此,Tomcat源碼安裝完畢。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

Tomcat安裝目錄

 

  2.3 Tomcat安裝目錄

  前面介紹了Tomcat在不一樣平臺上的安裝流程,包括使用二進制版本和源碼版本。如今介紹一下Tomcat的安裝目錄。在本節中,能夠了解到Tomcat的主要配置文件,以及目錄結構。Tomcat安裝目錄結構如圖2-26所示。

圖2-26  Tomcat安裝目錄結構

  1.Bin目錄

  Bin目錄存放着Windows平臺,以及Linux平臺上啓動和關閉Tomcat的腳本文件。Tomcat的早期版本,有多個不一樣的啓動和關閉腳本。Tomcat 6將這些統一到下列執行腳本中:

  Tomcat 6 Windows可執行文件

  若是Tomcat安裝做爲NT服務的話,能夠使用Tomcat 6.exe可執行文件啓動服務器。

  Tomcat 6w Windows可執行文件

  若是Tomcat安裝做爲服務的話,能夠使用Tomcat 6w.exe可執行文件來啓動服務器。它將調用Tomcat的控制檯,能夠手動啓動或關閉Tomcat服務。在上節Tomcat安裝中有詳細介紹。

  2.Conf目錄

  Conf目錄存放在Tomcat服務器的各類配置文件,其中包括:

  Catalina.policy:爲Catalina運行在安全管理的上下文中,設置必要的權限。

  Catalina.properties:設置不一樣類加載器目錄的位置。默認的是Common目錄和它的子目錄。設置的目的是爲了區分哪些類能夠被Tomcat使用,哪些類能夠被Web應用使用。

  Context.xml:設置默認的Web應用上下文。

  Logging.properties:管理默認的日誌等級。

  Server.xml:是Tomcat的最爲主要的配置文件。能夠配置任何元素,包括日誌、過濾器、端口、主機等,詳細的討論在第三章。

  Tomcat-user.xml:默認的用戶數據庫,用於容器認證管理。

  Web.xml:默認的Web應用程序部署描述符。

  3.Logs目錄

  ogs目錄是Tomcat的日誌文件默認的存放位置。

  4.Lib目錄

  ib目錄存放Tomcat服務器所需的各類JAR文件。

  5.Temp目錄

  Temp目錄存放Tomcat使用的臨時文件。

  6.Webapps目錄

  Webapps目錄是當發佈Web應用時,在默認狀況下把Web應用文件放於此目錄下。

  7.Work目錄

  Work目錄是Tomcat把由JSP生成的Servlet的文件存放的位置。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

Web應用目錄結構介紹

 

  2.4  Web應用目錄結構介紹

  Web應用程序是一些Web資源的集合,包括JSP頁面、HTML頁面、Servlets和配置文件。它們按照Servlet規範中所描述的那樣,分層次地組織起來(表2-1)。它們能夠經過兩種途徑構建Web應用程序:一是打包,另一個是不打包。打包的被稱爲Web檔案(War)文件,未打包的是存放文件系統的目錄結構。

  未打包的格式對於Web應用開發人員來講很是便利,能夠容許他們在開發和調試期中,隨時、方便地更新單獨的文件。而後在部署環境中,提供一個單獨的文件自動部署,可能更爲便利。這是由於減小了部署過程當中放置文件和設置系統變量的步驟。

  表2-1  Web應用程序描述

 

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

Web應用上下文

 

  2.4.1  Web應用上下文

  從上一章Tomcat的體系結構介紹能夠知道,上下文組件表示的每一個Web的應用。所以每一個Web應用對應於一個上下文組件,它能夠爲每一個Web應用分配一個上下文路徑。默認的上下文組件是Root,能夠經過輸入http://localhost:8080地址,訪問到默認的應用程序。用戶經過向服務器請求一個Web應用的上下文,能夠訪問到該Web應用程序。例如,用戶能夠輸入URL:http://localhost:8080/manager來訪問Tomcat的Web管理應用程序。

  若是把Web應用程序放置在Webapps目錄下,那麼訪問該Web應用的URL爲:http://localhost:8080/xxx(xxx爲Web應用目錄名稱)。例如Tomcat的Webapps中默認自帶了jsp例子,它放置在Webapps的目錄名稱爲example,這樣經過輸入http://localhost:8080/examples/jsp/來訪問該應用程序,如圖2-27所示。

圖2-27 JSP例子

  若是在ROOT目錄下放置的子目錄與Web應用程序的目錄名一致,則會出現混淆,例如:

  webapps/

  ROOT/

  shop/

  index.html

  shop/

  index.html

  從上面的目錄結構中能夠看出,在ROOT目錄裏面放置了跟Shop同名的目錄和文件,經過http://localhost:8080/shop可能映射到ROOT目錄和Webapps下Shop目錄裏的文件,這樣就形成了混淆。固然Tomcat的處理機制是它會忽視ROOT目錄裏與Web應用重名的文件,直接顯示來自Shop應用程序裏面的文件。若是開發人員的出發點是想用戶訪問Root目錄裏的Web應用程序,那麼就必須特別注意了。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

WEB-INF目錄

 

  2.4.2  WEB-INF目錄

  Servlet規範裏面陳述了Web應用中公用和私用區域的劃分。存放私用資源的目錄稱爲WEB-INF,它處於Web應用的根目錄下。在WEB-INF目錄中能夠存放全部的Web應用的配置文件、應用類文件等。用戶要訪問的話,只能經過間接的方式訪問。例如經過Servlet映射。

  WEB-INF包含許多特別的子目錄,例如標籤文件和標籤庫描述符(TLDs)。下面是一個Web應用的例子:

  WebAppX/

  WEB-INF/

  classes/

  lib/

  tags/

  WEB-INF詳細配置見第4章。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

META-INF目錄

 

  2.4.3 META-INF目錄

  META-INF放置在Web應用程序的根目錄下,做爲WAR文件部署。在META-INF目錄下存放TLDs和標籤文件,經過URI來訪問。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

常見問題與解決辦法

 

  2.5 常見問題與解決辦法

  1.Tomcat窗口消失

  有時,啓動Tomcat後,Tomcat窗口顯示了一下,而後就會馬上消失。這個問題主要是因爲某些錯誤形成了Tomcat的崩潰。錯誤信息自己是能夠顯示的,可是因爲窗口消失得太快,以致於錯誤信息不能被用戶看到。可按如下方式解決。

  在Linux輸入:

  # $CATALINA_HOME/bin/catalina.sh run

  或者在Windows裏面輸入:

  > %CATALINA_HOME/bin/catalina run

  輸入上述命令後,將使得Tomcat正常啓動,任何錯誤信息都將被顯示。錯誤信息也能夠經過stdout.log文件看到。

  2.端口被佔用

  可能會出現選定的端口被佔用的狀況,相似於下面的錯誤信息:

  LifecycleException: Protocol handler initialization failed:

  Java.net.BindException: Address already in use: JVM_Bind:8080

  Tomcat默認使用8080端口,在Windows或Linux中,能夠經過輸入netstat命令來查看誰使用了那個端口,能夠看到誰跟Tomcat引發了衝突。解決該問題的方式有兩種:一是關閉佔用Tomcat端口的進程,一個是改變Tomcat的默認端口配置。

  3.類版本錯誤

  Tomcat 6須要Java SE 5或後期更爲高級的版本,若是使用了早期Tomcat版本,在Tomcat啓動時,將會出現下列錯誤:

  Exception in thread "main"

  java.lang.UnsupportedClassVersionError:

  org/apache/catalina/startup/Bootstrap (Unsupported major.minor version 49.0)

  解決方法:檢查JAVA_HOME環境變量設置是否指向了Java SE 5的安裝目錄。

 
 
 
 

第 2 章:安裝Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

小結

 

  2.6 小結

  本章講述了Java、Tomcat和Ant在不一樣平臺上、不一樣形式的安裝,包括Binary和源碼。同時,本章還重點講述了Tomcat安裝目錄結構,以及Web應用目錄結構。讀者經過本章學習,須要掌握如下幾點:

  在大多數狀況下,Tomcat的安裝是很是簡單、直接的過程,主要是由於Tomcat的二進制安裝文件能夠在通用的平臺下運行。

  Tomcat的安裝目錄結構主要包括7個重要的目錄。

  安裝過程當中可能出現的問題,例如端口占用、類版本錯誤等等,讀者須要經過實際安裝,來逐步掌握處理這些問題的方法。

 
 
 
 

第 3 章:配置Tomcat做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月12日

 

Tomcat 6配置元素

 

  第3章 配置Tomcat

  【本章導讀】

  在本章中,經過查看CATALINA_HOME/conf目錄下的文件,主要介紹Tomcat的基本配置。在啓動時,Tomcat默認安裝使用這些文件配置服務器,它們對於用戶瞭解默認的配置將作些什麼和用戶可以修改什麼有相當重要的做用。

  本章還介紹了主要的配置文件--server.xml和Tomcat的其餘配置文件。在第一章中,曾經看到Tomcat使用基於組件、層次似的結構。該模型在很大程度上簡化了複雜的服務器配置。最後還講述了Tomcat的認證配置和Web應用配置,用戶能夠根據本身的須要加以修改。

  3.1  Tomcat 6配置元素

  Tomcat 6服務器啓動後,讀取一系列的XML配置文件。爲了配置Tomcat 6,用戶必須修改這些XML文件。Tomcat的配置文件位於CATALINA_HOME/conf目錄下,它包含如下配置文件:

表3-1 Tomcat基本配置元素

 

  Tomcat 6在指定的配置目錄中搜尋這些配置文件。配置目錄由環境變量指定。Tomcat 6首先檢查$CATALINA_BASE(%CATALINA_BASE%在Windows)環境變量,若是這個環境變量已經定義了,則Tomcat 6搜尋該環境變量指定目錄下的conf子目錄。對於在同一臺機器上配置多個併發的Tomcat也很是直接和方便,分別爲每一個Tomcat實例設置不一樣的$CATALINA_BASE目錄便可,也能夠使用不一樣的shell腳本和batch文件來設置$CATALINA_BASE變量和啓動各自實例。

  若是$CATALINA_BASE沒有被指定,則Tomcat使用$CATALINA_HOME(%CATALINA_HOME%在Windows)環境變量來代替。$CATALINA_HOME環境變量指定了Tomcat 6的安裝目錄。Tomcat 6會在$CATALINA_HOME指定的conf子目錄中搜尋配置文件。在後續的章節中,會重點講述配置文件的基本配置。

 

 

  第16章 集成Tomcat與Eclipse

  【本章導讀】

  Eclipse是一個開放源代碼的項目,是很是優秀的開發Java程序的集成開發環境(IDE)。Eclipse能夠經過開發新的插件來擴展示有的插件功能,並且有着統一的外觀、操做和系統資源管理界面。好比:在現有Eclipse的Java開發環境中加入Tomcat服務器插件。Tomcat提供了JSP/Servlet容器,是目前應用最爲普遍的服務器之一。把Tomcat與Eclipse集成,能夠很方便地在Eclipse的IDE環境中進行Tomcat Web應用項目的開發和調試。爲快捷方便地開發Tomcat Web應用項目提供了具備實用意義的模式。

  本章主要內容包括Eclipse的簡介、Eclipse的安裝和配置、Tomcat與Eclipse的集成、Tomcat與Eclipse集成開發應用。

  16.1  Eclipse簡介

  Eclipse是一個開放源代碼的項目。Eclipse 是替代IBM Visual Age for Java(簡稱IVJ)的下一代IDE開發環境,但它將來的目標不只僅是成爲專門開發Java程序的IDE環境。根據Eclipse的體系結構,經過開發插件,它能擴展到任何語言的開發,甚至能成爲圖片繪製的工具。下面對Eclipse的各類特性做簡單介紹:

  Eclipse開發環境

  Eclipse開發環境被稱爲Workbench,它主要由三個部分組成:視圖(Perspective),編輯窗口(Editor)和觀察窗口(View)。編輯窗口包含全部文件的顯示和編輯,用指定的編輯器能夠打開和編輯相應的文件。觀察窗口主要是配合編輯窗口,並提供多種相關信息和瀏覽方式。一個視圖包括一個或多個編輯窗口和觀察窗口。視圖是Eclipse中最靈活的部分,能夠自定義每一個視圖中所包含的觀察窗口種類,也能夠自定義一個新視圖。

  Eclipse版本管理

  Eclipse的版本管理分爲我的(或稱爲本地)版本管理和團隊版本管理兩種。Eclipse提供了強大的我的版本管理機制,每一次被保存的更改均可以獲得恢復,並且能夠精確到每個方法的版本恢復。強大的我的版本管理功能爲程序員提供了更多的信心--只管編寫下去,任何不當心的錯誤均可以恢復。Eclipse默認爲版本管理工具CVS提供了接口,能夠很是方便的鏈接到CVS服務器上。經過CVS版本管理,Eclipse爲團隊開發提供了良好的環境。

  Eclipse插件擴展

  使用插件能夠豐富Eclipse的功能。能夠經過開發新的插件擴展示有插件的功能,並且有着統一的外觀、操做和系統資源管理界面,這也正是Eclipse的潛力所在。好比在現有的Java開發環境中加入Tomcat服務器插件。插件擴展使得Eclipse很是易於拓展,更重要的是Eclipse平臺提供了一個很是好的方式,使得各個插件能協同工做,以致新的特性能夠簡單而無縫的融入平臺。

  Eclipse體系結構

  Eclipse的體系結構,除了小巧的Eclipse平臺核心運行時以外,Eclipse平臺僅由工做臺(WorkBench)、工做空間(Workspace)、幫助(Help)和小組組件(Team Compenent)四部分構成,其餘的工具以插件的形式集成進框架以建立應用程序。

  Eclipse 多國語言包

  Eclipse的多國語言包中不只有Eclipse的中文翻譯,同時也包含了其餘幾種主要語言的翻譯。Eclipse可以自動根據Windows操做系統的語言環境來選擇使用語言包中的哪種語言,極具智能化的特色。

  Eclipse語言和平臺中立

  儘管Eclipse是以Java 語言編寫的,而且一般是做爲Java IDE來使用的,但它倒是語言中立的。Java開發是由一個插件組件來支持的,如上所述,能夠添加其餘的插件來支持其餘語言開發,例如:C/C++,Cobol和C#.Eclipse並不僅是一個Java IDE,同時它是一個可拓展的、開放的開發工具平臺。例如,它能夠做爲其餘語言的IDE。

 
 
 
 
 

第 16 章:集成Tomcat與Eclipse做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月13日

 

Eclipse的安裝和配置

 

  16.2  Eclipse的安裝和配置

  Eclipse的安裝和配置都很簡單,安裝前須要先下載Eclipse開發包。能夠從Eclipse的官方網站(http://www. eclipse.org)免費下載。目前Eclipse的最新版本是Eclipse-SDK-3.3.0,Eclipse版本不斷更新,請密切關注Eclipse的官方網站。通常Eclipse提供如下幾個下載版本:Release,Stable Build,Integration Build和Nightly Build,建議下載Release或Stable版本。此文所用的是Release版本的Eclipse 3.3.0。

 
 
 
 

第 16 章:集成Tomcat與Eclipse做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月13日

 

安裝Eclipse

 

  16.2.1  安裝Eclipse

  Eclipse自己是用Java語言編寫的,因此Eclipse須要運用在Java環境下。若是機器上尚未安裝Java運行環境(JRE),則須要先安裝JRE.最新的JDK能夠從Sun官方網站(http://www. sun.org)免費下載。同時Eclipse3.0以上的版本,須要JDK 1.4以上版本。

  【例16-1】安裝Eclipse

  Eclipse的安裝很是簡單,只須要將下載的軟件壓縮包直接解壓便可。假如解壓到C盤的根目錄下,進入C盤,就能夠看到解壓後的Eclipse目錄。打開Eclipse目錄,能夠看到如圖16-1所示的Eclipse文件或目錄。

圖16-1 Eclipse解壓後的目錄界面

  其中:

  /configuration:Eclipse配置文件的目錄

  /features:存在功能部件的目錄

  /plugins:存在插件的目錄

  /readme:Eclipse描述文件的目錄

  eclipse.exe:Eclipse啓動程序

  ……

  【提示】

  若是在機器裏有Eclipse的老版本,應先刪除老版本,不可用新版本解壓到老版本的目錄下直接覆蓋老版本。

 
 
 
 

第 16 章:集成Tomcat與Eclipse做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月13日

 

啓動Eclipse程序

 

  16.2.2  啓動Eclipse程序

  Eclipse安裝完成後,進入Eclipse目錄,雙擊"Eclipse.exe",運行程序。啓動後進入選擇工做空間界面,如圖16-2所示。

圖16-2 Eclipse選擇工做空間界面

  能夠使用默認的工做空間目錄,單擊【OK】按鈕,就能夠看到Eclipse的歡迎界面,如圖16-3所示。

圖16-3  Eclipse歡迎界面

  關閉Eclipse的歡迎界面,則看到了Eclipse的默認界面IDE(Java EE透視圖),如圖16-4所示。

圖16-4  Eclipse默認界面IDE(Java EE透視圖)

 
 
 
 

第 16 章:集成Tomcat與Eclipse做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月13日

 

Eclipse多國語言包

 

  16.2.3  Eclipse多國語言包

  以前安裝的Eclipse程序,IDE界面都是英文界面。若是想要顯示熟悉的中文界面,則能夠安裝Eclipse多國語言包來實現。Eclipse支持多國語言,可讓界面變成不一樣語言的界面。Eclipse多國語言包一樣能夠從Eclipse的官方網站(http://www. eclipse.org)免費下載,通常下載與當前安裝的Eclipse版本相對應的多國語言包。

  【例16-2】安裝Eclipse多國語言包

  Eclipse多國語言包的安裝與Eclipse的安裝同樣簡單,能夠按照如下步驟完成安裝:

  若是Eclipse正在運行使用,須要先關閉Eclipse應用。

  把Eclipse多國語言包解壓到本地某一個硬盤,假如D盤。解壓後,能夠看到2個文件夾features和plugins,如圖16-5所示。

圖16-5  Eclipse多國語言包解壓後目錄界面

  分別把features和plugins文件夾下的全部文件拷貝覆蓋到Eclipse安裝目錄對應的features和plugins文件夾下。

  從新運行Eclipse.exe程序,則能夠看到Eclipse的默認界面變成了中文界面,如圖16-6所示。

圖16-6 Eclipse中文默認界面

  【提示】

  若是從新運行Eclipse.exe程序後,Eclipse的默認界面沒有變成中文界。緣由多是Eclipse多國語言包版本太低或版本不一致所形成。須要檢查Eclipse多國語言包是不是對應的Eclipse版本,能夠下載更高版本的多國語言包,最好是對應版本的多國語言包。

 
 
 
 

第 16 章:集成Tomcat與Eclipse做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月13日

 

Eclipse和Tomcat的集成

 

  16.3  Eclipse和Tomcat的集成

  一般能夠經過Tomcat安裝目錄下bin文件夾裏的startup.bat來啓動Tomcat服務器及其控制檯的,但在實際項目開發的時候一般顯得有些麻煩。而在Eclipse中安裝Tomcat插件,能夠從Eclipse中直接啓動Tomcat服務器及其控制檯,免去了啓動和查看錯誤時來回切換的麻煩。Eclipse是一個很是優秀的Java開發環境,把Tomcat與Eclipse集成,能夠方便快捷地在EclipseIDE環境中進行Tomcat Web應用項目的開發和調試。

 
 
 
 

第 16 章:集成Tomcat與Eclipse做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月13日

 

Tomcat插件安裝和初始化配置

 

  16.3.1  Tomcat插件安裝和初始化配置

  Eclipse的Tomcat插件能夠從Sysdeo網站(http://www.sysdeo.com/eclipse/)或是(http://www.eclipsetotale.com/tomcatPlugin.html)免費下載。目前最新版本爲3.2.0.

  【例16-3】在Eclipse中安裝和初始化Tomcat插件

  Tomcat插件安裝

  下載了Eclipse的Tomcat插件後,把Tomcat插件解壓到本地硬盤,假如D盤。解壓後能夠在D盤目錄下看到com.sysdeo.eclipse.tomcat_3.2.0文件夾,把整個com.sysdeo.eclipse.tomcat_3.2.0文件夾拷貝到Eclipse主目錄下的plugins文件夾裏面便可。

  Tomcat插件初始化配置

  Eclipse的Tomcat插件安裝成功後,並非就立刻能夠在Eclipse中使用Tomcat插件。爲了可以在Eclipse中使用Tomcat插件,還須要在Eclipse中對Tomcat插件進行必定的初始化配置。Tomcat插件的初始化配置,能夠按照如下的步驟完成:

  從新啓動Eclipse。

  單擊菜單欄的"Window",在下拉菜單中選擇"Preferences".如圖16-7所示。

  在彈出的"Preferences"窗口中,選擇左邊目錄樹裏的"Tomcat"項目。正確選擇機器中所安裝的Tomcat版本,指定Tomcat home的安裝目錄,指定Tomcat的server.xml配置文件和配置文件的目錄。其配置以後的界面如圖16-8所示。

  展開"Tomcat",選擇下面的"JVM Setting",選擇JRE爲機器所安裝的JDK,即"jre 1.6.0",確認無誤後按【OK】關閉窗口便可。如圖16-9所示。

圖16-7 Eclipse "Window/ Preferences"菜單界面

圖16-8 Eclipse"Preferences"窗口下"Tomcat"項目配置後界面

圖16-9 Eclipse "Preferences"窗口下"JVM Setting"界面

  單擊菜單欄的"Window",在下拉菜單中選擇"Customize Perspective…".如圖16-10所示。

圖16-10 Eclipse"Window Customize Perspective…"菜單界面

  在彈出的"Customize Perspective"窗口中,選擇左邊的"Commands"標籤。在左邊的"Available commands groups"組中,下拉選框能夠看到Tomcat選項,在Tomcat選項中打上鉤選中,按【OK】關閉窗口。如圖16-11所示。

圖16-11 Eclipse 選擇Tomcat選項界面

  這時在IDE的工具欄中就看到Tomcat小貓圖標,同時在菜單欄中也能夠看到添加了"Tomcat"菜單。工具欄與"Tomcat"菜單中包含了"Start Tomcat","Stop Tomcat"和"Restart Tomcat".如圖16-12所示。

  到此,Tomcat插件初始化配置的工做都完成了。能夠從工具欄或是"Tomcat"菜單中啓動Tomcat,在控制檯Console顯示區就能夠看到Tomcat啓動信息(如圖16-13所示)。爲了測試配置是否成功,能夠打開瀏覽器,在地址欄鍵入"http://localhost:8080".若是能夠看到Tomcat的歡迎頁面則說明配置成功。

圖16-12 Eclipse中添加了Tomcat菜單的界面

圖16-13 Eclipse中Tomcat啓動信息界面

 
 
 
 

第 16 章:集成Tomcat與Eclipse做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月13日

 

Eclipse和Tomcat集成開發實例

 

  16.3.2  Eclipse和Tomcat集成開發實例

  Eclipse和Tomcat集成配置成功後,就能夠方便快捷的在Eclipse IDE環境裏開發、調試Tomcat項目。下面以一個簡單的例子來描述在Eclipse和Tomcat集成環境下開發調試Web應用的通常方法。開發一個Tomcat項目,通常須要先建立一個Tomcat工程,而後在已經建立的Tomcat工程裏進行開發應用,最後就是調試發佈。

  【例16-4】Eclipse和Tomcat集成開發實例

  新建一個Tomcat工程

  新建一個Tomcat工程,能夠按照下面的步驟來完成:

  單擊菜單欄的"File/New",在右邊菜單中選擇"Project…".如圖16-14所示。

圖16-14 "File/New/Project…"菜單界面

  在"New Project/Select a wizard"窗口中,選擇"Java/Tomcat Project"建立Tomcat工程,而後按【Next】進行下一步驟。如圖16-15所示。

圖16-15 選擇建立Tomcat工程界面

  在"New Tomcat Project/Java Project Settings"窗口中,須要填寫Tomcat工程的名稱。爲了便於理解,應該填寫一個可以體現項目內容的Tomcat工程名稱。這裏假如爲"TomcatProject".還有須要選擇工做目錄,能夠使用默認的工做目錄,也能夠另外選擇工做目錄,而後按【Next】進行下一步驟。如圖16-16所示。

  在"New Tomcat Project/ Tomcat Project Settings"窗口中,須要設置Tomcat Context的名稱,通常採用默認的Context Name.同時須要選擇是否自動更新server.xml.爲簡單起見,通常都選擇自動更新server.xml文件,這樣當服務配置改變的時候,server.xml文件也會跟着改變。在"是否自動更新server.xml"方框裏打勾選中,而後按【Finish】完成。如圖16-17所示。

  到此,一個Tomcat工程就建立完成了。在左邊的"Packa"觀察窗口裏,能夠看到已經建立好的Tomcat工程。其工程結構如圖16-18所示。

圖16-16 填寫Tomcat工程名稱和選擇工做目錄界面

圖16-17 Tomcat 設置Tomcat工程界面

圖16-18 Tomcat工程結構界面

  建立一個JSP文件

  單擊菜單欄的"File/New",在右邊菜單中選擇"Other".在彈出的"New/Select a wizard"窗口,選擇"Web/Jsp",而後按【Next】按鈕。在彈出的"New JavaServer Page/JavaServer Page"窗口,須要選擇JSP的建立目錄,這裏爲"/WEB-INF"目錄下。JSP的名稱爲index.jsp,而後按【Next】按鈕進行下一步。如圖16-19所示。

圖16-19 建立JSP界面

  在彈出的"New JavaServer Page/Select JSP Template"窗口,能夠選擇使用JSP模板,也能夠不選擇使用。爲了方便,通常選擇使用JSP模板,而後按【Finish】完成。如圖16-20所示。

圖16-20 選擇JSP模板界面

  下面要在index.jsp頁面顯示"Hello Tomcat!"和當前的時間。index.jsp的代碼以下所示:

  <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

  <title>Insert title here</title>

  </head>

  <body>

  Hello Tomcat!<p>

  <%java.util.Date d = new java.util.Date();%>

  Now Is:<%= d.toLocaleString()%>

  </body>

  </html>

  啓動Tomcat插件進行測試

  要啓動Tomcat 服務器,只需簡單的單擊工具條中的【Start Tomcat】按鈕,或是在主菜單中選擇Tomcat 菜單,而後再選擇"Start Tomcat"便可。

  當Tomcat服務器啓動的時候,在控制檯Console顯示區就能夠看到Tomcat服務器啓動信息。能夠經過查看Tomcat服務器啓動信息來檢查Tomcat服務器在啓動中的問題和結果。同時還能夠查看訪問Tomcat服務器的信息。

  當Tomcat服務器已經啓動以後,能夠打開系統的Web 瀏覽器,也能夠啓動Eclipse IDE裏自帶的Web 瀏覽器,在地址欄鍵入:"http://localhost:8080/TomcatProject".則能夠看到運行index.jsp的頁面。在Eclipse IDE的Web瀏覽器裏的運行頁面如圖16-21所示。

圖16-21 在Eclipse的Web瀏覽器裏的運行index.jsp頁面

 
 
 
 

第 16 章:集成Tomcat與Eclipse做者:鍾經偉賀細平周航軍等    來源:希賽網    2014年03月13日

 

小結

 

  16.4 小結

  本章主要介紹了Eclipse的特性,Eclipse IDE和中文包的安裝過程,Eclipse和Tomcat的集成步驟方法,以及在Eclipse和Tomcat的集成環境下進行Tomcat Web應用開發的通常步驟方法。

  Eclipse能夠經過加入Tomcat插件來擴展示有插件功能,並且有着統一的外觀、操做和系統資源管理界面。Eclipse是一個很是優秀的Java開發環境,把Tomcat與Eclipse集成,能夠方便快捷地在Eclipse IDE環境中進行Tomcat Web應用項目的開發和調試。Eclipse做爲開發調試用的IDE,Tomcat做爲Web應用服務器,爲方便快捷的開發Tomcat Web應用項目提供了具備實用意義的模式。

 
相關文章
相關標籤/搜索