tomcat 伺服器全解,tomcat伺服器

來源:互聯網
上載者:User

tomcat 伺服器全解,tomcat伺服器

①B/S、C/S比較  ⑴C/S    C/S結構即用戶端/伺服器(Client/Server),例如QQ;    需要編寫伺服器端程式,以及用戶端程式,例如我們安裝的就是QQ的用戶端程式;    缺點:軟體更新時需要同時更新用戶端和伺服器端兩端,比較麻煩;    優點:安全性比較好。   ⑵B/S    B/S結構即瀏覽器/伺服器(Browser/Server);    優點:只需要編寫伺服器端程式;    缺點:安全性較差。②WEB資源  ⑴Web資源介紹    html:靜態資源 ;    JSP/Servlet :動態資源。當然,除了JavaWeb程式,還有其他          Web程式,例如:ASP、PHP等。   ⑵靜態資源和靜態資源區別      用戶端請求的頁面如果是靜態網頁,那麼伺服器會直接把靜態網頁的內容響應給用戶端,如果用戶端請求的是動態網頁,伺服器需要先把動態網頁轉換成靜態網頁,然後再把轉化後的靜態網頁響應給用戶端。   ⑶訪問Web資源 開啟瀏覽器,輸入URL③Web伺服器    Web伺服器的作用是接收用戶端的請求,給用戶端作出響應。對於JavaWeb程式而已,還需要有JSP/Servlet容器,JSP/Servlet容器的準系統是把動態資源轉換成靜態資源,當然JSP/Servlet容器不只這些功能,  我們需要使用的是Web伺服器和JSP/Servlet容器,通常這兩者會集於一身。JavaWeb伺服器:Tomcat(Apache):當前應用最廣的JavaWeb伺服器;④Tomcat下載Tomcat可以到http://tomcat.apache.org下載。Tomcat分為安裝版和解壓版:    安裝版:一台電腦上只能安裝一個Tomcat;    解壓版:無需安裝,解壓即可用,解壓多少份都可以,所以我們選       擇解壓版 ⑴Tomcat目錄結構:把解壓版Tomcat解壓到一個沒有中文,沒有空格的路徑中即可,建議路徑不要太深,因為我們需要經常進入Tomcat安裝目錄。例如:F:\apache-tomcat-7.0.42 ⑵啟動和關閉Tomcat        在啟動Tomcat之前,我們必須要配置環境變數:    JAVA_HOME:必須先配置JAVA_HOME,因為Tomcat啟動需要使用JDK;    CATALANA_HOME:如果是安裝版,那麼還需要配置這個變數,這個變數用來指定Tomcat的安裝路徑,例如:F:\apache-tomcat-7.0.42。    啟動:進入%CATALANA_HOME%\bin目錄,找到startup.bat ,雙擊即可;    關閉:進入%CATALANA_HOME%\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⑷配置連接埠號碼開啟%CATALANA_HOME%\conf\server.xml檔案http預設連接埠號碼為80,也就是說在URL中不給出連接埠號碼時就表示使用80連接埠。當然你也可以修改為其它連接埠號碼。當把連接埠號碼修改為80後,在瀏覽器中只需要輸入:http://localhost就可以訪問Tomcat首頁了。⑤Tomcat的目錄結構⑴bin:該目錄下存放的是二進位可執行檔,如果是安裝版,那麼這個目錄下會有兩個exe檔案:tomcat6.exe、tomcat6w.exe,前者是在控制台下啟動Tomcat,後者是彈出UGI視窗啟動Tomcat;如果是解壓版,那麼會有startup.bat和shutdown.bat檔案,startup.bat用來啟動Tomcat,但需要先配置JAVA_HOME環境變數才能啟動,shutdawn.bat用來停止Tomcat;⑵conf:這是一個非常非常重要的目錄,這個目錄下有四個最為重要的檔案:    ⒈ server.xml:配置整個伺服器資訊。例如修改連接埠號碼,添加虛擬機器主機等;下面會詳細介紹這個檔案;    ⒉tomcatusers.xml:儲存tomcat使用者的檔案,這裡儲存的是tomcat的使用者名稱及密碼,以及使用者的角色資訊。可以按著該檔案中的注釋資訊添加tomcat使用者,然後就可以在Tomcat首頁中進入Tomcat Manager頁面了;    ⒊web.xml:部署描述符檔案,這個檔案中註冊了很多MIME類型,即文件類型。這些MIME類型是用戶端與伺服器之間說明文件類型的,如使用者請求一個html網頁,那麼伺服器還會告訴用戶端瀏覽器響應的文檔是text/html類型的,這就是一個MIME類型。用戶端瀏覽器通過這個MIME類型就知道如何處理它了。當然是在瀏覽器中顯示這個html檔案了。但如果伺服器響應的是一個exe檔案,那麼瀏覽器就不可能顯示它,而是應該彈出下載視窗才對。MIME就是用來說明文檔的內容是什麼類型的!    ⒋context.xml:對所有應用的統一配置,通常我們不會去配置它。⑶lib:Tomcat的類庫,裡面是一大堆jar檔案。如果需要添加Tomcat依賴的jar檔案,可以把它放到這個目錄中,當然也可以把應用依賴的jar檔案放到這個目錄中,這個目錄中的jar所有項目都可以共用之,但這樣你的應用放到其他Tomcat下時就不能再共用這個目錄下的Jar包了,所以建議只把Tomcat需要的Jar包放到這個目錄下;⑷logs:這個目錄中都是記錄檔,記錄了Tomcat啟動和關閉的資訊,如果啟動Tomcat時有錯誤,那麼異常也會記錄在記錄檔中。⑸temp:存放Tomcat的臨時檔案,這個目錄下的東西可以在停止Tomcat後刪除!⑹webapps:存放web項目的目錄,其中每個檔案夾都是一個項目;如果這個目錄下已經存在了目錄,那麼都是tomcat內建的。項目。其中ROOT是一個特殊的項目,在地址欄中沒有給出項目目錄時,對應的就是ROOT項目。http://localhost:8080/examples,進入樣本項目。其中examples就是項目名,即檔案夾的名字。⑺work:運行時產生的檔案,最終啟動並執行檔案都在這裡。通過webapps中的項目產生的!可以把這個目錄下的內容刪除,再次運行時會生再次產生work目錄。當用戶端使用者訪問一個JSP檔案時,Tomcat會通過JSP產生Java檔案,然後再編譯Java檔案產生class檔案,產生的java和class檔案都會存放到這個目錄下。⑻LICENSE:許可證。⑼NOTICE:說明檔案。⑥Web應用(重點)靜態網站: 在webapps目錄下建立一個目錄(命名必須不包含中文和空格),這個目  錄稱之為項目目錄; 在項目目錄下建立一個html檔案;動態網站:    在webpass目錄下建立一個項目目錄;    在項目目錄下建立如下內容:    WEB-INF目錄;    在WEB-INF目錄下建立web.xml檔案     建立靜態或動態網頁面⑴建立靜態應用    在webapps下建立一個hello目錄;    在webapps\hello\下建立index.html;    啟動tomcat;    開啟瀏覽器訪問http://localhost:8080/hello/index.html⑵建立Live App    在webapps下建立hello1目錄;    在webapps\hello1\下建立WEB-INF目錄;    在webapps\hello1\WEB-INF\下建立web.xml;web.xml配置    <?xml version="1.0" encoding="UTF-8"?>    <web-app version="2.5"         xmlns="http://java.sun.com/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">    </web-app>    在webapps\hello1\下建立index.html。    開啟瀏覽器訪問http://localhost:8080/hello/index.html⑶配置外部應用   原來我們的項目放到webapps下,現在我放到外面,也希望tomcat可以找到它!也可以把應用放到Tomcat之外,這就是外部應用了。例如我們把上面寫的hello應用從webapps目錄中剪下到C盤下,即C:/hello。現在hello這個Web應用已經不在Tomcat中了,這時我們需要在tomcat中配置外部應用的位置,配置的方式一共有兩種:  ⒈ conf/server.xml:開啟server.xml檔案,找到<Host>元素,在其中添加<Context>元素, 代碼如下: <host name="localhost" appBase="webappps">        unpackWARs ="true " autoDeploy="true"         <context psth = "xuexie_hello"  docBase="c://hello"/>       </host>       path:指定當前應用的名稱;    docBase:指定應用的物理位置;    瀏覽器訪問路徑:http://localhost:8080/xuexi_hello/index.html⒉conf/catalana/localhost:在該目錄下建立itcast_hello.xml檔案,在該檔案中編寫<Context>元素,⑷理解server.xml(瞭解)<Server>  <Servier>    <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>看作是一個大酒店:    <Service>:酒店的服務部門;    <Connector>:服務員;    <Engine>:後廚;    <Host>:後廚中的一個區,例如川菜區是一個<Host>、粵菜區是一個  <Host>;    <Context>:後廚的一個廚師。    使用者發出一個請求:http://localhost:8080/hello/index.jsp。發現是http/1.1協議,而且還是8080連接埠,所以就交給了處理這一請求的“服務員(處理HTTP請求的<Connector>)”,“服務員”再把請求交給了“後廚(<Engine>)”,因為請求是要一盤水煮魚,所以由“川菜區(<Host>)”負責,因為“大老王師傅<Context>”做水煮魚最地道,所以由它完成。    <Connector>:關心請求中的http、和8080;    < Host>:關心localhost;    <Context>:關心hello⑸映射虛擬機器主機(瞭解)我們的目標是,在瀏覽器中輸出:http://www.xuexi.cn就可以訪問我們的項目。完成這一目標,我們需要做三件事:    修改連接埠號碼為80,    在本機上可以解析網域名稱為127.0.0.1,這需要修改C:\WINDOWS\system32\drivers\etc\hosts檔案,添加對http://www.xuexi.cn和127.0.01的綁定關係;在server.xml檔案中添加一個<Host>(主機)。⑦HTTP協議  ⑴協議:協議的甲乙雙方,就是用戶端(瀏覽器)和伺服器!  理解成雙方通訊的格式!    請求協議;    響應協議; ⑵ HTTP(hypertext transport protocol),即超文字傳輸通訊協定 (HTTP)。這個協議詳細規定了瀏覽器和全球資訊網伺服器之間互相通訊的規則。HTTP就是一個通訊規則,通訊規則規定了用戶端發送給伺服器的內容格式,也規定了伺服器發送給用戶端的內容格式。其實我們要學習的就是這個兩個格式!用戶端發送給伺服器的格式叫“請求協議”;伺服器發送給用戶端的格式叫“響應協議”。 ⑶ 請求協議請求協議的格式如下:請求首行;要求標頭資訊;空行;請求體。    瀏覽器發送給伺服器的內容就這個格式的,如果不是這個格式伺服器將無法解讀!在HTTP協議中,請求有很多要求方法,其中最為常用的就是GET和POST。不同的要求方法之間的區別,後面會一點一點的介紹。 3.1 安裝HttpWatchHttpWatch是專門為IE瀏覽器提供的,用來查看HTTP請求和響應內容的工具。而FireFox上需要安裝FireBug軟體。如果你使用的是Chrome,那麼就不用自行安裝什麼工具了,因為它自身就有查看請求和響應內容的功能!3.2 開啟IE,在訪問hello項目的index.jsp之間開啟HttpWatch,並點擊“Record”按鈕。然後訪問index.jsp頁面。查看請求內容如下: GET /hello/index.jsp HTTP/1.1 Host: localhostUser-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0Accept: text/html,application/xht+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-cn,zh;q=0.5Accept-Encoding: gzip, deflateAccept-Charset: GB2312,utf-8;q=0.7,*;q=0.7Connection: keep-aliveCookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98 3.3 解釋:    GET /hello/index.jsp HTTP/1.1:GET請求,請求伺服器路徑為/hello/index.jsp,協議為1.1;    Host:localhost:請求的主機名稱為localhost;    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0:與瀏覽器和OS相關的資訊。有些網站會顯示使用者的系統版本和瀏覽器版本資訊,這都是通過擷取User-Agent頭資訊而來的;    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8:告訴伺服器,當前用戶端可以接收的文件類型,其實這裡包含了*/*,就表示什麼都可以接收;    Accept-Language: zh-cn,zh;q=0.5:當前用戶端支援的語言,可以在瀏覽器的工具?選項中找到語言相關資訊;    Accept-Encoding: gzip, deflate:支援的壓縮格式。資料在網路上傳遞時,可能伺服器會把資料壓縮後再發送;    Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7:用戶端支援的編碼;    Connection: keep-alive:用戶端支援的連結方式,保持一段時間連結,預設為3000ms;    Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98:因為不是第一次訪問這個地址,所以會在請求中把上一次伺服器響應中發送過來的Cookie在請求中一併發送去過;這個Cookie的名字為JSESSIONID,然後在講會話是講究它!3.4  POST請求為了示範POST請求,我們需要修改index.jsp頁面,即添加一個表單:<form action="" method="post">  關鍵字:<input type="text" name="keyword"/>  <input type="submit" value="提交"/></form> 3.5 開啟HttpWatch,輸入hello後點擊提交,查看請求內容如下:POST /hello/index.jsp HTTP/1.1 Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*Referer: http://localhost:8080/hello/index.jspAccept-Language: zh-cn,en-US;q=0.5User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)Content-Type: application/x-www-form-urlencodedAccept-Encoding: gzip, deflateHost: localhost:8080Content-Length: 13Connection: Keep-AliveCache-Control: no-cacheCookie: JSESSIONID=E365D980343B9307023A1D271CC48E7D keyword=hello 3.6 解釋:POST請求是可以有體的,而GET請求不能有請求體。    Referer: http://localhost:8080/hello/index.jsp:請求來自哪個頁面,例如你在百度上點選連結到了這裡,那麼Referer:http://www.baidu.com;如果你是在瀏覽器的地址欄中直接輸入的地址,那麼就沒有Referer這個要求標頭了;    Content-Type: application/x-www-form-urlencoded:表單的資料類型,說明會使用url格式編碼資料;url編碼的資料都是以“%”為首碼,後面跟隨兩位的16進位,例如“傳智”這兩個字使用UTF-8的url編碼用為“%E4%BC%A0%E6%99%BA”;    Content-Length:13:請求體的長度,這裡表示13個位元組。    keyword=hello:請求體內容!hello是在表單中輸入的資料,keyword是表單欄位的名字。3.7 Referer要求標頭 是比較有用的一個要求標頭,它可以用來做統計工作,也可以用來做防盜鏈。統計工作:我公司網站在百度上做了廣告,但不知道在百度上做廣告對我們網站的訪問量是否有影響,那麼可以對每個請求中的Referer進行分析,如果Referer為百度的很多,那麼說明使用者都是通過百度找到我們公司網站的。3.8 防盜鏈:我公司網站上有一個下載連結,而其他網站盜鏈了這個地址,例如在我網站上的index.html頁面中有一個連結,點擊即可下載JDK7.0,但有某個人的微博中盜鏈了這個資源,它也有一個連結指向我們網站的JDK7.0,也就是說登入它的微博,點選連結就可以從我網站上下載JDK7.0,這導致我們網站的廣告沒有看,但下載的卻是我網站的資源。這時可以使用Referer進行防盜鏈,在資源被下載之前,我們對Referer進行判斷,如果請求來自本網站,那麼允許下載,如果非本網站,先跳轉到本網站看廣告,然後再允許下載。 響應協議⑷ 響應內容響應協議的格式如下:響應首行;回應標頭資訊;空行;響應體。響應內容是由伺服器發送給瀏覽器的內容,瀏覽器會根據響應內容來顯示。HTTP/1.1 200 OK Server: Apache-Coyote/1.1Content-Type: text/html;charset=UTF-8Content-Length: 724Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/helloDate: Wed, 25 Sep 2012 04:15:03 GMT  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="http://localhost:8080/hello/">        <title>My JSP 'index.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache">    <meta http-equiv="cache-control" content="no-cache">    <meta http-equiv="expires" content="0">        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="This is my page">    <!--    <link rel="stylesheet" type="text/css" href="styles.css">    -->  </head>    <body><form action="" method="post">  關鍵字:<input type="text" name="keyword"/>  <input type="submit" value="提交"/></form>  </body></html>     HTTP/1.1 200 OK:響應協議為HTTP1.1,狀態代碼為200,表示請求成功,OK是對狀態代碼的解釋;    Server: Apache-Coyote/1.1:伺服器的版本資訊;    Content-Type: text/html;charset=UTF-8:響應體使用的編碼為UTF-8;    Content-Length: 724:響應體為724位元組;    Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello:響應給用戶端的Cookie;    Date: Wed, 25 Sep 2012 04:15:03 GMT:響應的時間,這可能會有8小時的時區差;⑸ 響應碼回應標頭對瀏覽器來說很重要,它說明了響應的真正含義。例如200表示響應成功了,302表示重新導向,這說明瀏覽器需要再發一個新的請求。    200:請求成功,瀏覽器會把響應體內容(通常是html)顯示在瀏覽器中;    404:請求的資源沒有找到,說明用戶端錯誤的請求了不存在的資源;    500:請求資源找到了,但伺服器內部出現了錯誤;    302:重新導向,當響應碼為302時,表示伺服器要求瀏覽器重新再發一個請求,伺服器會發送一個回應標頭Location,它指定了新請求的URL地址;    304:當使用者第一次請求index.html時,伺服器會添加一個名為Last-Modified回應標頭,這個頭說明了index.html的最後修改時間,瀏覽器會把index.html內容,以及最後回應時間緩衝下來。當使用者第二次請求index.html時,在請求中包含一個名為If-Modified-Since要求標頭,它的值就是第一次請求時伺服器通過Last-Modified回應標頭發送給瀏覽器的值,即index.html最後的修改時間,If-Modified-Since要求標頭就是在告訴伺服器,我這裡瀏覽器緩衝的index.html最後修改時間是這個,您看看現在的index.html最後修改時間是不是這個,如果還是,那麼您就不用再響應這個index.html內容了,我會把緩衝的內容直接顯示出來。而伺服器端會擷取If-Modified-Since值,與index.html的當前最後修改時間比對,如果相同,伺服器會發響應碼304,表示index.html與瀏覽器上次緩衝的相同,無需再次發送,瀏覽器可以顯示自己的快取頁面面,如果比對不同,那麼說明index.html已經做了修改,伺服器會響應200。 回應標頭:⒈Last-Modified:最後的修改時間;要求標頭:⒉If-Modified-Since:把上次請求的index.html的最後修改時間還給伺服器;狀態代碼:304,比較If-Modified-Since的時間與檔案真實的時間一樣時,伺服器會響應304,而且不會有響本文,表示瀏覽器緩衝的就是最新版本!⒊自動重新整理回應標頭  ?    Refresh: 3;url=http://www.xuexi.cn⒋HTML中指定回應標頭在HTMl頁面中可以使用<meta http-equiv="" content="">來指定回應標頭,例如在index.html頁面中給出<meta http-equiv="Refresh" content="3;url=http://www.itcast.cn">,表示瀏覽器只會顯示index.html頁面3秒,然後自動跳轉到http://www.itcast.cn。 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.