日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HTTP与HttpServlet

發(fā)布時間:2024/4/15 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP与HttpServlet 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
(1)、HTTP協(xié)議

Web瀏覽器和服務(wù)器通過HTTP協(xié)議在Internet上發(fā)送和接收消息。HTTP是一種基于請求/響應(yīng)模式的協(xié)議。客戶端發(fā)送一個請求,服務(wù)器端返回對該請求響應(yīng)。

HTTP使用可靠的TCP連接,默認(rèn)端口是80

(2)、HTTP請求

HTTP請求由3個部分構(gòu)成,分別是:

l? 請求方法URI協(xié)議/版本

l? 請求頭(Request Header)

l? 請求正文

下面是一個HTTP請求的例子:

GET/sample.jspHTTP/1.1

?

Accept:image/gif.image/jpeg,*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)

Accept-Encoding:gzip,deflate

?

username=ssss&password=1234

?

1>、請求方法URI協(xié)議/版本

以上代碼中“GET”代表請求方法,“/sample.jsp”表示URI,“HTTP/1.1”代表協(xié)議和協(xié)議的版本。

根據(jù)HTTP標(biāo)準(zhǔn),HTTP請求可以使用多種請求方法。例如:HTTP1.1支持7種請求方法:GETPOSTHEADOPTIONSPUTDELETETARCE。在Internet應(yīng)用中,最常用的方法是GETPOST

URL完整地指定了要訪問的網(wǎng)絡(luò)資源,通常只要給出相對于服務(wù)器的根目錄的相對目錄即可,因此總是以“/”開頭,最后,協(xié)議版本聲明了通信過程中使用HTTP的版本。

2>、請求頭(Request Header)

請求頭包含許多有關(guān)的客戶端環(huán)境和請求正文的有用信息。例如,請求頭可以聲明瀏覽器所用的語言,請求正文的長度等。

Accept:image/gif.image/jpeg.*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)

Accept-Encoding:gzip,deflate.

3>、請求正文

請求頭和請求正文之間是一個空行,這個行非常重要,它表示請求頭已經(jīng)結(jié)束,接下來的是請求正文。請求正文中可以包含客戶提交的查詢字符串信息:

username=rrrro&password=1234

在以上的例子的HTTP請求中,請求的正文只有一行內(nèi)容。當(dāng)然,在實際應(yīng)用中,HTTP請求正文可以包含更多的內(nèi)容。

HTTP響應(yīng)

?

HTTP請求相似,HTTP響應(yīng)也由3個部分構(gòu)成,分別是:

l? 協(xié)議狀態(tài)版本代碼描述

l? 響應(yīng)頭(Response Header)

l? 響應(yīng)正文

下面是一個HTTP響應(yīng)的例子:

HTTP/1.1 200 OK

?

Server:Apache Tomcat/5.0.12

Date:Mon,6Oct2003 13:23:42 GMT

Content-Length:112

?

<html>
<head>

<title>HTTP響應(yīng)示例<title>

</head>

<body>

Hello HTTP!

</body>

</html>

1>、協(xié)議 狀態(tài)代碼描述

HTTP響應(yīng)的第一行類似于HTTP請求的第一行,它表示通信所用的協(xié)議是HTTP1.1服務(wù)器已經(jīng)成功的處理了客戶端發(fā)出的請求(200表示成功):

HTTP/1.1 200 OK

2>、響應(yīng)頭(Response Header)

響應(yīng)頭也和請求頭一樣包含許多有用的信息,例如服務(wù)器類型、日期時間、內(nèi)容類型和長度等:

  Server:Apache Tomcat/5.0.12

Date:Mon,6Oct2003 13:13:33 GMT

Content-Type:text/html

Last-Moified:Mon,6 Oct 2003 13:23:42 GMT

Content-Length:112

3>、響應(yīng)正文

響應(yīng)正文就是服務(wù)器返回的HTML頁面:

  <html>
<head>

<title>HTTP響應(yīng)示例<title>

</head>

<body>

Hello HTTP!

</body>

</html>

響應(yīng)頭和正文之間也必須用空行分隔。  

(3)HTTPServlet的功能

在了解具體的HTTP協(xié)議規(guī)范后,可以更好地理解HttpServlet的作用,它能夠根據(jù)客戶發(fā)出HTTP請求,生成相應(yīng)的HTTP響應(yīng)結(jié)果。HttpServlet首先必須讀取HTTP請求的內(nèi)容。Servlet容器負(fù)責(zé)創(chuàng)建HttpRequest對象,并把HTTP請求信息封裝到HttpRequest對象中,這大大簡化了HttpServlet解析請求數(shù)據(jù)的工作量。如果沒有HttpRequest,HttpServlet只能直接處理Web客戶發(fā)出的原始的字符數(shù)據(jù),有了HttpRequest后,只要調(diào)用HttpServletRequest的相關(guān)方法,就可以方便地讀取HTTP請求中任何一部分信息,HttpServletRequest中讀取HTTP請求信息的常用方法參見下表

?

HttpServletRequest對象的常用方法

方法

描述

getCookie()

返回HTTP請求的Cookies

getHeader(String name)

返回參數(shù)指定的HTTP請求的Header數(shù)據(jù)

getRequestURI()

返回HTTP請求的URI

getQueryString()

返回HTTP請求數(shù)據(jù)中的查詢字符串

getMethod()

返回HTTP請求方法

Servlet容器還向HttpServlet提供了HttpServletResponse對象,HttpServlet可以通過它來生成HTTP響應(yīng)的每一部分內(nèi)容,HttpServletResponse提供了生成響應(yīng)數(shù)據(jù)Header的方法

?

HttpServletResponse對象的常用方法

方法

描述

addCookie(Cookie cookie)

HTTP響應(yīng)中加入Cookie

setHeader(String name,String value)

設(shè)置HTTP響應(yīng)的Header,如果參數(shù)name對應(yīng)的Header已經(jīng)存在,則覆蓋原來的Header數(shù)據(jù)

addHeader(String name,String value)

HTTP響應(yīng)中加入Header

?

(4)Servlet容器響應(yīng)Web客戶請求流程的UML時序圖

在時序圖中,從對象A到對象B的箭頭,表示AB發(fā)送一條消息,B接收到消息后,將執(zhí)行相關(guān)的操作,因此也可理解為A調(diào)用B的方法。例如在UML時序圖步驟5,表示Servlet容器調(diào)用HttpServletservice()方法,對于步驟2,箭頭的起點和終點都指向Servlet容器,表示Servlet容器調(diào)用自身的方法來解析HTTP請求信息。

1.????? Web客戶向Servlet容器發(fā)出HTTP請求;

2.????? Servlet容器解析WebHTTP請求;

3.????? Servlet容器創(chuàng)建一個HttpRequest對象,在這個對象中封裝了HTTP請求信息;

4.????? Servlet容器創(chuàng)建一個HttpResponse對象;

5.????? Servlet容器調(diào)用HttpServletservice方法,把HttpRequestHttpResponse對象為Service方法的參數(shù)傳給HttpServlet對象;

6.????? HttpServlet調(diào)用HttpRequest的有關(guān)方法,獲取HTTP請求信息;

7.????? HttpServlet調(diào)用HttpResponse的有關(guān)方法,生成響應(yīng)數(shù)據(jù);

8.?????? Servlet容器把HttpServlet的響應(yīng)結(jié)果傳給Web客戶

--------------------

++轉(zhuǎn)載

轉(zhuǎn)載于:https://www.cnblogs.com/SamFlynn/p/4461463.html

總結(jié)

以上是生活随笔為你收集整理的HTTP与HttpServlet的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。