SpringBootWeb入門

Spring
官網(wǎng):spring.io
Spring發(fā)展到今天已經(jīng)形成了一種開發(fā)生態(tài)圈,Spring提供了若干個(gè)子項(xiàng)目,每個(gè)項(xiàng)目用于完成特定的功能。



Spring Boot 可以幫助我們非??焖俚臉?gòu)建應(yīng)用程序、簡化開發(fā)、提高效率?


SpringBootWeb快速入門
需求:使用 SpringBoot 開發(fā)一個(gè)web應(yīng)用,瀏覽器發(fā)起請求 /hello后,給瀏覽器返回字符串 "Hello World ~"。

步驟:
①. 創(chuàng)建springboot工程,并勾選web開發(fā)相關(guān)依賴。
②. 定義HelloController類,添加方法 hello,并添加注解。
③. 運(yùn)行測試



HTTP協(xié)議
1. HTTP概述
HTTP 協(xié)議(Hypertext Transfer Protocol,超文本傳輸協(xié)議),是一個(gè)客戶端請求和響應(yīng)的標(biāo)準(zhǔn)協(xié)議,這個(gè)協(xié)議詳細(xì)規(guī)定了瀏覽器和萬維網(wǎng)服務(wù)器之間互相通信的規(guī)則。用戶輸入地址和端口號(hào)之后就可以從服務(wù)器上取得所需要的網(wǎng)頁信息。
HTTP中最重要的就是HTTP協(xié)議格式,分為請求協(xié)議和響應(yīng)協(xié)議。
通信規(guī)則規(guī)定了客戶端發(fā)送給服務(wù)器的內(nèi)容格式,也規(guī)定了服務(wù)器發(fā)送給客戶端的內(nèi)容格式??蛻舳税l(fā)送給服務(wù)器的格式叫“請求協(xié)議(request)
”;服務(wù)器發(fā)送給客戶端的格式叫“響應(yīng)協(xié)議(response)
”。
2. HTTP特點(diǎn)
基于TCP協(xié)議:面向連接,安全
基于請求-響應(yīng)模型的:一次請求對應(yīng)一次響應(yīng)
HTTP協(xié)議是無狀態(tài)的協(xié)議:對于事務(wù)處理沒有記憶能力。每次請求-響應(yīng)都是獨(dú)立的。
缺點(diǎn):多次請求間不能共享數(shù)據(jù)。
優(yōu)點(diǎn):速度快
3. HTTP之URL
URL作用:HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)上。瀏覽器作為HTTP客戶端通過URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請求。
URL就是瀏覽器的書寫格式。
基本URL包含模式(或稱協(xié)議)、服務(wù)器名稱(或IP地址)、路徑和文件名,如“協(xié)議://授權(quán)/路徑?查詢”。
URL由三部分組成:資源類型、存放資源的主機(jī)域名、資源文件名。
也可認(rèn)為由4部分組成:協(xié)議、主機(jī)、端口、路徑。
4. HTTP協(xié)議格式

4.1 HTTP請求協(xié)議
HTTP請求由三部分組成,分別是:請求行、請求頭(請求報(bào)頭)、請求體(請求正文)。
HTTP-請求數(shù)據(jù)格式



請求行:請求數(shù)據(jù)第一行 (請求方式、資源路徑、協(xié)議)
請求頭:第二行開始,格式key:value
請求體:POST請求,存放請求參數(shù)
請求方式-GET?: 請求參數(shù)在請求行中,沒有請求體,如:/brand/findAll?name=OPPO&status=1。GET請求大小是有限制的。
請求方式-POST : 請求參數(shù)在請求體中,POST請求大小是沒有限制的。

4.2 HTTP-響應(yīng)協(xié)議
請求響應(yīng)介紹-HTTP響應(yīng)格式

響應(yīng)行:響應(yīng)數(shù)據(jù)第一行(協(xié)議、狀態(tài)碼、描述)
響應(yīng)頭:第二行開始,格式key:value
響應(yīng)體:最后一部分,存放響應(yīng)數(shù)據(jù)


常見的響應(yīng)狀態(tài)碼
200? OK?:
客戶端請求成功,即處理成功,這是我們最想看到的狀態(tài)碼?
302?? Found :
指示所請求的資源已移動(dòng)到由Location響應(yīng)頭給定的 URL,瀏覽器會(huì)自動(dòng)重新訪問到這個(gè)頁面
304? Not Modified :
告訴客戶端,你請求的資源至上次取得后,服務(wù)端并未更改,你直接用你本地緩存吧。隱式重定向
400? Bad Request :
客戶端請求有語法錯(cuò)誤,不能被服務(wù)器所理解
403? Forbidden :
服務(wù)器收到請求,但是拒絕提供服務(wù),比如:沒有權(quán)限訪問相關(guān)資源
404? Not Found :
請求資源不存在,一般是URL輸入有誤,或者網(wǎng)站資源被刪除了
405? Method Not Allowed :
請求方式有誤,比如應(yīng)該用GET請求方式的資源,用了POST
428? Precondition Required :
服務(wù)器要求有條件的請求,告訴客戶端要想訪問該資源,必須攜帶特定的請求頭
429? Too Many Requests :
指示用戶在給定時(shí)間內(nèi)發(fā)送了太多請求(“限速”),配合 Retry-After(多長時(shí)間后可以請求)響應(yīng)頭一起使用
431? Request Header Fields Too Large :
請求頭太大,服務(wù)器不愿意處理請求,因?yàn)樗念^部字段太大。請求可以在減少請求頭域的大小后重新提交
500? Internal Server Error :
服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤。服務(wù)器出異常了,趕緊看日志去吧
503? Service Unavailable :
服務(wù)器尚未準(zhǔn)備好處理請求,服務(wù)器剛剛啟動(dòng),還未初始化好


5. HTTP工作流程
一次HTTP操作稱為一個(gè)事務(wù),其工作過程可分為四步:
1)首先客戶機(jī)與服務(wù)器需要建立連接。只要單擊某個(gè)超級(jí)鏈接,HTTP的工作開始。
2)建立連接后,客戶機(jī)發(fā)送一個(gè)請求給服務(wù)器,請求方式的格式為:統(tǒng)一資源標(biāo)識(shí)符(URL)、協(xié)議版本號(hào),后邊是MIME信息包括請求修飾符、客戶機(jī)信息和可能的內(nèi)容。
3)服務(wù)器接到請求后,給予相應(yīng)的響應(yīng)信息,其格式為一個(gè)狀態(tài)行,包括信息的協(xié)議版本號(hào)、一個(gè)成功或錯(cuò)誤的代碼,后邊是MIME信息包括服務(wù)器信息、實(shí)體信息和可能的內(nèi)容。
4)客戶端接收服務(wù)器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然后客戶機(jī)與服務(wù)器斷開連接。
如果在以上過程中的某一步出現(xiàn)錯(cuò)誤,那么產(chǎn)生錯(cuò)誤的信息將返回到客戶端,有顯示屏輸出。對于用戶來說,這些過程是由HTTP自己完成的,用戶只要用鼠標(biāo)點(diǎn)擊,等待信息顯示就可以了。

Tomcat
概念: Tomcat是Apache 軟件基金會(huì)一個(gè)核心項(xiàng)目,是一個(gè)開源免費(fèi)的輕量級(jí)Web服務(wù)器,支持Servlet/JSP少量JavaEE規(guī)范。
Tomcat 也被稱為 Web容器、Servlet容器。Servlet程序需要依賴于 Tomcat才能運(yùn)行?
官網(wǎng):https://tomcat.apache.org/

Tomcat-基本使用
下載:官網(wǎng)下載
安裝:綠色版,直接解壓即可
卸載:直接刪除目錄即可
啟動(dòng):雙擊:bin\startup.bat
關(guān)閉:
直接×掉運(yùn)行窗口:強(qiáng)制關(guān)閉
bin\shutdown.bat:正常關(guān)閉
Ctrl+C:正常關(guān)閉

SpringBootWeb-入門程序解析

起步依賴:
在SpringBootWeb開發(fā)環(huán)境中,已經(jīng)把Tomcat集成進(jìn)來了,我們叫做內(nèi)嵌Tomcat,我們在實(shí)際開發(fā)中,基本上是用內(nèi)嵌Tomcat

小結(jié)
1.Web服務(wù)器
對HTTP協(xié)議操作進(jìn)行封裝,簡化web程序開發(fā)。
部署web項(xiàng)目,對外提供網(wǎng)上信息瀏覽服務(wù)。
2.Tomcat
一個(gè)輕量級(jí)的web服務(wù)器,支持servlet、jsp等少量javaEE規(guī)范。
也被稱為web容器、servlet容器。
3.起步依賴
spring-boot-starter-web
spring-boot-starter-test
4.內(nèi)嵌Tomcat服務(wù)器
基于Springboot開發(fā)的web應(yīng)用程序,內(nèi)置了tomcat服務(wù)器,當(dāng)啟動(dòng)類運(yùn)行時(shí),會(huì)自動(dòng)啟動(dòng)內(nèi)嵌的tomcat服務(wù)器。