HTTP協(xié)議是TCP/ip協(xié)議的上層協(xié)議。TCP負(fù)責(zé)確保從一個網(wǎng)絡(luò)節(jié)點(diǎn)向另一個網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送的文件能作為一個完整的文件到達(dá)目的地。IP是一個底層協(xié)議,負(fù)責(zé)把數(shù)據(jù)塊(數(shù)據(jù)包)沿路/路由到目的地。HTTP是另一個網(wǎng)絡(luò)協(xié)議,它要依賴TCP/IP從一處向另一處完整的傳送請求和響應(yīng)。
1.1 HTTP協(xié)議之URL把URL作為第一個介紹是因?yàn)椋挥心阍跒g覽器中輸入了url地址,才會有后面的HTTP請求和HTTP響應(yīng)。
rul地址解析如下:

TCP端口只是一個16位數(shù)字而已,用于標(biāo)識服務(wù)器硬件上一個特定的軟件程序。從0到1023的TCP端口好已經(jīng)保留。
1.2 HTTP協(xié)議之HTTP請求請求流中關(guān)鍵要素為:
HTTP方法(主要的為GET和POST)
GET和POST的區(qū)別:
從安全看 get<post 因?yàn)間et 會把提交的信息顯示到地址欄;
從提交內(nèi)容看 get<post get 一般不要大于2k, post理論上無限制,但是在實(shí)際開發(fā)中,建議不要大于64k;
從速度看 get>post,get立即響應(yīng),post排隊(duì);
Get可以保留uri中的參數(shù),利于收藏;
注:冪等是指,一次和多次請求某一個資源應(yīng)具有相同的副作用。
訪問頁面的URL;
表單參數(shù);
Accept: text/html,image/* [告訴服務(wù)器,我可以接受文本,網(wǎng)頁,圖片]
Accept-Charset: ISO-8859-1 [接受字符編碼 iso-8859-1]
Accept-Encoding: gzip,comPRess [可以接受 gzip,compress壓縮后數(shù)據(jù)]
Accept-Language: en-us,zh-cn [瀏覽器支持中,英文]
Host: www.sohu.com:80 [我要找主機(jī)是 www.sohu.com:80]
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT [ 告訴服務(wù)器,我的緩沖中有這個資源文件,該文件的時間是。。。]
Referer: http://www.sohu.com/index.jsp [告訴服務(wù)器,我來自哪里,該消息頭,常用于防止盜鏈]
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)[告訴服務(wù)器,瀏覽器內(nèi)核]
Cookie [cookie]
Connection: close/Keep-Alive [保持連接,發(fā)完數(shù)據(jù)后,我不關(guān)閉連接,30秒]
Date: Tue, 11 Jul 2000 18:23:51 GMT [瀏覽器發(fā)送該http請求的時間]
一個請求如下:

在接收和解釋請求消息后,服務(wù)器返回一個HTTP響應(yīng)消息。
關(guān)鍵要素為:
狀態(tài)碼:
狀態(tài)代碼有三位數(shù)字組成,第一個數(shù)字定義了響應(yīng)的類別,且有五種可能取值:
1xx:指示信息--表示請求已接收,繼續(xù)處理
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重定向--要完成請求必須進(jìn)行更進(jìn)一步的操作
4xx:客戶端錯誤--請求有語法錯誤或請求無法實(shí)現(xiàn)
5xx:服務(wù)器端錯誤--服務(wù)器未能實(shí)現(xiàn)合法的請求
常見狀態(tài)代碼、狀態(tài)描述、說明:
200 OK //客戶端請求成功
400 Bad Request //客戶端請求有語法錯誤,不能被服務(wù)器所理解
401 Unauthorized //請求未經(jīng)授權(quán),這個狀態(tài)代碼必須和WWW-Authenticate報頭域一起使用
403 Forbidden //服務(wù)器收到請求,但是拒絕提供服務(wù)
404 Not Found //請求資源不存在,eg:輸入了錯誤的URL
500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯誤
503 Server Unavailable //服務(wù)器當(dāng)前不能處理客戶端的請求,一段時間后可能恢復(fù)正常
eg:HTTP/1.1 200 OK (CRLF)
Location: http://www.baidu.org/index.jsp 【讓瀏覽器重新定位到該url】
Server:apache tomcat 【告訴瀏覽器我是tomcat】
Content-Encoding: gzip 【告訴瀏覽器我使用 gzip】
Content-Length: 80 【告訴瀏覽器回送的數(shù)據(jù)大小為80節(jié)】
Content-Language: zh-cn 【支持中文】
Content-Type: text/html; charset=GB2312 [內(nèi)容格式text/html; 編碼gab2312]
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 【告訴瀏覽器,該資源上次更新時間】
Refresh: 1;url=http://www.baidu.com 【過多久去,刷新到http://www.baidu.com】
Content-Disposition: attachment; filename=aaa.zip 【告訴瀏覽器,有文件下載】
Transfer-Encoding: chunked [傳輸?shù)木幋a]
Set-Cookie:SS=Q0=5Lb_nQ; path=/search[后面詳講]
Expires: -1[告訴瀏覽器如何緩存頁面(IE)]
Cache-Control: no-cache [告訴瀏覽器如何緩存頁面火狐]
Pragma: no-cache [告訴瀏覽器如何緩存頁面]
Connection: close/Keep-Alive [保持連接 1.1是Keep-Alive]
Date: Tue, 11 Jul 2000 18:23:51 GMT
Expires實(shí)體報頭域給出響應(yīng)過期的日期和時間。為了讓代理服務(wù)器或?yàn)g覽器在一段時間以后更新緩存中(再次訪問曾訪問過的頁面時,直接從緩存中加載,縮短響應(yīng)時間和降低服務(wù)器負(fù)載)的頁面,我們可以使用Expires實(shí)體報頭域指定頁面過期的時間。eg:Expires:Thu,15 Sep 2006 16:23:12 GMT
一個請求響應(yīng)如:

Web服務(wù)器最擅長提供靜態(tài)Web頁面,但是有時我們不僅僅從Web服務(wù)器獲取一些動態(tài)的內(nèi)容,這時Web服務(wù)器會調(diào)用服務(wù)器上另一個應(yīng)用(Web容器,如Tomcat),然后從這些應(yīng)用中取得相應(yīng)的響應(yīng),再把它發(fā)送給客戶。
Web容器就是一個動態(tài)網(wǎng)頁的管理器和解釋器,當(dāng)向Web服務(wù)器請求一個Servlet時,Web服務(wù)器首先將這個請求交給部署該Servlet的容器。由容器向servlet提供HTTP請求和響應(yīng),而且由容器調(diào)用Servlet的方法。
容器處理請求的過程:

容器的作用:
1、提供Web服務(wù)器與Servlet的通信,無需我們自己寫Scoket等內(nèi)容。
2、管理Servlet的一生。
3、多線程支持;注意會有同步的問題。
4、將JSP翻譯為Servlet
3. Tomcat3.1 安裝tomcat服務(wù)器解壓即可。
3.2 配置①在環(huán)境變量中添加:java_HOME= 指向你的jdk的主目錄(并不是bin文件目錄)

注:如果沒有在環(huán)境變量中配置JAVAHOME,則應(yīng)該在tomcat的startup.bat文件中配置:

② 啟動tomcat服務(wù)器
到 tomcat 主目錄下 bin/startup.bat
③驗(yàn)證是否安裝成功
http://localhost:8080(8080是默認(rèn)端口如果該端口已經(jīng)被占用需要修改端口)
如果您的機(jī)器的8080端口被占用,則無法啟動,這是有兩種解決方法:
1.關(guān)閉8080端口
使用netstat -an或者netstat -anb查看誰占用了8080端口,然后關(guān)閉它就可以了。
2.改變Tomcat的端口號
到 conf/server.xml 文件中修改

注意:tomcat有多個Connector,每個Connector代表不同protocol(協(xié)議),也是從不同的端口來訪問的。如上面的Connector是從8088端口來訪問tomcat的,并且只能接受HTTP/1.1協(xié)議。因此不要改錯了。

bin: 啟動和關(guān)閉tomcat的bat文件
conf: 配置文件
-->server.xml : 該文件用于配置和server 相關(guān)的信息, 比如 tomcat啟動端口號,配置Host, 配置Context, 即web應(yīng)用(當(dāng)把web應(yīng)用放在別的地方而不是放在webapps中時就要用它了)
-->web.xml : 該文件配置web應(yīng)用(web應(yīng)用就相當(dāng)于是一個 web站點(diǎn))
-->tomcat-users.xml: 該文件用戶配置tomcat 的用戶密碼 和 權(quán)限
lib 目錄: 該目錄放置運(yùn)行tomcat 運(yùn)行需要的jar包
logs 目錄:存放日志, 當(dāng)我們需要去查看日志的時候,很有用!當(dāng)我們啟動tomcat錯誤時候,可以查詢信息.
webapps 目錄: 該目錄下,放置我們的web應(yīng)用(web 站點(diǎn))。
work: 工作目錄: 該目錄用于存放jsp被訪問后生成的對應(yīng)的server文件和.class文件
3.4 Web應(yīng)用的目錄規(guī)范結(jié)構(gòu)及首頁配置一個完整的標(biāo)準(zhǔn)Web應(yīng)用的目錄規(guī)范結(jié)構(gòu)如下所示:

在這個目錄結(jié)構(gòu)中:WEB-INF目錄下的classes目錄將來是存放.class文件;lib 目錄用來存放.jar文件;web.xml 配置當(dāng)前這個web應(yīng)用的信息(目前我們只需要知道這幾個就夠了,隨著不斷的深入其他的目錄的用途會被一一揭曉)。
假如我們想將index.jsp頁面配置為該應(yīng)用的首頁,則應(yīng)該在web.xml文件中進(jìn)行如下配置:
<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
這樣當(dāng)我們的網(wǎng)址中不帶資源名稱時Web服務(wù)器就會將首頁返回給我們。
3.5 管理虛擬目錄大多數(shù)情況下,當(dāng)我們把web 應(yīng)用直接放到webapps目錄下,這時,tomcat會自動管理,但是有時候如果我們希望tomcat也可以管理其它目錄下的web應(yīng)用,該怎么辦呢?
使用虛擬目錄配置
假如我希望tomcat幫我管理我D:/Web2(這是一個web應(yīng)用):
①在tomcat的conf目錄下打開server.xml文件;
②找到Host節(jié)點(diǎn),添加<Context path="/myweb2" docBase="d:/web2"/>
myweb2:是訪問時輸入的web名,實(shí)際取出的是d:/web2中的資源
"d:/web2":要管理的物理路徑。
假如我們要訪問d:/web2中的index.jsp文件,實(shí)際訪問時輸入的地址:http://localhost:8088/myweb2/index.jsp
③重啟tomcat才生效(因?yàn)閠omcat待用dom技術(shù)解析xml文件。)
新聞熱點(diǎn)
疑難解答