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
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)響應正文
和網頁右鍵“查看源碼”看到的內容一樣。