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.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
即有四次訪問:一個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.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包中建立一個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.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修改前是壓縮前,修改后把緩存清空后再訪問才是壓縮后的,
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
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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