telnet
一:打開(kāi)telnet服務(wù):
控制面板------> 程序和功能---> 打開(kāi)或關(guān)閉windows功能---> 選中 Telnet客戶端--->確定
二:測(cè)試telnet服務(wù)是否已經(jīng)打開(kāi):
C:\Users\Administrator>telnet -?
telnet [-a][-e escape char][-f log file][-l user][-t term][host [port]]
?-a ? ? ?企圖自動(dòng)登錄。除了用當(dāng)前已登陸的用戶名以外,與 -l 選項(xiàng)相同。
?-e ? ? ?跳過(guò)字符來(lái)進(jìn)入 telnet 客戶端提示。
?-f ? ? ?客戶端登錄的文件名
?-l ? ? ?指定遠(yuǎn)程系統(tǒng)上登錄用的用戶名稱。
? ? ? ? ?要求遠(yuǎn)程系統(tǒng)支持 TELNET ENVIRON 選項(xiàng)。
?-t ? ? ?指定終端類型。
? ? ? ? ?支持的終端類型僅是: vt100, vt52, ansi 和 vtnt。
?host ? ?指定要連接的遠(yuǎn)程計(jì)算機(jī)的主機(jī)名或 IP 地址。
?port ? ?指定端口號(hào)或服務(wù)名。
三:使用:
先把tomcat 打開(kāi)
C:\Users\Administrator>telnet localhost 80
輸入的字符看不到,按ctrl + ]即可
把下面兩行代碼粘進(jìn)入,按兩次enter后即可將apache主頁(yè)打印出來(lái).
GET / HTTP/1.1
Host:
將httpWathc professional啟用
internet屬性-->程序-->管理加載項(xiàng)-->將httpWathc professional啟用
修改html編輯器
windows-->General-->Editors-->File Association
?File types:--->*.html
?Associated editors:-->MyEclispe HTML Editor (locked by 'html' content type)
?default ok.
訪問(wèn)http server的次數(shù)
例題:一個(gè)web頁(yè)面中,使用img標(biāo)簽引用了三個(gè)圖片,當(dāng)客戶端訪問(wèn)服務(wù)器中的這個(gè)web頁(yè)面時(shí),客戶端
總共訪問(wèn)幾次服務(wù)器.即向服務(wù)器發(fā)送了幾次Http請(qǐng)求:
新建一個(gè)web project
在WebRoot中加入三個(gè)圖片
在WebRoot中建立一個(gè)img.html文件,關(guān)鍵內(nèi)容為:
<body>
<img ?src="1.jpg">
<img ?src="3.jpg">
<img ?src="5.jpg">
</body>
將此工程發(fā)布出去,在IE瀏覽器中打開(kāi)HttpWatch professional,Record
輸入:http://localhost/myday02/img.html回車
結(jié)果:
?00:00:00.000 0.013 122 GET 304 text/html http://localhost/myday02/img.html
?00:00:00.017 0.007 125 GET 304 image/jpeg http://localhost/myday02/1.jpg
?00:00:00.018 0.014 125 GET 304 image/jpeg http://localhost/myday02/3.jpg
?00:00:00.018 0.039 125 GET 304 image/jpeg http://localhost/myday02/5.jpg
即有四次訪問(wèn):一個(gè)html,三次圖片.
Http請(qǐng)求
一:概述:客戶端連上服務(wù)器后,向服務(wù)器請(qǐng)求某個(gè)web資源,稱之為客戶端向服務(wù)端發(fā)送了一個(gè)HTTP請(qǐng)求.一個(gè)
? ? ?完整的Http請(qǐng)求包括如下內(nèi)容:
? ? ?一個(gè)請(qǐng)求行,若干個(gè)請(qǐng)求頭,以及實(shí)體內(nèi)容.
? ? ?請(qǐng)求行:請(qǐng)求行用于描述客戶端的請(qǐng)求方式.請(qǐng)求的資源名稱,以及使用的HTTP協(xié)議版本號(hào)
? ? ?多個(gè)請(qǐng)求行:消息頭用于描述客戶端請(qǐng)求哪臺(tái)主機(jī),以及客戶端的一些環(huán)境信息等.
二:共有七種請(qǐng)求方式:POST,GET,HEAD,OPTIONS,DELETE,TRACE,PUT
? ? 常用的有GET,POST,默認(rèn)的是get請(qǐng)求.可通過(guò)更改表單的提交方式實(shí)現(xiàn).
三:不管post還是get,都用于向服務(wù)器請(qǐng)求某個(gè)web資源,這兩種方式的區(qū)別主要表現(xiàn)在數(shù)據(jù)傳遞上:
? ?1.get方式:可以在請(qǐng)求的url地址后以?的形式帶上交給服務(wù)器的數(shù)據(jù).多個(gè)數(shù)據(jù)之間以&進(jìn)行分隔:
? ? ? ? ? ? ?如:
? ? ? ? 1.1: get方式的特點(diǎn):在URL地址后附帶的參數(shù)是有限制的,其數(shù)據(jù)容量通常不能超過(guò)1K.
? ?2.POST方式:可以在請(qǐng)求的實(shí)體內(nèi)容中向服務(wù)器發(fā)送數(shù)據(jù),
? ? ? ? 2.1: post方式的特點(diǎn):傳送的數(shù)據(jù)量無(wú)限制.
---------------------------------------------------------------------------------
示例演示區(qū)別:
在WebRoot中建立一個(gè)img.html文件,關(guān)鍵內(nèi)容為:
<body>
<h2>get方式的請(qǐng)求</h2>
<form action="" method="get">
用戶名:<input type = "text" name = "name">
密 碼:<input type="password" name = "password">
<input type = "submit" value="提交">
</form>
<hr size="8" color="red">
<h2>post方式的請(qǐng)求</h2>
<form action="" method="post">
用戶名:<input type="text" name="name">
密 碼:<input type="password" name = "password">
<input type = "submit" value = "提交">
</form>
</body>
啟動(dòng)tomcat,在瀏覽器中輸入:http://localhost/myday02/get_post.html
演示get:
結(jié)果一:
POST /myday02/get_post.html HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, */*
Referer: http://localhost/myday02/get_post.html
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost
Content-Length: 21
Connection: Keep-Alive
Cache-Control: no-cache
name=abc&password=123
User-Agent Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)
結(jié)果二:瀏覽器的地址欄內(nèi)容變?yōu)?http://localhost/myday02/get_post.html?name=abc&password=123
在瀏覽器中輸入:http://localhost/myday02/get_post.html
演示post:
結(jié)果一:
POST /myday02/get_post.html HTTP/1.1
Accept: */*
Referer: http://localhost/myday02/get_post.html
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost
Content-Length: 21
Connection: Keep-Alive
Cache-Control: no-cache
name=abc&password=123
結(jié)果二:瀏覽器的地址欄內(nèi)容依然為:http://localhost/myday02/get_post.html
Http請(qǐng)求頭詳解
Accept: text/html,image/* ? ? ?用于 告訴服務(wù)器,客戶端支持的數(shù)據(jù)類型.
Accept-Charset: UTF-8 ? ? ? ? ?用于 告訴服務(wù)器,客戶端支持的字符編碼
Accept-Encoding: gzip,compress ? ?告訴服務(wù)器客戶機(jī)支持的數(shù)據(jù)壓縮格式. ?(重點(diǎn))
Accept-Language: en-us,zh-cn ? 用戶告訴服務(wù)器,客戶機(jī)接受語(yǔ)言.
Host: www.it315.org:80 ? ? ? ? ?告訴服務(wù)器要訪問(wèn)那個(gè)主機(jī)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT ? 這個(gè)用來(lái)實(shí)現(xiàn)和緩存相關(guān)的, 跟last-modified. (重點(diǎn))
Referer: http://www.it315.org/index.jsp ? 用來(lái)實(shí)現(xiàn)防盜鏈 (重點(diǎn) )
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) ? ?客戶端的 類型.
Connection: close/Keep-Alive ? ?用于連上服務(wù)器之后, 是否繼續(xù)保持連接.
Http響應(yīng)
一:概述:一個(gè)Http響應(yīng)代表服務(wù)器向客戶端回送的數(shù)據(jù),它包括:
一個(gè)狀態(tài)行,若干消息頭,實(shí)體內(nèi)容.
響應(yīng)行:狀態(tài)行用于描述服務(wù)器對(duì)請(qǐng)求的處理結(jié)果
多個(gè)消息頭:用于描述服務(wù)器的基本信息,以及數(shù)據(jù)的描述,服務(wù)呂通過(guò)這些數(shù)據(jù)的描述信息,
?可以通知客戶端如何處理等一會(huì)它回送來(lái)的數(shù)據(jù).
一個(gè)空行:
實(shí)體內(nèi)容:代表服務(wù)器向客戶端回送的數(shù)據(jù).
二:狀態(tài)行:
格式:HTTP版本號(hào) ?狀態(tài)碼 ?原因敘述<CRLF>
舉例:HTTP/1.1 200 ok
狀態(tài)碼用于表示服務(wù)器對(duì)請(qǐng)求的處理結(jié)果,它是一個(gè)三位的十進(jìn)制數(shù).響應(yīng)分為五類.
重定向Redirect
/servlet/RedTest
重定向:
示例代碼:
在myday02中的myserver包中建立一個(gè)RedTest.java文件(Servler),內(nèi)容為:
package myserver;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class RedTest extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 302 + location 實(shí)現(xiàn)請(qǐng)求重定向.
* 應(yīng)用場(chǎng)景:一般用來(lái)做登陸.
* 特點(diǎn):1.會(huì)發(fā)生二次請(qǐng)求.
* ? 2.瀏覽器地址欄會(huì)發(fā)生變化.
*/
response.setStatus(302);
response.setHeader("location", "/myday02/get_post.html");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
開(kāi)啟tomcat,在瀏覽器中輸入:http://localhost/myday02/servlet/RedTest
其自動(dòng)變成:http://localhost/myday02/get_post.html
此為重定向成功.
?00:00:00.000 0.018 139 GET 302 Redirect to http://localhost/myday02/get_post.html http://localhost/myday02/servlet/RedTest
?00:00:00.018 0.028 0 GET (Cache) text/html http://localhost/myday02/get_post.html
Refresh刷新
重定向:
示例代碼:
在myday02中的myserver包中建立一個(gè)RefreshServelet.java文件(Servler),內(nèi)容為:
package myserver;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class RefreshServelet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//refresh頭實(shí)現(xiàn)定時(shí)刷新到某個(gè)頁(yè)面.
//一般可用作定時(shí)刷新,
//應(yīng)用:股票,聊天室,
// response.setHeader("Refresh", "2;url=http://www.baidu.com");
response.setHeader("Refresh", "1");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
gzip壓縮
壓縮:
把conf/server.xml中的第72行那段數(shù)據(jù)改為:
?<Connector port="80" protocol="HTTP/1.1"
? ? ? ? ? ? ? ?connectionTimeout="20000"
? ? ? ? ? ? ? ?redirectPort="8443" compressableMimeType="text/html,text/xml,text/plain" compression="on" />
壓縮前: 00:00:00.000 0.038 11599 GET 200 text/html;charset=ISO-8859-1 http://localhost/
壓縮后: 00:00:00.000 1.401 2296 GET 200 text/html;charset=ISO-8859-1 http://localhost/
注意:把server.xml修改前是壓縮前,修改后把緩存清空后再訪問(wèn)才是壓縮后的,
Tocmcat默認(rèn)的緩存策略
If-Modified-Since,Last-Modified結(jié)合304實(shí)現(xiàn)。
第一次訪問(wèn)某個(gè)頁(yè)面時(shí),服務(wù)器將數(shù)據(jù)發(fā)給客戶端,并在客戶端生成一個(gè)緩存,同時(shí)記下本頁(yè)面在服務(wù)器端被修改的時(shí)間:
Last-Modified: Sun, 05 May 2013 00:55:08 GMT 并發(fā)給客戶端,
當(dāng)客戶端再次訪問(wèn)同一個(gè)頁(yè)面時(shí),將If-Modified-Since發(fā)給服務(wù)器,服務(wù)器讀取If-Modified-Since中的時(shí)間,
If-Modified-Since: Sun, 05 May 2013 00:55:08 GMT
將此數(shù)據(jù)中的時(shí)間與Last-Modified中的時(shí)間作對(duì)比,如果相同,則說(shuō)明這個(gè)頁(yè)面自上次發(fā)給此客戶端后一直沒(méi)被修改,則服務(wù)器不再將數(shù)據(jù)發(fā)給客戶端,
讓客戶端從自己的緩存中讀取數(shù)據(jù),
如果不同,則將數(shù)據(jù)發(fā)給客戶端,并在客戶端生成緩存,同時(shí)記下時(shí)間:Last-Modified,將本服務(wù)器中的這個(gè)頁(yè)面最后一次修改的時(shí)間發(fā)給客戶端,
這樣既能節(jié)約帶寬,又能提高響應(yīng)時(shí)間。
Tomcat禁用緩存
Expires:-1
Cache-Control:no-cache
Pragma:no-cache
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
