Tomcat服務器與Http協議

1. Web服務器

        PC機器安裝一個具有web服務的軟件,稱之爲web服務器。

1.1 Web服務軟件的作用

         把本地的資源共享給外部訪問。

1.2 常見的Web服務軟件

(1)Tomcat::Apache組織提供一個免費的小型的服務器軟件。支持Servlet和JSP規範。

(2)WebLogic:Bea公司的一個收費的大型的服務器軟件,後被Oracle收購。支持EE的所有的規範

(3)WebSphere:IBM公司的一個收費的大型的服務器軟件,支持EE的所有的規範。

(4)JBoss:是一個基於J2EE的開放源代碼的應用服務器。JBoss是一個管理EJB的容器和服務器,JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。

1.3 Tomcat概述

         Tomcat服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。支持Servlet和JSP 規範,且最新的Servlet 和JSP 規範總是能在Tomcat 中得到體現。

1.4 Tomcat目錄結構

    bin:腳本目錄

                  啓動腳本:startup.bat

                  停止腳本:shutdown.bat

    conf:配置文件目錄

                  核心配置文件:server.xml

                  用戶權限配置文件:tomcat-users.xml

                  所有web項目默認配置文件:web.xml

    lib:依賴庫,tomcat和web項目中需要使用的jar包

    logs:日誌文件.

                  localhost_access_log.*.txt tomcat記錄用戶訪問信息,星*表示時間。

                 例如:localhost_access_log.2016-02-28.txt

    temp:臨時文件目錄,文件夾內內容可以任意刪除。

    webapps:默認情況下發布WEB項目所存放的目錄。

    work:tomcat處理JSP的工作目錄。

1.5 啓動和訪問

    tomcat解壓目錄/bin/startup.bat雙擊運行啓動tomcat

    訪問路徑:http://localhost:8080/

1.6 web應用目錄結構

    在JavaEE規範中,WEB項目存在一定的目錄結構,具體結構如下:

     項目名稱

           |-----靜態資源.HTML,CSS,JS

           |-----WEB-INF

                       |----web.xml  當前WEB項目的核心配置,Servlet2.5必須有,3.0可省略。

                       |----lib       當前WEB項目所需要的第三方的jar的存放位置。

                       |----classes  Java源碼編譯後生成class文件存放的位置。   

1.7 部署JavaWeb應用到Tomcat服務器上

    方式一:直接把應用拷貝到Tomcat\webapps目錄中

    方式二:把應用打成war包。

2.HTTP協議

2.1 HTTP協議概述

    HTTP是HyperText Transfer Protocol(超文本傳輸協議)的簡寫,用於定義WEB瀏覽器與WEB服務器之間交換數據的過程及數據本身的格式。

2.2 HTTP請求與響應內容

2.3 HTTP請求內容分析
(1)請求行

    GET  http://localhost:8080/HTTP/index.html  HTTP/1.1

    #請求方式

          常見的請求方式:

            GET     請求獲取Request-URI所標識的資源

            POST    在Request-URI所標識的資源後附加新的數據

            HEAD    請求獲取由Request-URI所標識的資源的響應消息報頭

            PUT     請求服務器存儲一個資源,並用Request-URI作爲其標識

            DELETE  請求服務器刪除Request-URI所標識的資源

            TRACE   請求服務器回送收到的請求信息,主要用於測試或診斷

            CONNECT 保留將來使用

            OPTIONS 請求查詢服務器的性能,或者查詢與資源相關的選項和需求

         常用的請求方式:GET  和 POST   

            Get與Post請求的區別:

            GET方式提交

            a)地址欄(URI)會跟上參數數據。以?開頭,多個參數之間以&分割。

            b)GET提交參數數據有限制,不超過1KB。

            c)GET方式不適合提交敏感密碼。

            d)注意:瀏覽器直接訪問的請求,默認提交方式是GET方式

            POST方式提交

            a)參數不會跟着URI後面。參數而是跟在請求的實體內容中。沒有?開頭,多個參數之間以&分割。

            b)POST提交的參數數據沒有限制。

            c)POST方式提交敏感數據。

    #請求資源

        URL:  統一資源定位符。http://localhost:8080/HTTP/index.html只能定位互聯網資源。是URI     的子集。

        URI: 統一資源標記符。/HTTP/index.html。用於標記任何資源。可以是本地文件系統,局域網的資源,可以是互聯網。

    #http協議版本

        http1.0:當前瀏覽器客戶端與服務器端建立連接之後,只能發送一次請求,一次請求之後連接關閉。

        http1.1:當前瀏覽器客戶端與服務器端建立連接之後,可以在一次連接中發送多次請求。(基本都使用1.1)

(2)請求頭

        Accept         text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8   --瀏覽器接受的數據類型

        Accept-Encoding    gzip, deflate                   --瀏覽器接受的數據壓縮格式

        Accept-Language    zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2  --瀏覽器接受的語言

        Cache-Control    max-age=0

        Connection         keep-alive       -- 瀏覽器跟服務器連接狀態。close: 連接關閉  keep-alive:保存連接

        Host               localhost:8080     --當前請求訪問的目標地址

        If-Modified-Since     Mon, 19 Mar 2018 02:52:32 GMT  --瀏覽器最後的緩存時間

        Referer:         --當前請求來自於哪裏

        Cookie:           -- 瀏覽器保存的cookie信息

        If-None-Match     W/"2665-1521427952627"

        Upgrade-Insecure-Requests     1

        User-Agent          Mozilla/5.0 (Windows NT 10.0; …)Gecko/20100101 Firefox/59.0   --瀏覽器類型

        Accept:瀏覽器可接受的MIME類型告訴服務器客戶端能接收什麼樣類型的文件。

        Accept-Charset: 瀏覽器通過這個頭告訴服務器,它支持哪種字符集

        Accept-Encoding:瀏覽器能夠進行解碼的數據編碼方式,比如gzip

        Accept-Language:瀏覽器所希望的語言種類,當服務器能夠提供一種以上的語言版本時要用到。可以在瀏覽器中進行設置。

        Host:初始URL中的主機和端口

        Referrer:包含一個URL,用戶從該URL代表的頁面出發訪問當前請求的頁面

        Content-Type:內容類型,告訴服務器瀏覽器傳輸數據的MIME類型,文件傳輸的類型

        If-Modified-Since: Wed, 02 Feb 2011 12:04:56 GMT利用這個頭與服務器的文件進行比對,如果一致,則從緩存中直接讀取文件。

        User-Agent:瀏覽器類型.

        Content-Length:表示請求消息正文的長度

        Connection:表示是否需要持久連接。如果服務器看到這裏的值爲“Keep -Alive”,或者看到請求使用的是HTTP 1.1(HTTP 1.1默認進行持久連接)

        Cookie:這是最重要的請求頭信息之一 (在講會話時解析)

        Date:請求時間GMT

(3)請求內容

        當請求方式是POST方式時,才能看見消息正文

        如:uName=tom&pwd=123

2.4 HTTP響應內容分析

    HTTP/1.1200 OK        --響應行

    Accept-Ranges bytes  --響應頭

    Content-Length    145

    Content-Type  text/html

    Date   Mon, 19 Mar 2018 02:55:40 GMT

    ETag   W/"145-1521428128560"

    Last-Modified Mon, 19 Mar 2018 02:55:28 GMT

    Server Apache-Coyote/1.1

(1)響應行

    第一行:  HTTP/1.1  200   OK

    協議/版本   響應狀態碼  對響應碼的描述(一切正常)

    狀態代碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值:

        1xx:指示信息--表示請求已接收,繼續處理

        2xx:成功--表示請求已被成功接收、理解、接受

        3xx:重定向--要完成請求必須進行更進一步的操作

        4xx:客戶端錯誤--請求有語法錯誤或請求無法實現

        5xx:服務器端錯誤--服務器未能實現合法的請求

    常見響應狀態碼:

        200(正常)  一切正常

        302/307(臨時重定向)

        304(未修改)表示客戶機緩存的版本是最新的,客戶機可以繼續使用它,無需到服務器請求。

        404(找不到)  服務器上不存在客戶機所請求的資源。

        500(服務器內部錯誤)

(2)響應消息頭

        Location: 指示新的資源的位置,通常和302/307一起使用,完成請求重定向

        Server:apachetomcat指示服務器的類型

        Content-Encoding: gzip服務器發送的數據採用的編碼類型

        Content-Length:145 告訴瀏覽器正文的長度

        Content-Language:zh-cn服務發送的文本的語言

        Content-Type: text/html 服務器發送的內容的MIME類型

        Last-Modified: 9Mar 2018 02:55:28 GMT文件的最後修改時間

        Refresh: 1指示客戶端刷新頻率。單位是秒

        Content-Disposition: attachment; filename=aaa.zip指示客戶端下載文件

        Set-Cookie:SS=Q0=5Lb_nQ; path=/search服務器端發送的Cookie

        Expires: -1

        Cache-Control: no-cache (1.1) 

        Pragma: no-cache  (1.0)  表示告訴客戶端不要使用緩存

        Connection:close/Keep-Alive  

        Date: 19Mar 2018 02:55:40 GMT

(3)響應正文

        和網頁右鍵“查看源碼”看到的內容一樣。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章