1. 程式人生 > >JavaWeb8---GET請求, POST請求, 響應

JavaWeb8---GET請求, POST請求, 響應

1.Web應用

靜態網站 : 

    * 在webapps目錄下建立一個目錄 (命名不包含中文和空格) , 這個目錄稱之為專案目錄. 

    * 在專案目錄下建立HTML檔案

動態網站 :

  • 在webapps目錄下建立一個目錄
  • 在專案目錄下建立如下內容 :
    • WEB-INF目錄
    • 在WEB-INF目錄下建立web.xml檔案
    • 建立靜態或動態頁面

2.配置外部應用

原來我們的專案在webapps下, 現在放在外面, 有兩種方式 :

  • conf/server.xml : 開啟server.xml檔案, 找到元素, 在其中新增元素, 程式碼如下 :

  • conf/catalina/localhost : 在該目錄下建立web.xml , 在該檔案中編寫元素 , 程式碼如下:

3.HTTP協議概述

GET請求 :

GET /JavaWeb282/index.jsp HTTP/1.1
Accept: */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
Accept-Encoding: gzip, deflate
Host: 192.168.70.1
Connection: Keep-Alive
Cookie: JSESSIONID=E0D100237F0A36810BDA4F202D893242

請求協議的格式 :

請求行
多個請求頭資訊 : 頭名稱:頭值
空行
請求體 (get請求沒有請求體, 但是必須有空行)

響應 :

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 649
Date: Sat, 07 Apr 2018 06:06:57 GMT

響應協議的格式:

響應行(協議/版本 狀態碼 狀態碼的解釋)
    狀態碼: 2開頭: 成功; 
            3開頭: 轉發; 
            4開頭: 客戶端錯誤;  404: 檔案未找到
            5開頭: 伺服器錯誤;  500: 伺服器內部錯誤
響應頭 (key/value格式)
    Content-Type  : 響應內容的MIME型別, MIME是網路傳輸的一種媒體
空行
響應正文



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="http://192.168.70.1:80/JavaWeb282/">

    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>

  <body>
    This is my JSP page. <br>
    <h1>dong</h1>

  </body>
</html>

4.POST請求中HTTP請求協議內容

POST /JavaWeb282/index.jsp HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://192.168.70.1/JavaWeb282/login.html
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: 192.168.70.1
Content-Length: 34
Connection: Keep-Alive
Cache-Control: no-cache

username=dongshuai&password=123456

username=dongshuai&password=123456

正文(體), 傳送給伺服器的只有一行字串, 多個引數中間用&隔開

Content-Type: application/x-www-form-urlencoded

表示表單中的資料會自動使用URL來編碼!  (上傳的時候會修改Content-Type)

如果輸入框寫的是中文

username=%E8%91%A3%E5%B8%85&password=123456

位元組+128 --> 轉換成16進位制-->新增%字首

5.個別請求頭介紹

5.2 響應碼

  • 200 : 請求成功
  • 404 : 請求的資源沒找到
  • 500 : 請求的資源找到了, 但伺服器出現了內部錯誤
  • 302 : 重定向, 當響應碼為302時, 表示伺服器要求瀏覽器重新發送一個請求, 伺服器會發送一個響應頭 Location, 它制定了新請求的URL地址
  • 304 : 當用戶第一次請求index.html時, 在請求中包含一個名為Last-Modified響應頭, 這個頭說明了index.html的最後修改時間, 瀏覽器會把index.html內容, 以及最後響應時間快取下來. 當用戶第二次請求index.html時, 在請求中包含一個名為If-Modified-Since請求頭, 它的值就是第一次請求時伺服器通過Last-Modified響應頭髮送給瀏覽器的值, 即index.html的最後修改時間, If-Modified-Since請求頭就是告訴伺服器, 將index.html的修改時間和伺服器上的修改時間做對比, 如果相同, 伺服器會發響應碼304, 不會有響應正文, 表示index.html與瀏覽器上次快取的相同, 無需再次傳送, 瀏覽器可以顯示自己的快取頁面, 如果比對不同, name說明index.html已經做了修改, 伺服器會響應200.
    響應頭
    * Last-Modified : 最後的修改時間
    請求頭
    * If-Modified-Since : 把上次請求index.html的最後修改時間還給伺服器

5.3 其他響應頭

告訴瀏覽器不要快取的響應頭:

  • Expires:-1;
  • Cache-Control: no-cache;
  • Pragma: no-cache;

自動重新整理響應頭:

5.4 HTML中指定響應頭

在HTML頁面中可以使用<meta http-equiv="" content=""> 來指定響應頭.

例如: 在index.html中給出

<meta http-equiv="Refresh" content="3;url=http://www.doni.net">

表示瀏覽器顯示index.html頁面3秒後, 自動跳轉到http://www.dongi.net