telnet
一:打開telnet服務:控制面板------> 程序和功能---> 打開或關閉windows功能---> 選中 Telnet客戶端--->確定
二:測試telnet服務是否已經打開:
C:\Users\Administrator>telnet -?
telnet [-a][-e escape char][-f log file][-l user][-t term][host [port]]
-a 企圖自動登錄。除了用當前已登陸的用戶名以外,與 -l 選項相同。
-e 跳過字符來進入 telnet 客戶端提示。
-f 客戶端登錄的文件名
-l 指定遠程系統上登錄用的用戶名稱。
要求遠程系統支持 TELNET ENVIRON 選項。
-t 指定終端類型。
支持的終端類型僅是: vt100, vt52, ansi 和 vtnt。
host 指定要連接的遠程計算機的主機名或 IP 地址。
port 指定端口號或服務名。
三:使用:
先把tomcat 打開
C:\Users\Administrator>telnet localhost 80
輸入的字符看不到,按ctrl + ]即可
把下面兩行代碼粘進入,按兩次enter後即可將apache主頁打印出來.
GET / HTTP/1.1
Host:
將httpWathc professional啓用
internet屬性-->程序-->管理加載項-->將httpWathc professional啓用修改html編輯器
windows-->General-->Editors-->File Association
File types:--->*.html
Associated editors:-->MyEclispe HTML Editor (locked by 'html' content type)
default ok.
訪問http server的次數
例題:一個web頁面中,使用img標籤引用了三個圖片,當客戶端訪問服務器中的這個web頁面時,客戶端
總共訪問幾次服務器.即向服務器發送了幾次Http請求:
新建一個web project
在WebRoot中加入三個圖片
在WebRoot中建立一個img.html文件,關鍵內容爲:
<body>
<img src="1.jpg">
<img src="3.jpg">
<img src="5.jpg">
</body>
將此工程發佈出去,在IE瀏覽器中打開HttpWatch professional,Record
輸入:http://localhost/myday02/img.html回車
結果:
00:00:00.000 0.013122 GET304 text/htmlhttp://localhost/myday02/img.html
00:00:00.017 0.007125 GET304 image/jpeghttp://localhost/myday02/1.jpg
00:00:00.018 0.014125 GET304 image/jpeghttp://localhost/myday02/3.jpg
00:00:00.018 0.039125 GET304 image/jpeghttp://localhost/myday02/5.jpg
即有四次訪問:一個html,三次圖片.
Http請求
一:概述:客戶端連上服務器後,向服務器請求某個web資源,稱之爲客戶端向服務端發送了一個HTTP請求.一個
完整的Http請求包括如下內容:
一個請求行,若干個請求頭,以及實體內容.
請求行:請求行用於描述客戶端的請求方式.請求的資源名稱,以及使用的HTTP協議版本號
多個請求行:消息頭用於描述客戶端請求哪臺主機,以及客戶端的一些環境信息等.
二:共有七種請求方式:POST,GET,HEAD,OPTIONS,DELETE,TRACE,PUT
常用的有GET,POST,默認的是get請求.可通過更改表單的提交方式實現.
三:不管post還是get,都用於向服務器請求某個web資源,這兩種方式的區別主要表現在數據傳遞上:
1.get方式:可以在請求的url地址後以?的形式帶上交給服務器的數據.多個數據之間以&進行分隔:
如:
1.1: get方式的特點:在URL地址後附帶的參數是有限制的,其數據容量通常不能超過1K.
2.POST方式:可以在請求的實體內容中向服務器發送數據,
2.1: post方式的特點:傳送的數據量無限制.
---------------------------------------------------------------------------------
示例演示區別:
在WebRoot中建立一個img.html文件,關鍵內容爲:
<body>
<h2>get方式的請求</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方式的請求</h2>
<form action="" method="post">
用戶名:<input type="text" name="name">
密 碼:<input type="password" name = "password">
<input type = "submit" value = "提交">
</form>
</body>
啓動tomcat,在瀏覽器中輸入:http://localhost/myday02/get_post.html
演示get:
結果一:
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)
結果二:瀏覽器的地址欄內容變爲:http://localhost/myday02/get_post.html?name=abc&password=123
在瀏覽器中輸入:http://localhost/myday02/get_post.html
演示post:
結果一:
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
結果二:瀏覽器的地址欄內容依然爲:http://localhost/myday02/get_post.html
Http請求頭詳解
Accept: text/html,image/* 用於 告訴服務器,客戶端支持的數據類型.
Accept-Charset: UTF-8 用於 告訴服務器,客戶端支持的字符編碼
Accept-Encoding: gzip,compress 告訴服務器客戶機支持的數據壓縮格式. (重點)
Accept-Language: en-us,zh-cn 用戶告訴服務器,客戶機接受語言.
Host: www.it315.org:80 告訴服務器要訪問那個主機
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT 這個用來實現和緩存相關的, 跟last-modified. (重點)
Referer: http://www.it315.org/index.jsp 用來實現防盜鏈 (重點 )
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) 客戶端的 類型.
Connection: close/Keep-Alive 用於連上服務器之後, 是否繼續保持連接.
Http響應
一:概述:一個Http響應代表服務器向客戶端回送的數據,它包括:一個狀態行,若干消息頭,實體內容.
響應行:狀態行用於描述服務器對請求的處理結果
多個消息頭:用於描述服務器的基本信息,以及數據的描述,服務呂通過這些數據的描述信息,
可以通知客戶端如何處理等一會它回送來的數據.
一個空行:
實體內容:代表服務器向客戶端回送的數據.
二:狀態行:
格式:HTTP版本號 狀態碼 原因敘述<CRLF>
舉例:HTTP/1.1 200 ok
狀態碼用於表示服務器對請求的處理結果,它是一個三位的十進制數.響應分爲五類.
重定向Redirect
/servlet/RedTest
重定向:
示例代碼:
在myday02中的myserver包中建立一個RedTest.java文件(Servler),內容爲:
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 實現請求重定向.
* 應用場景:一般用來做登陸.
* 特點:1.會發生二次請求.
* 2.瀏覽器地址欄會發生變化.
*/
response.setStatus(302);
response.setHeader("location", "/myday02/get_post.html");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
開啓tomcat,在瀏覽器中輸入:http://localhost/myday02/servlet/RedTest
其自動變成:http://localhost/myday02/get_post.html
此爲重定向成功.
00:00:00.000 0.018139 GET302 Redirect to http://localhost/myday02/get_post.htmlhttp://localhost/myday02/servlet/RedTest
00:00:00.018 0.0280 GET (Cache) text/htmlhttp://localhost/myday02/get_post.html
Refresh刷新
重定向:示例代碼:
在myday02中的myserver包中建立一個RefreshServelet.java文件(Servler),內容爲:
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頭實現定時刷新到某個頁面.
//一般可用作定時刷新,
//應用:股票,聊天室,
// 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行那段數據改爲:
<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.03811599 GET200 text/html;charset=ISO-8859-1http://localhost/
壓縮後: 00:00:00.000 1.4012296 GET200 text/html;charset=ISO-8859-1http://localhost/
注意:把server.xml修改前是壓縮前,修改後把緩存清空後再訪問纔是壓縮後的,
Tocmcat默認的緩存策略
If-Modified-Since,Last-Modified結合304實現。第一次訪問某個頁面時,服務器將數據發給客戶端,並在客戶端生成一個緩存,同時記下本頁面在服務器端被修改的時間:
Last-Modified: Sun, 05 May 2013 00:55:08 GMT 併發給客戶端,
當客戶端再次訪問同一個頁面時,將If-Modified-Since發給服務器,服務器讀取If-Modified-Since中的時間,
If-Modified-Since: Sun, 05 May 2013 00:55:08 GMT
將此數據中的時間與Last-Modified中的時間作對比,如果相同,則說明這個頁面自上次發給此客戶端後一直沒被修改,則服務器不再將數據發給客戶端,
讓客戶端從自己的緩存中讀取數據,
如果不同,則將數據發給客戶端,並在客戶端生成緩存,同時記下時間:Last-Modified,將本服務器中的這個頁面最後一次修改的時間發給客戶端,
這樣既能節約帶寬,又能提高響應時間。
Tomcat禁用緩存
Expires:-1
Cache-Control:no-cache
Pragma:no-cache