基于 TCP 協(xié)議,面向連接,安全基于請求-響應(yīng)模型,一次請求對應(yīng)一次響應(yīng)HTTP 協(xié)議是無狀態(tài)的協(xié)議,對于事務(wù)處理沒有記憶功能tomcat搭建本地服務(wù)器,每次請求-響應(yīng)都是獨(dú)立的
請求數(shù)據(jù)格式
前端向服務(wù)器發(fā)送數(shù)據(jù)的過程被我們稱為請求。這些數(shù)據(jù)通常是用于服務(wù)器的邏輯處理。前端向服務(wù)器提交數(shù)據(jù)有兩種常用方式 GET 和 POST 。接下來我們來看看這兩種方式的數(shù)據(jù)格式。
以上兩幅圖片給出了 get 和 post 兩種提交方法的數(shù)據(jù)格式,兩種方法的數(shù)據(jù)均被 HTTP 協(xié)議分成了三部分,我們先來看看相同之處
請求行:請求數(shù)據(jù)的第一行。其中 GET 表示請求的方式,/ 表示請求資源路徑,HTTP/1.1表示協(xié)議版本請求頭:第二行開始,格式為鍵值對形式
請求體:位于數(shù)據(jù)的最后部分。GET 方法的請求體部分沒有數(shù)據(jù)。POST 方法的請求體用于存放請求參數(shù)
我們再來看看 GET 和 POST 兩種方法的區(qū)別
響應(yīng)數(shù)據(jù)格式
服務(wù)器接受到前端傳來的數(shù)據(jù),再進(jìn)行邏輯處理后,往往會(huì)將部分結(jié)果傳遞給前端,而將數(shù)據(jù)傳遞給前端的過程就叫做響應(yīng)
響應(yīng)數(shù)據(jù)分為三部分
和請求數(shù)據(jù)格式很像對吧,他們都遵守 HTTP 協(xié)議的格式,用請求頭來區(qū)分具體的不同。對于前后端不分離的項(xiàng)目,前端代碼通常封裝在響應(yīng)體中,交給瀏覽器解析,然后展示頁面
響應(yīng)行:響應(yīng)數(shù)據(jù)的第一行。HTTP/1.1 表示協(xié)議版本,200 表示響應(yīng)狀態(tài)碼,OK 表示狀態(tài)碼描述響應(yīng)頭:第二行開始,格式為 鍵值對響應(yīng)體:最后一部分,存放響應(yīng)數(shù)據(jù)
我們來學(xué)習(xí)一下常見的響應(yīng)狀態(tài)碼,了解了響應(yīng)狀態(tài)碼,服務(wù)器的維護(hù)也會(huì)更加快捷
常見的響應(yīng)狀態(tài)碼
狀態(tài)碼英文描述解釋
200
OK
客戶端請求成功,即處理成功,這是我們最想看到的狀態(tài)碼
302
Found
指示所請求的資源已移動(dòng)到由響應(yīng)頭給定的 URL,瀏覽器會(huì)自動(dòng)重新訪問到這個(gè)頁面
304
Not
告訴客戶端,你請求的資源至上次取得后,服務(wù)端并未更改,你直接用你本地緩存吧。隱式重定向
400
Bad
客戶端請求有語法錯(cuò)誤,不能被服務(wù)器所理解
403
服務(wù)器收到請求,但是拒絕提供服務(wù),比如:沒有權(quán)限訪問相關(guān)資源
404
Not Found
請求資源不存在,一般是URL輸入有誤,或者網(wǎng)站資源被刪除了
428
服務(wù)器要求有條件的請求,告訴客戶端要想訪問該資源,必須攜帶特定的請求頭
429
Too Many
太多請求,可以限制客戶端請求某個(gè)資源的數(shù)量,配合 Retry-After(多長時(shí)間后可以請求)響應(yīng)頭一起使用
431
Too Large
請求頭太大,服務(wù)器不愿意處理請求,因?yàn)樗念^部字段太大。請求可以在減少請求頭域的大小后重新提交。
405
Not
請求方式有誤,比如應(yīng)該用GET請求方式的資源,用了POST
500
Error
服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤。服務(wù)器出異常了,趕緊看日志去吧
503
服務(wù)器尚未準(zhǔn)備好處理請求,服務(wù)器剛剛啟動(dòng),還未初始化好
511
客戶端需要進(jìn)行身份驗(yàn)證才能獲得網(wǎng)絡(luò)訪問權(quán)限
概述
學(xué)完了 HTTP 數(shù)據(jù)格式的理論基礎(chǔ),是不是感覺把有用的數(shù)據(jù)封裝成那樣的格式很麻煩?沒關(guān)系tomcat搭建本地服務(wù)器,我們接下來學(xué)的 服務(wù)器就是用來幫助我們按照規(guī)定格式封裝數(shù)據(jù)的,它幫助我們完成了幾乎全部的封裝的步驟
Web 服務(wù)器
下載鏈接
本文使用的是 8.5 版本
如果使用的是 環(huán)境,下載第三行第四行的 zip 文件
如果使用的是 linux 或者 MacOS 下載 tar.gz 文件
配置
安裝好 點(diǎn)擊 bin 目錄下的 文件便可以開啟服務(wù)器, 環(huán)境使用 .bat 后綴,linux 使用 .sh 后綴
點(diǎn)擊同目錄下的 文件即可關(guān)閉服務(wù)器
讓我們來嘗試一下本地服務(wù)器吧
開啟服務(wù)器
如果看到 的提示證明服務(wù)器開啟成功
打開瀏覽器輸入 :8080 回車
若出現(xiàn)此界面,證明你的服務(wù)器可以正常工作啦!此界面是 的內(nèi)置文件,默認(rèn)配置下訪問 8080 端口,就會(huì)出現(xiàn)此界面
關(guān)閉服務(wù)器 Maven Web 項(xiàng)目
相信你已經(jīng)體驗(yàn)過了第一次開啟本地服務(wù)器的激動(dòng),接下來我們來學(xué)習(xí)如何把 加入到 idea 中來管理使用,不過在加入 之前,我們需要先學(xué)習(xí)一下如何用 idea 創(chuàng)建一個(gè) web 項(xiàng)目
使用模版創(chuàng)建 web 項(xiàng)目,這里是 MacOS 系統(tǒng)下的 Web 項(xiàng)目創(chuàng)建流程
叫做骨架,我們使用 Maven 提供的項(xiàng)目骨架,創(chuàng)建一個(gè) web 項(xiàng)目,需要注意 JDK 需要選擇 Java8, 在使用最新版本的 JDK 會(huì)發(fā)生編譯錯(cuò)誤
創(chuàng)建的項(xiàng)目結(jié)構(gòu)如上圖所示,會(huì)發(fā)現(xiàn)目前項(xiàng)目只有名為 的項(xiàng)目文件夾用于存放前端文件,并沒有相應(yīng)的 java 文件夾用來存放用于邏輯處理的 java 文件。這就需要我們自己創(chuàng)建。
創(chuàng)建 java 文件夾
選擇 New 之后,idea 會(huì)為我們推薦 Java 文件夾,單機(jī)即可。創(chuàng)建完畢的項(xiàng)目結(jié)構(gòu)如下
現(xiàn)在一個(gè)標(biāo)準(zhǔn)的 Maven Web 項(xiàng)目就創(chuàng)建好了
IDEA 中使用
終于我們來到了最激動(dòng)人心的最后一個(gè)步驟——用 idea 管理
Maven 為我們提供了 插件,我們只需要將下面的坐標(biāo)復(fù)制到 pom.xml 配置文件里即可。
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.2version>
<configuration>
<port>8080port>
<path>/path>
configuration>
plugin>
plugins>
我們來檢測檢測一下是否配置成功了吧
首先配置端口和虛擬目錄
在 目錄下創(chuàng)建 hello.html 文件
<html>
<title>hellotitle>
<body>
hello,world
body>
html>
啟動(dòng)服務(wù)器(右鍵->Run Maven -> :run)
4.訪問服務(wù)器,打開瀏覽器訪問 /hello.html(:端口號(hào)/文件路徑/文件名)
出現(xiàn)了我們剛才編寫的 html 頁面后,就代表訪問成功啦
使用之后別忘記關(guān)閉服務(wù)器哦!
的入門就到這里結(jié)束啦,感覺好像大概需要大家的點(diǎn)贊鼓勵(lì)一下呢,不要吝嗇哦?。。?/p>