1. 認(rèn)識(shí)"狀態(tài)碼"(status code)
表示了這次請(qǐng)求對(duì)應(yīng)的響應(yīng),是什么樣的狀態(tài)
(成功,失敗,其他的情況,對(duì)應(yīng)的原因…)
這里的狀態(tài)碼非常多,我們需要了解里面常見(jiàn)的狀態(tài)碼
2XX 都表示 成功
- 200 最常見(jiàn)
3xx 表示 重定向
請(qǐng)求中訪問(wèn)的是 A 這樣的地址,響應(yīng)返回了一個(gè)重定向報(bào)文,告訴你應(yīng)該要訪問(wèn) B 地址
很多時(shí)候,頁(yè)面跳轉(zhuǎn),就可以通過(guò)重定向來(lái)實(shí)現(xiàn)
還有的時(shí)候,摸個(gè)網(wǎng)站,服務(wù)器遷移了(IP/域名改變了)
就可以給舊的地址掛一個(gè)重定向響應(yīng),訪問(wèn)舊地址的用戶就自定跳轉(zhuǎn)到新的地址
重定向的響應(yīng)報(bào)文中,會(huì)帶有 Location 字段
描述出當(dāng)前要跳到哪個(gè)新的地址
- 301:永久重定向
- 302:臨時(shí)重定向
4xx 表示請(qǐng)求錯(cuò)誤
- 404 Not Found
請(qǐng)求中訪問(wèn)的資源,在服務(wù)器上不存在
404 這個(gè)狀態(tài)碼表示的是資源不存在
同時(shí)在 body 中也是可以返回一個(gè)指定的錯(cuò)誤頁(yè)面的
很多網(wǎng)站會(huì)把這個(gè)錯(cuò)誤頁(yè)面做的很豐富 - 403 Fobidden
表示訪問(wèn)的資源沒(méi)有權(quán)限 - 418 I am a teapot(杯具)
418 狀態(tài)碼是 HTTP RFC 文檔中專門(mén)規(guī)定的一個(gè)狀態(tài)碼
這個(gè)狀態(tài)碼沒(méi)有實(shí)際的意義,只是“開(kāi)個(gè)玩笑”,稱為彩蛋
不過(guò)在以后盡量不要搞
2. 通過(guò) form 表單構(gòu)造 HTTP 請(qǐng)求
如何讓客戶端構(gòu)造一個(gè) HTTP 請(qǐng)求?
- 直接在瀏覽器 地址輸入 url,此時(shí)構(gòu)造了一個(gè) GET 請(qǐng)求
- html 中,一些特殊的 html 標(biāo)簽,可能會(huì)觸發(fā) GET 請(qǐng)求
(img,a,link,script) - 通過(guò) form 表單來(lái)觸發(fā) GET/POST 請(qǐng)求
form 本質(zhì)也是一個(gè) HTML 標(biāo)簽
<html>
<head>
</head>
<body>
hello world
</body>
</html>
- 為開(kāi)始標(biāo)簽
- 為結(jié)束標(biāo)簽
- 中為標(biāo)簽的內(nèi)容(還可以嵌套其他結(jié)構(gòu))
- 放的是頁(yè)面顯示的內(nèi)容
瀏覽器會(huì)與 html 來(lái)書(shū)有一定的魯棒性
即使給出了一個(gè)錯(cuò)誤的(不規(guī)范)的 html 代碼,也是可以進(jìn)行解析并顯示的(瀏覽器會(huì)盡可能的進(jìn)行顯示)
直接輸入 ! + table 就可以生成基本的 html 代碼模版
form 表單如何編寫(xiě)
用到form 標(biāo)簽
開(kāi)始標(biāo)簽中,可以寫(xiě)屬性,屬性是一些“鍵值對(duì)”
可以有多個(gè)屬性,多個(gè)鍵值對(duì)之間使用 空格 來(lái)分割,鍵 和 值之間使用 = 分割
鍵不需要有引號(hào),值需要有雙引號(hào)
action 后面表示要訪問(wèn)請(qǐng)求的 url 路徑是什么
method 屬性描述了當(dāng)前要構(gòu)造的請(qǐng)求是 get 還是 post
from 只支持 get 和 pose,不支持其他的 http 方法
輸入框中的內(nèi)容就會(huì)被構(gòu)造成 http 請(qǐng)求的 query string
(query string 還鍵值對(duì),其中 key 就是 input 輸入框的 name 屬性,value 就是輸入框用戶輸入的內(nèi)容)
submit 是按鈕
這里 value 里面的內(nèi)容就是按鈕上顯示的文本
這里 input 輸入框中的內(nèi)容已經(jīng)展示了出來(lái)
但是點(diǎn)擊之后會(huì)出現(xiàn) 404,要是先要有一個(gè)正確的響應(yīng),往往需要服務(wù)器這邊的代碼配合
將里面的 get 改成 post 之后
我們可以看最后一行:
對(duì)于 GET 來(lái)說(shuō),這幾個(gè)鍵值對(duì),是在 url 中
對(duì)于 POST 來(lái)說(shuō),這幾個(gè)鍵值對(duì),在 body 中
3. 通過(guò) ajax 構(gòu)造 HTTP 請(qǐng)求
由于,form 有一些缺陷,只支持 GET 和 POST,不支持其他方法,而且 form 會(huì)觸發(fā)頁(yè)面跳轉(zhuǎn)(有的時(shí)候不想跳轉(zhuǎn))
這個(gè)時(shí)候我們就引入了 ajax
ajax,通過(guò) js 提供的 api 來(lái)構(gòu)造 http 請(qǐng)求,同樣可以使用 js 靈活處理,想要怎么處理都行,或者想跳轉(zhuǎn)不跳轉(zhuǎn)也都行
這樣就給前端代碼,帶來(lái)了很多的可操作空間
現(xiàn)在的網(wǎng)站,主體都是通過(guò) ajax 的方式來(lái)進(jìn)行交互
瀏覽器原生提供了 ajax 的 api,原生的 api 不好用
所以這里我們使用第三方庫(kù),jquery
(1)引入 jquery 庫(kù)(第三方庫(kù),是需要額外下載引入的)
前端引入第三方庫(kù)非常簡(jiǎn)單,只要在代碼中寫(xiě)一個(gè)庫(kù)的地址就可以
先搜索 jquery cdn
然后點(diǎn)開(kāi),復(fù)制鏈接就可以了
js 和 java 之間有一定差別的,但是差別不大
差別主要體現(xiàn)在類型系統(tǒng)上
基本的 變量電儀,運(yùn)算符,表達(dá)式,條件…(這些的差別不大)
js 的數(shù)組和 java 差異比較大了(也是和類型系統(tǒng)有關(guān))
(2)編寫(xiě)代碼
$ 是一個(gè)變量名(全局變量,在 jquery 定義的)
通過(guò)這個(gè)變量來(lái)調(diào)用一些方法,使用 jquery 中的 api
js 中 { } 表示對(duì)象
{ } 里面是使用 鍵值對(duì) 方式來(lái)表述“屬性名” 和 “屬性值”
對(duì)象屬性的值,也可以是一個(gè)函數(shù)
這個(gè)函數(shù),是一個(gè)匿名函數(shù),也就相當(dāng)于 lambda 表達(dá)式
這里 success 這個(gè)函數(shù),不是立即執(zhí)行的
而是服務(wù)器返回 200 這樣的響應(yīng)的時(shí)候,才會(huì)執(zhí)行到 success
服務(wù)器什么時(shí)候返回 200
可能是 10ms 之后,也可能是 1s 之后,也可能永遠(yuǎn)也不返回
什么時(shí)候返回 200 了,什么時(shí)候執(zhí)行 success
success 執(zhí)行時(shí)機(jī)不是程序員自己能控制的
而是在合適的時(shí)候自動(dòng)被調(diào)用的
像這樣的函數(shù) 就是“回調(diào)函數(shù)”
- C 進(jìn)階,指針進(jìn)階 => 函數(shù)指針 =>重要用途就是作為回調(diào)函數(shù)
- Java 數(shù)據(jù)結(jié)構(gòu) Comparable 和 Comparator compareTo compare 比較方法
- 線程,run 方法,也是回調(diào)函數(shù)
這個(gè)寫(xiě)法就是定義變量
不需要寫(xiě)類型,不管什么類型,都是 let
變量具體類型是根據(jù) = 后面的值的類型來(lái)確定的
此處 ‘1’ 是一個(gè)字符串,value 1 變量類型也就是字符串了
使用 JSON.stringify(body) 就可以把 js 對(duì)象轉(zhuǎn)成 json 格式的字符串了
這個(gè)代碼格式如此,但是當(dāng)前直接給搜狗發(fā)這個(gè),還不太行
搜狗這里的這個(gè)路徑不一定能支持 ajax 的 post
在后面自己寫(xiě)服務(wù)器,就可以完成前后端的配合了文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-773520.html
這里我們也可以使用 postman 來(lái)創(chuàng)建圖形化界面
也可以使用 postman 直接生成 ajax 代碼文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-773520.html
到了這里,關(guān)于Java EE 網(wǎng)絡(luò)原理之HTTP 響應(yīng)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!