Tomcat

 

時間:2016-11-6 23:29javascript

 

——軟件系統體系結構

一、常見的軟件系統體系結構
    B/S架構和C/S架構。
    B/S架構使用的是http協議,C/S架構使用的是TCP/IP協議。
    CS架構:
        *   C/S架構即客戶端/服務器(Client/Server),例如QQ。
        *   須要編寫服務器端程序,以及客戶端程序。
        *   缺點:軟件更新時須要同時更新客戶端和服務器兩端的程序,比較麻煩。
        *   優勢:安全性高,即客戶端與服務器是一一對應的,內部細節密封性較高,因此安全。
                       開發成本低,管理維護簡單,產品升級方便,對用戶的培訓費用低,用戶使用方便,出現故障的機率比較小


    B/S架構:
        *   B/S架構即瀏覽器/服務器(Browser/Server)。
        *   優勢:只須要編寫服務器端程序。
        *   缺點:安全性較差,客戶端不能隨意變化,受到瀏覽器的限制
                       開發成本低,管理維護簡單,產品升級方便,對用戶的培訓費用低,用戶使用方便,出現故障的機率比較小 

——Web資源

一、Web資源介紹

    靜態資源:HTML
    動態資源:JSP/Servlet
    除了JavaWeb還有其它Web程序,例如:ASP.net和PHP等。

二、靜態資源和動態資源的區別

    若是客戶端請求的是靜態網頁,那麼服務器會直接把靜態網頁的內容響應給客戶端。
    指Web頁面中供人們瀏覽數據是由程序產生的,不一樣時間點訪問Web頁面看到的內容不一樣,若是客戶端請求的是動態網頁,服務器須要先把動態網頁轉換成靜態網頁,而後再把轉換後的靜態網頁響應給客戶端。

三、訪問Web資源
    打開瀏覽器,輸入URL:
        協議名://域名:端口/路徑,例如: http://www.baidu.com:80/index.html

四、動態網頁技術的發展歷程
    當互聯網初現江湖時,當時主要是html(1993),因爲HTML只支持靜態的文字和圖片,不能與用戶進行交互,爲彌補這個不足之處,陸續出現瞭如下網頁技術。

(1)CGI(Common Gateway Interface)特色
        a:CGI技術是早期動態網頁使用最多的技術,發展的比較成熟,功能強大。
        b:效率比較低,編程比較困難。
        c:CGI能夠用不一樣的語言編寫(VB、Delphi、C/C++、Perl)經常使用的是C/C++和Perl語言。
        d:如今使用CGI作動態網頁比較少,可是仍是有,主要用於Linux/Unix操做系統中。

(2)ASP
        ASP是HTML+JavaScript+COM組件的形式,ASP功能的強大不在於能使用相關的腳本語言而是使用COM組件,COM組件的開發是比較困難的。
        ASP的優點:
            一、簡單易學
            二、安裝使用方便(Windows+IIS)
            三、效率比CGI高
        ASP的不足:
            一、功能擴展比較困難,由於ASP的功能擴展在於COM組件,而開發COM組件是比較困難的。
            二、安全性低,由於ASP是與Windows系統和IIS一塊兒工做的,因此WIndows和IIS的安全漏洞會對ASP形成影響。
            三、跨平臺性弱,只能用於Windows操做系統。
            四、實現企業級的功能困難,如集羣式服務器,負載均衡。(ASP通常不用於大型網站)

    (3)JSP
        JSP = HTML + Java + JSP + javascript
        JSP優點:
            一、一次編寫,處處運行。(基於Java)
            二、良好的跨平臺性。
            三、多種開發工具支持JSP。
            四、強大的可伸縮性(JSP + JavaBean的方式)。
        JSP的不足:
            一、JSP的產品複雜度高。(JSP入門比ASP難)
            二、JSP要求運行的機器配置要高,由於JSP是用class常駐內存的方式運行的,效率高,可是須要佔用更多的內存。
 
    (4)PHP
        PHP的優點:
            一、良好的跨平臺性,多種數據庫支持。
            二、效率比較高,具備良好的安全性。
            三、無償使用LAMP,成本低。
            四、開放的源代碼,全部的PHP源代碼均可以找到。
            五、入門快,PHP相對於其餘語言,編寫簡單,實用性強,更適合初學者。
            六、面向對象編程,在PHP4和PHP5中,面向對象方面都有了很大的改進,如今PHP徹底能夠用來開發大型商業程序。
        PHP的不足:
            一、安裝複雜(PHP的不少功能須要安裝相應的應用庫,如要更好地支持圖形就要安裝gd庫)
            二、靈活,對程序員的約數太少,PHP是解釋運行機制,因此不少問題在運行階段纔會發現。
 


——Web服務器

    Web服務器的做用是接收客戶端的請求,給客戶端作出響應。

    對於JavaWeb程序而言,須要有JSP/Servlet容器,JSP/Servlet容器的基本功能是能把動態轉換成靜態資源。

    首先應該明白,JSP或者Servlet自己的運行與普通客戶端程序是不相同的,客戶端程序是咱們直接調用的,而JSP或者Servlet的運行須要服務器,一般稱爲應用服務器,服務器負責建立JSP或者Servlet對象,而後調用JSP對象或者Servlet對象的相應方法。由誰完成JSP或者Servlet對象的建立、方法的調用的呢?由容器完成,或者稱爲JSP容器。容器是用來容納其它組件的,這些組件包括JSP或者Servlet,完成這些組件對象的建立、方法的調用以及對象的銷燬。容器如何知道建立哪一個JSP或者Servlet的對象的呢?對於JSP,是根據文件名字肯定的,對於Servlet,是經過web.xml中的配置肯定的。容器如何知道調用JSP或者Servlet的哪一個方法?對於JSP,JSP頁面會被轉換成Java類,而頁面中的內容會被轉換成Java類中的某個方法中的內容,而這個方法的名字是固定的,容器會調用這個方法。對於Servlet,用戶須要根據請求的類型編寫doGet或者doPost方法,容器會根據請求的方式是get仍是post分別調用doGet或者doPost。而事實上,Tomcat在大多數狀況下充當servlet的容器,也就是說:在寫完JSP代碼後進行第一次執行時,tomcat(servlet容器)先將JSP代碼翻譯成servlet類(java代碼),而後實例化該類,再調用該類的init,service,destory等進行生命週期服務。當客戶端再進行第二次訪問請求時,此時就沒有servlet容器的翻譯這一步了,由於以前翻譯的java代碼會一直保存,以便於後面的訪問再也不進行翻譯,可大大提升訪問效率。因此,JSP頁面在第一次被訪問時,其所花費的時間是最長的。
 

    JavaWeb服務器:
        Tomcat(Apache):目前應用最廣的開源JavaWeb服務器。
        JBoss(Redhat):支持JavaEE,應用比較廣。
            JBoss是全世界開發者共同努力的成果(開源),一個基於JavaEE的開放源代碼的應用服務器,由於JBoss代碼遵循LGPL許可,因此能夠在任何商業應用中無償使用它,而不用支付任何費用。2006年JBoss公司被Redhat公司收購。
        GlassFish(Oracle),Oracle開發的JavaWeb服務器,應用不是很廣。
        Resion(Caucho):支持JavaEE,應用愈來愈廣。
        WebLogic(Oracle):收費,支持JavaEE,適合大型項目。
            WebLogic是BEA公司的產品,是目前應用最普遍的Web服務器,支持JavaEE規範,而且不斷地完善以適應新的開發需求。
        WebSphere(IBM):收費,支持JavaEE,適合大型項目。

    JavaEE支持EJB(Enterprise JavaBean),而JavaWeb不支持EJB。
    Tomcat不支持JavaEE規範,可是支持JavaWeb規範,JavaEE和JavaWeb規範的區別就是使用的容器不一樣,JavaEE使用的是EJB容器,而JavaWeb使用的是SSH框架。
    EJB是重量級,SSH是輕量級。

    模擬Web服務器:
        public static void main(String[] args) throws Exception
        {
            ServerSocket ss = new ServerSocket(80);
 
            System.out.println("等待連接...");
            Socket s = ss.accept();
            System.out.println("鏈接成功");
            OutputStream os = s.getOutputStream();
            //返回一句話
            os.write("歡迎訪問".getBytes());
            os.close();
            s.close();
        }

——Tomcat

一、Tomcat概述
    Tomcat服務器由Apache提供,開源免費,由SUN公司和其餘公司參與Tomcat的開發,因此最新的JSP/Servlet規範老是能在Tomcat中體現出來。

    Tomcat7.0支持Servlet3.0,而Tomcat6.0只支持Servlet2.5.

二、安裝、啓動、配置Tomcat
    下載Tomcat能夠到: http://tomcat.apache.org下載。
    Tomcat分爲安裝版和解壓版:
        *   安裝版:一臺電腦上只能安裝一個Tomcat。
        *   解壓版:無需安裝,解壓便可使用。
        tar.gz文件是Linux操做系統下的安裝版本。
        exe文件是Windows操做系統下的安裝版本。
        zip文件是Windows操做系統下的壓縮版本。


三、安裝步驟:
    1)把解壓版Tomcat解壓到一個沒有中文,沒有空格的路徑中便可,路徑不要太深。
    2)配置JAVA_HOME環境變量
        內容指向JDK安裝路徑,例如:C:/java/jdk
        爲何要配置JAVA_HOME?
            由於Tomcat自己就是用Java編寫的程序。
    3)啓動Tomcat服務器
        tomcat/bin/startup.bat

四、常見Tomcat沒法啓動故障
    1)JAVA_HOME環境變量配置錯誤

    2)也能夠在startup.bat文件中設置JAVA_HOME環境變量。
        在首次使用JAVA_HOME前設置便可
            set JAVA_HOME=JDK路徑。

    3)端口占用問題
        若是已經佔用了8080端口,則沒法啓動tomcat服務器。
        可使用:netstat -anb 查看端口占用狀況。
        能夠在任務管理器中經過查看PID(進程標識符)來查看端口占用狀況。
        能夠主動改變tomcat的端口,到conf/server.xml文件中修改。
            <Connector connectionTimeout="20000" port="8080"

    4)Catalina_home環境變量的設置,用於指定啓動哪一個tomcat服務器。
 
    5)可以正常啓動,可是會導航到另一個頁面
        修改瀏覽器的加載項,把默認的導航禁用便可。

    6)在訪問tomcat的時候,必定要保證tomcat服務器是啓動狀態。 

五、啓動和關閉Tomcat
    在啓動Tomcat以前,必需要配置JAVA_HOME環境變量:
        *   JAVA_HOMT:必須先配置JAVA_HOME,由於Tomcat啓動須要使用JDK。
        *   CATALINA_HOME:若是是安裝版,那麼還須要配置這個變量,這個變量用來指定Tomcat的安裝路徑,例如:F:\Tomcat
        *   啓動:進入Tomcat\bin目錄,找到startup.bat文件,雙擊便可。
        *   關閉:進入Tomcat\bin目錄,找到shutdown.bat文件,雙擊便可。

    startup.bat會調用catalina.bat,而catalina.bat會調用setclasspath.bat,setclasspath.bat會使用JAVA_HOME環境變量,因此必須在啓動Tomcat以前正確配置JAVA_HOME。

    若是點擊startup.bat後窗口一閃而過,檢查JAVA_HOME環境變量配置是否正確。

六、訪問Tomcat主頁
     http://localhost:8080

七、配置端口號
    打開%CATALINA_HOME%\conf\server.xml文件:
         圖片

    修改port便可,http默認端口號爲80,也就是說,在URL中若是不給出端口號時就默認使用80端口。
    當把端口號修改成80後,在瀏覽器中只須要輸入: http://localhost就能夠訪問Tomcat的主頁了。

    端口號:0 ~ 65535

八、Tomcat目錄結構

     圖片

    (1)bin:
            該目錄下存放的是二進制可執行文件,若是是安裝版,那麼這個目錄下會有兩個exe文件:tomcat7.exe、tomcat7w.exe,前者是在控制檯下啓動Tomcat,後者是彈出窗口啓動Tomcat。若是是解壓版,那麼會有startup.bat和shutdown.bat文件,startup.bat用來啓動Tomcat服務,可是須要先配置JAVA_HOME環境變量才能成功啓動,shutdown.bat用來中止Tomcat。

    (2)conf:
            存放Tomcat服務器的各類配置文件,這是一個很是重要的目錄,這個目錄下有四個很是重要的文件:
                *   server.xml:
                        配置整個服務器信息,例如修改端口號,添加虛擬主機等。

                *   tomcat-users.xml:
                        存儲Tomcat用戶的文件,這裏保存的是Tomcat的用戶名及密碼,以及用戶的角色信息,能夠按照該文件中的註釋信息添加Tomcat用戶,而後就能夠在Tomcat主頁中進入Tomcat Manager頁面了。

                *   web.xml:
                        不熟描述文件,這個文件中註冊了不少mime類型,即文檔類型。這些mime類型是客戶端與服務器之間說明文檔類型的,若是用戶請求一個HTML網頁,那麼服務器還會告訴客戶端瀏覽器相應的文檔是text/html類型,這就是mime類型,客戶端瀏覽器經過這個mime類型就知道改如何處理它了,即在瀏覽器中顯示這個HTML文件,可是若是服務器響應的是一個exe文件,那麼瀏覽器就不可能顯示它,而是會彈出一個下載窗口。mime類型就是用來講明文檔的內容時什麼類型的。

                *   context.xml:
                        對全部應用的統一配置,一般不會去配置它。

        (3)lib:
                Tomcat的類庫,裏面是用到的jar包,若是須要添加Tomcat依賴的jar文件,能夠把它放到這個目錄中,固然也能夠把應用依賴的jar包放到這個目錄中,這個目錄中的jar包全部項目均可以共享。

        (4)logs:
                這個目錄中都是日誌文件,記錄了Tomcat啓動和關閉的信息,若是啓動Tomcat時有錯誤,那麼異常也會記錄在日誌文件中。

        (5)temp:
                存放Tomcat的臨時文件,這個目錄下的文件能夠在中止Tomcat以後刪除。

        (6)webapps:
                存放Web項目的目錄,其中每個文件夾都是一個項目,若是這個目錄下已經存在了目錄,那麼都是Tomcat自帶的項目,其中Root是一個特殊的項目,在地址欄中沒有給出項目目錄時,對應的就是Root項目。 http://localhost:8080/examples,進入示例項目,其中examples就是項目名,即文件夾的名字。(tomcat6.0以後才支持)

        (7)work:
                運行時生成的文件,最終經過webapps運行的生成的文件都會放在這裏。能夠把這個目錄下的文件都刪除,再次運行時會再次生成work目錄,當客戶端用戶訪問一個JSP文件時,Tomcat會經過JSP生成Java文件,而後再編譯Java文件生成class文件,生成的Java文件和class文件都會存放在這個目錄下。

        (8)LICENSE:
                許可證。

        (9)NOTICE:
                說明文件。

九、如何訪問一個web應用的某個文件:
     http://localhost:8080/webapps/helloworld.html
    統一資源定位器(URL):
         http://localhost:8080/webapps/helloworld.html
    URI:
        webapps/helloworld.html
    協議:
        http
    主機(域名)(IP地址):
        localhost(127.0.0.1)
    端口:
        8080
    Web應用(WebApplication):
        webapps
    資源文件:
        helloworld.html

    什麼是URI:
        統一資源標識符(Uniform Resource Identifier,或URI)是一個用於標識某一互聯網資源名稱的字符串。該種標識容許用戶對任何(包括本地和互聯網)的資源經過特定的協議進行交互操做。

    什麼是URL:
        統一資源定位符是對能夠從互聯網上獲得的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資源的地址。互聯網上的每一個文件都有一個惟一的URL,它包含的信息指出文件的位置以及瀏覽器應該怎麼處理它。

    URL和URI的區別:
        URL是一種具體的URI,它不只惟一標識資源,並且還提供了定位該資源的信息。
        URI是一種語義上的抽象概念,能夠是絕對的路徑,也能夠是相對的,而URL則必須提供足夠的信息來定位,因此,是絕對的路徑。

八、mime類型
 
    MIME(Multipurpose Internet Mail Extensions)多用途互聯網郵件擴展類型。是設定某種擴展名的文件用一種應用程序來打開的方式類型,當該擴展名文件被訪問的時候,瀏覽器會自動使用指定應用程序來打開。多用於指定一些客戶端自定義的文件名,以及一些媒體文件打開方式。
 
    它是一個互聯網標準,擴展了電子郵件標準,使其可以支持:
        非ASCII字符文本;非文本格式附件(二進制、聲音、圖像等);由多部分(multiple parts)組成的消息體;包含非ASCII字符的頭信息(Header information)。
        這個標準被定義在RFC 204五、RFC 204六、RFC 204七、RFC 204八、RFC 2049等RFC中。 MIME改善了由RFC 822轉變而來的RFC 2822,這些舊標準規定電子郵件標準並不容許在郵件消息中使用7位ASCII字符集之外的字符。正因如此,一些非英語字符消息和二進制文件,圖像,聲音等非文字消息本來都不能在電子郵件中傳輸(MIME能夠)。MIME規定了用於表示各類各樣的數據類型的符號化方法。 此外,在萬維網中使用的HTTP協議中也使用了MIME的框架,標準被擴展爲互聯網媒體類型。
 
    什麼是MIME類型:
        在把輸出結果傳送到瀏覽器上的時候,瀏覽器必須啓動適當的應用程序來處理這個輸出文檔。這能夠經過多種類型MIME(多功能網際郵件擴充協議)來完成。在HTTP中,MIME類型被定義在Content-Type header中。
 
    例如,你要傳送一個Microsoft Excel文件到客戶端,那麼這時的MIME類型就是「application/vnd.ms-excel」。在大多數實際狀況中,這個文件而後將傳送給Execl來處理(假設咱們設定Execl爲處理特殊MIME類型的應用程序)。在ASP中,設定MIME類型的方法是經過Response對象的ContentType屬性。
 
    最先的HTTP協議中,並無附加的數據類型信息,全部傳送的數據都被客戶程序解釋爲超文本標記語言HTML文檔,而爲了支持多媒體數據類型,HTTP協議中就使用了附加在文檔以前的MIME數據類型信息來標識數據類型。
 
    MIME意爲多目Internet郵件擴展,它設計的最初目的是爲了在發送電子郵件時附加多媒體數據,讓郵件客戶程序能根據其類型進行處理。然而當它被HTTP協議支持以後,它的意義就更爲顯著了。它使得HTTP傳輸的不只是普通的文本,而變得豐富多彩。
 
    每一個MIME類型由兩部分組成,前面是數據的大類別,例如聲音audio、圖象image等,後面定義具體的種類。
 
    常見的MIME類型
 
    超文本標記語言文本 .html,.html text/html 
    普通文本 .txt text/plain 
    RTF文本 .rtf application/rtf 
    GIF圖形 .gif image/gif 
    JPEG圖形 .ipeg,.jpg image/jpeg 
    au聲音文件 .au audio/basic 
    MIDI音樂文件 mid,.midi audio/midi,audio/x-midi 
    RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio 
    MPEG文件 .mpg,.mpeg video/mpeg 
    AVI文件 .avi video/x-msvideo 
    GZIP文件 .gz application/x-gzip 
    TAR文件 .tar application/x-tar 
 
    Internet中有一個專門組織IANA來確認標準的MIME類型,但Internet發展的太快,不少應用程序等不及IANA來確認他們使用的MIME類型爲標準類型。所以他們使用在類別中以x-開頭的方法標識這個類別尚未成爲標準,例如:x-gzip,x-tar等。事實上這些類型運用的很普遍,已經成爲了事實標準。只要客戶機和服務器共同認可這個MIME類型,即便它是不標準的類型也沒有關係,客戶程序就能根據MIME類型,採用具體的處理手段來處理數據。而Web服務器和瀏覽器(包括操做系統)中,缺省都設置了標準的和常見的MIME類型,只有對於不常見的 MIME類型,才須要同時設置服務器和客戶瀏覽器,以進行識別。
 
    因爲MIME類型與文檔的後綴相關,所以服務器使用文檔的後綴來區分不一樣文件的MIME類型,服務器中必須定義文檔後綴和MIME類型之間的對應關係。而客戶程序從服務器上接收數據的時候,它只是從服務器接受數據流,並不瞭解文檔的名字,所以服務器必須使用附加信息來告訴客戶程序數據的MIME類型。服務器在發送真正的數據以前,就要先發送標誌數據的MIME類型的信息,這個信息使用Content-type關鍵字進行定義,例如對於HTML文檔,服務器將首先發送如下兩行MIME標識信息,這個標識並非真正的數據文件的一部分。
 
    Content-type: text/html
 
    注意,第二行爲一個空行,這是必須的,使用這個空行的目的是將MIME信息與真正的數據內容分隔開。
 


——Web應用

    什麼是Web應用?
        Web應用是多個Web資源的集合,簡單地說,能夠把Web應用理解爲是硬盤上的一個目錄,這個目錄用於管理多個Web資源,例如news,blog。
        Web應用一般也稱爲Web應用程序或Web工程。

    一個Web應用由多個Web資源或其餘文件組成,包括html文件、css文件、js文件、動態web頁面、java程序、支持jar包、配置文件等。開發人員在開發Web應用時,應按照tomcat安裝路徑下的目錄結構存放這些文件,不然,在把Web應用交給Web服務器管理時,不只可能會使Web應用沒法訪問,還會致使Web服務器啓動時報錯。 

    靜態網站:
        *   在webapps目錄下建立一個目錄(命名不能包含中文和空格),這個目錄就是項目目錄。
        *   在項目目錄下建立一個HTML文件。

    動態網站:
        *   在webapps目錄下建立一個項目目錄。
        *   在項目目錄下建立以下內容:
            *   WEB-INF目錄
                *   在WEB-INF目錄下建立web.xml文件(web.xml文件中的內容能夠去其餘項目中去拷貝。=)
            *   建立靜態或動態頁面。

    範例:
        webapps
            | -- Hello
                | -- index.html
                | -- WEB-INF
                    | -- web.xml
                    | -- classes
                    | -- lib

        *   Hello
                應用目錄,Hello就是項目名稱。

        *   index.html
                應用資源,應用下能夠有多個資源,例如:HTML、JSP、CSS等,也能夠把資源放到文件夾中,例如:Hello\html\index.html,這是訪問URL爲:http:localhost:8080/Hello/html/index.html。

        *   WEB-INF:
                這個目錄名稱必須所有大寫,這個目錄下的文件是沒法經過瀏覽器直接訪問的,也就是說放到這個目錄下的文件是安全的。

        *   web.xml:
                應用程序的部署描述文件,能夠在該文件中對應用進行配置,例如配置應用的首頁:
                    <welcome-file-list>
                        <welcome-file>index.html</welcome-file>
                    </welcome-file-list>

        *   classes:
                存放class文件的目錄。

        *   lib:
                存放jar包的目錄。


——MyEclipse建立JavaWeb應用

一、配置Tomcat
    使用MyEclipse配置服務器後,就可使用MyEclipse來啓動和中止服務了,固然,首先須要安裝好Tomcat服務器才能配置。

    MyEclipse自帶了一個Tomcat,不建議使用,因此首先須要把MyEclipse自帶的Tomcat關閉,而後再配置咱們本身的Tomcat。

二、配置外部應用

    也能夠把應用放到Tomcat以外,這就是外部應用了,例如咱們把以前寫的Hello應用從webapps目錄中複製到C盤下,即C:/Hello,如今Hello這個Web應用已經不在Tomcat中了,這時咱們須要在Tomcat中配置外部應用的位置,配置的方式一共有兩種:
    (1)conf/server.xml:
            打開server.xml文件,找到<Host>元素,在其中添加<Context>元素,代碼以下:
                 圖片
                *   Context:上下文(目錄)
                *   path:webapps的名稱
                *   docBase:webapps的路徑(虛擬目錄的路徑,絕對路徑)
                        絕對路徑:從根目錄開始查找。
                        相對路徑,從文件當前所在目錄開始查找。
                *   瀏覽器訪問路徑: http://localhost:8080/Hello/index.html 
                *   reloadable
                    若是設置爲true,Tomcat服務器在運行時,會監視WEB-INF/classes和WEB-INF/lib目錄下類的改變,若是發現有類被更新,Tomcat服務器將自動重啓並從新加載Web應用程序。這個特性在應用程序的開發階段很是有用,可是它須要額外的運行時開銷,因此在產品發佈時不建議使用。
                    該屬性的默認值是false。
                *   unpackWAR
                    若是爲true,則Tomcat在運行Web應用程序前將自動展開全部壓縮的Web應用程序。
                    該屬性的默認值是true。
                    webapps打包:jar -cvf xxx.war * 
    (2)conf/catalina/localhost:
            在該目錄下建立Hello.html文件,在文件中編寫<Context>元素,代碼以下:
                 圖片
                *   文件名:指定當前應用的名稱。
                *   docBase:指定應用的物理位置。
                *   瀏覽器訪問路徑: http://localhost:8080/Hello/index.html

三、server.xml文件
    <Server>
        <servie>
            <Connector>
            <Engine>
                <Host>
                    <Context>

    *   <Server>
            根元素,表示整個服務器的配置信息。
    *   <Service>
            <Server>的子元素,在<Server>中只能有一個<Service>元素,它表示服務。
    *   <Connector>:
            <Service>的子元素,在<Service>中能夠有N個<Connector>元素,它表示鏈接。
    *   <Engine>:
            <Service>的子元素,在<Service>中只能有一個<Engine>元素,該元素表示引擎,它是<Service>組件的核心。
    *   <Host>:
            <Engine>的子元素,在<Engine>中能夠有N個<Host>元素,每一個<Host>元素表示一個虛擬主機,所謂虛擬主機就像是真的主機同樣,每一個主機都有本身的主機名和項目目錄。例如:<Host name="localhost" appBase="webapps">表示主機名爲localhost,這個主機的項目存放在webapps目錄中,訪問這個項目下的主機時,須要使用localhost主機名,項目都存放在webapps中。
    *   <Context>:
            <Host>元素的子元素,在<Host>元素中能夠有N個<COntext>元素,每一個<Context>元素表示一個應用,若是應用在<Host>的appBase指定的目錄下,那麼能夠不配置<Context>元素,若是是外部應用,那麼就必須配置<Context>,若是要爲應用指定資源,也須要配置<Context>元素。

    咱們能夠把<Server>看作是一個大酒店:
        <Server>:酒店的服務部門。
        <Connector>:服務員。
        <Engine>:後廚
        <Host>:後廚中的一個區,例如川菜區與魯菜區。
        <Context>:後廚中的一個廚師。

    用戶發出一個請求: http://localhost:8080/Hello/index.jsp,發現是HTTP/1.1協議,並且仍是8080端口,因此就交給了處理這一請求的「服務員(處理HTTP請求的<Connector>)」,「服務員」再把請求交給「後廚(<Engine>)」,由於請求是要一盤水煮魚,因此由「川菜區(<Host>)」負責,由於「王師傅(<Context>)」會作水煮魚,因此由他完成。
        *   <Connector>:關心請求中的http協議和端口號。
        *   <Host>:關心localhost,每個主機都對應一個項目目錄。
        *   <Context>:關心Hello,表示上下文,表示一個項目。

四、映射虛擬主機
    咱們的目標是,在瀏覽器中輸入: http://www.baidu.com就能夠訪問咱們的項目,爲了完成這一目標,咱們須要作三件事:
        *   修改端口號爲80
        *   在本機上能夠解析域名爲127.0.0.1,這須要修改C:\WINDOWS\system32\drivers\etc\hosts文件,添加對 http://www.baidu.com和127.0.0.1的綁定關係。
        *   在server.xml文件中添加一個<Host>主機。

             圖片

        *   name="www.baidu.com":指定虛擬主機名爲www.baidu.com
        *   appBase="G:\Host":指定當前虛擬主機的應用程序存放目錄爲G:\Host
        *   在Host目錄下建立名爲ROOT的應用,由於一個主機只能夠有一個名爲ROOT的應用,名爲ROOT的應用在瀏覽器中訪問能夠不給出應用名稱。


——web.xml文件

    一、web.xml文件爲web應用的配置文件,它必須放在web應用目錄、WEB-INF目錄下。

    二、web.xml文件用於對web應用下的web資源進行配置,例如將某個web資源設置爲網站首頁、將servlet程序映射到
        某個URL上地址等等。
    舉例:經過web.xml文件配置網站首頁
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>

    在一臺Web服務器中配置網站:
        咱們在實際訪問網站的過程當中,不可能使用( http://localhost:8080/webapps/資源名)的方式去訪問網站,而是使
        用( http://www.baidu.com)的方式去訪問網站,這個又是怎麼實現的呢?

    實現步驟以下:
        1)在C:\WINDOWS\system32\drivers\etc目錄下的hosts文件中添加新的主機名和對應IP地址。
        2)在tomcat的server.xml文件中添加主機名。
            <Host name="www.wangyanchao.com" appBase="d:\webapps" >
                <Context path="/" docBase="d:\webapps" />
            </Host>
        3)在d:\webapps\WEB-INF\目錄下的web.xml文件中吧hello設置爲首頁。
            若是想在地址欄中輸入地址的時候省略端口號,能夠把Tomcat的啓動端口設置爲80。
        4)重啓Tomcat服務器。

    瀏覽器訪問Web站點的原理:
        1)輸入 http://localhost:8080/webapps/hello.html。         2)解析主機域名:localhost。         3)到本機hosts文件查詢localhost對應的IP地址。         4)若是在hosts文件中查詢到localhost對應的IP地址,就去訪問IP地址對應的機器。         5)若是在hosts文件中沒有查詢到localhost對應的IP地址,就去查詢DNS地址。         6)若是查詢不到DNS地址,就報錯。         7)若是能查詢到DNS地址,就進行嘗試性鏈接服務器。         8)若是可以鏈接到服務器,就正式發送http請求。         9)解析主機名         10)解析Web應用         11)解析資源名         12)獲取資源(HTML文件或JSP文件)     在一臺Web服務器中配置多個網站         爲了節省IP地址,咱們有時須要在同一臺Web服務器配置多個網站,即不管是用戶訪問www.taobao.com.cn還         是www.taobao.com,訪問到的都是同一臺主機,能夠在hosts文件中配置主機IP地址。 ——Tomcat體系結構     服務 Service         在Server下還有一個服務:Catalina。         在Service中包含一個引擎。         在Service中包含多個Connector鏈接器,每一個鏈接器使用的協議也不一樣。      引擎 Engine         一個引擎能夠管理多個主機。         在引擎中能夠設置默認主機。             在Tomcat/conf/server.xml文件中設置:                 <Engine name="Catalina" defaultHost="主機名" >     主機 Host         一個主機能夠管理多個Context,也就是Web應用。     Web應用(也能夠稱爲Context上下文)
相關文章
相關標籤/搜索