javaEE--Http協(xié)議

1. 什么是http協(xié)議

http協(xié)議: 對瀏覽器客戶端 和? 服務(wù)器端 之間數(shù)據(jù)傳輸?shù)母袷揭?guī)范

1.2 查看http協(xié)議的工具

1)使用火狐的firebug插件(右鍵->firebug->網(wǎng)絡(luò))

2)使用谷歌的“審查元素”

1.3 http協(xié)議內(nèi)容

GET /day09/hello HTTP/1.1? ? ? ? ? ? ? -請求行

Host: localhost:8080? ? ? ? ? ? ? ? ? ? --請求頭(多個(gè)key-value對象)

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Connection: keep-alive

--一個(gè)空行

name=eric&password=123456? ? ? ? ? ? --(可選)實(shí)體內(nèi)容


2.1 請求行 ? ? ? ? ? ? ? GET /day09/hello HTTP/1.1

#http協(xié)議版本(一次連接就是一個(gè)三次握手,效率低下)

http1.0:當(dāng)前瀏覽器客戶端與服務(wù)器端建立連接之后,只能發(fā)送一次請求,一次請求之后連接關(guān)閉。

http1.1:當(dāng)前瀏覽器客戶端與服務(wù)器端建立連接之后,可以在一次連接中發(fā)送多次請求。(基本都使用1.1)

#請求資源

URL:? 統(tǒng)一資源定位符。http://localhost:8080/day09/testImg.html。只能定位互聯(lián)網(wǎng)資源。是URI 的子集。

URI: 統(tǒng)一資源標(biāo)記符。/day09/hello。用于標(biāo)記任何資源??梢允潜镜匚募到y(tǒng),局域網(wǎng)的資源(//192.168.14.10/myweb/index.html), 可以是互聯(lián)網(wǎng)。

#請求方式

常用的請求方式: GET? 和 POST

表單提交:

<form action=“提交地址” method(method 提交方式)=“GET/POST”></form>

sGET? vs? POST 區(qū)別

1)get方式提交

a)地址欄(URI)會跟上參數(shù)數(shù)據(jù)。以?開頭,多個(gè)參數(shù)之間以&分割。

GET /day09/testMethod.html?name=eric&password=123456 HTTP/1.1

b)GET提交參數(shù)數(shù)據(jù)有限制,不超過1KB。

c)GET方式不適合提交敏感密碼。

d)注意: 瀏覽器直接訪問的請求,默認(rèn)提交方式是GET方式

2)POST方式提交

a)參數(shù)不會跟著URI后面。參數(shù)而是跟在請求的實(shí)體內(nèi)容中。沒有?開頭,多個(gè)參數(shù)之間以&分割。

b)POST提交的參數(shù)數(shù)據(jù)沒有限制。

c)POST方式提交敏感數(shù)據(jù)。

?實(shí)體內(nèi)容 ?:只有POST提交的參數(shù)會放到實(shí)體內(nèi)容中

3.2 請求頭

Accept: text/html,image/*? ? ? -- 瀏覽器接受的數(shù)據(jù)類型

Accept-Charset: ISO-8859-1? ? -- 瀏覽器接受的編碼格式

Accept-Encoding: gzip,compress? --瀏覽器接受的數(shù)據(jù)壓縮格式

Accept-Language: en-us,zh-? ? ? --瀏覽器接受的語言

Host: www.it315.org:80? ? ? ? ? --(必須的)當(dāng)前請求訪問的目標(biāo)地址(主機(jī):端口)

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT? --瀏覽器最后的緩存時(shí)間

Referer: http://www.it315.org/index.jsp? ? ? -- 當(dāng)前請求來自于哪里

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)? --瀏覽器類型

Cookie:name=eric? ? ? ? ? ? ? ? ? ? -- 瀏覽器保存的cookie信息

Connection: close/Keep-Alive? ? ? ? ? ? -- 瀏覽器跟服務(wù)器連接狀態(tài)。close: 連接關(guān)閉? keep-alive:保存連接。

Date: Tue, 11 Jul 2000 18:23:51 GMT? ? ? -- 請求發(fā)出的時(shí)間

3.4 HttpServletRequest對象

HttpServletRequest對象作用是用于獲取請求數(shù)據(jù)。

核心的API:

請求行:

request.getMethod();? 請求方式

request.getRequetURI()? / request.getRequetURL()? 請求資源

request.getProtocol()? 請求http協(xié)議版本

請求頭

request.getHeader("名稱")? 根據(jù)請求頭獲取請求值

request.getHeaderNames()? ? 獲取所有的請求頭名稱

實(shí)體內(nèi)容:

request.getInputStream()? 獲取實(shí)體內(nèi)容數(shù)據(jù)


3.8 傳遞的請求參數(shù)如何獲取

GET方式: 參數(shù)放在URI后面

POST方式: 參數(shù)放在實(shí)體內(nèi)容中

獲取GET方式參數(shù):

request.getQueryString();

獲取POST方式參數(shù):

request.getInputStream();

問題:但是以上兩種不通用,而且獲取到的參數(shù)還需要進(jìn)一步地解析。

所以可以使用統(tǒng)一方便的獲取參數(shù)的方式:

核心的API:

request.getParameter("參數(shù)名");? 根據(jù)參數(shù)名獲取參數(shù)值(注意,只能獲取一個(gè)值的參數(shù))

request.getParameterValue("參數(shù)名“);根據(jù)參數(shù)名獲取參數(shù)值(可以獲取多個(gè)值的參數(shù))

request.getParameterNames();? 獲取所有參數(shù)名稱列表

3.9 請求參數(shù)編碼問題

修改POST方式參數(shù)編碼:

request.setCharacterEncoding("utf-8");

修改GET方式參數(shù)編碼:

手動(dòng)解碼:String name = new String(name.getBytes("iso-8859-1"),"utf-8");

4 Http響應(yīng)

HTTP/1.1 200 OK? ? ? ? ? ? ? ? --響應(yīng)行

Server: Apache-Coyote/1.1? ? ? ? --響應(yīng)頭(key-vaule)

Content-Length: 24

Date: Fri, 30 Jan 2015 01:54:57 GMT

--一個(gè)空行

this is hello servlet!!!? ? ? ? ? ? ? ? ? --實(shí)體內(nèi)容

#http協(xié)議版本

#狀態(tài)碼: 服務(wù)器處理請求的結(jié)果(狀態(tài))

常見的狀態(tài):

200 :? 表示請求處理完成并完美返回

302:? 表示請求需要進(jìn)一步細(xì)化。 404:? 表示客戶訪問的資源找不到。

500:? 表示服務(wù)器的資源發(fā)送錯(cuò)誤。(服務(wù)器內(nèi)部錯(cuò)誤)

4.2 常見的響應(yīng)頭

Location: http://www.it315.org/index.jsp? -表示重定向的地址,該頭和302的狀態(tài)碼一起使用。

Server:apache tomcat? ? ? ? ? ? ? ? ---表示服務(wù)器的類型

Content-Encoding: gzip? ? ? ? ? ? ? ? -- 表示服務(wù)器發(fā)送給瀏覽器的數(shù)據(jù)壓縮類型

Content-Length: 80? ? ? ? ? ? ? ? ? ? --表示服務(wù)器發(fā)送給瀏覽器的數(shù)據(jù)長度

Content-Language: zh-cn? ? ? ? ? ? ? --表示服務(wù)器支持的語言

Content-Type: text/html; charset=GB2312? --表示服務(wù)器發(fā)送給瀏覽器的數(shù)據(jù)類型及內(nèi)容編碼

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT? --表示服務(wù)器資源的最后修改時(shí)間

Refresh: 1;url=http://www.it315.org? ? --表示定時(shí)刷新

Content-Disposition: attachment; filename=aaa.zip --表示告訴瀏覽器以下載方式打開資源(下載文件時(shí)用到)

Transfer-Encoding: chunked

Set-Cookie:SS=Q0=5Lb_nQ; path=/search? --表示服務(wù)器發(fā)送給瀏覽器的cookie信息(會話管理用到)

Expires: -1? ? ? ? ? ? ? ? ? ? ? ? ? --表示通知瀏覽器不進(jìn)行緩存

Cache-Control: no-cache

Pragma: no-cache

Connection: close/Keep-Alive? ? ? ? ? --表示服務(wù)器和瀏覽器的連接狀態(tài)。close:關(guān)閉連接 keep-alive:保存連接

4.3 HttpServletResponse對象

HttpServletResponse對象修改響應(yīng)信息:

響應(yīng)行:

response.setStatus()? 設(shè)置狀態(tài)碼

響應(yīng)頭:

response.setHeader("name","value")? 設(shè)置響應(yīng)頭

實(shí)體內(nèi)容:

response.getWriter().writer();? 發(fā)送字符實(shí)體內(nèi)容

response.getOutputStream().writer()? 發(fā)送字節(jié)實(shí)體內(nèi)容

重點(diǎn):

使用HttpServletRequest對象: 獲取請求數(shù)據(jù)

使用HttpServletResponse對象: 設(shè)置響應(yīng)數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,637評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,555評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,900評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,629評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,976評論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評論 3 448
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,139評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,686評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,411評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,641評論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,820評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,233評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,567評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,362評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,604評論 2 380

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,828評論 18 139
  • 深入淺出HTTP協(xié)議(WEB開發(fā)和面試必備) 1.基礎(chǔ)概念篇 a.簡介 HTTP是Hyper Text Trans...
    半世韶華憶闌珊閱讀 1,236評論 0 7
  • 本文整理自MIN飛翔博客 [1] 1. 概念 協(xié)議是指計(jì)算機(jī)通信網(wǎng)絡(luò)中兩臺計(jì)算機(jī)之間進(jìn)行通信所必須共同遵守的規(guī)定或...
    HoyaWhite閱讀 2,703評論 2 20
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,410評論 6 152
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 11,075評論 6 13