工程demo:myapp011工程下“_05mvcboot01” ?model
目錄
1、Spring MVC和MVC
2、創建項目:
3、處理請求
4、HTTP協議 超文本傳輸協議
????? ?4.1、 HTTP和HTTPS的區別
? ? ? ? 4.2、SSL證書
? ? ? ? 4.3、請求和響應
? ? ? ? ? ? ? ? 4.3.1、請求
? ? ? ? ? ? ? ? 4.3.2、響應
5、數據的傳遞與接收
? ? ? ? 5.1、客戶端傳遞數據到服務端
? ? ? ? 5.2、服務端接收數據
6、URL
7、示例
1、Spring MVC和MVC
-
????????Spring MVC:用于快速開發網站,屬于spring framework中的核心框架
-
MVC是設計思想,將軟件按照模型、視圖、控制器來劃分,為了解耦
-
????????????????M :model,模型層,負責業務邏輯判斷,數據庫存取
????????????????V:View,視圖層,負責界面展示,向用戶呈現數據的方式(html頁面,圖片,文本等)
????????????????C:Controller,控制器負責接收用戶請求,并根據請求調用 相應的模型來處理業務邏輯
2、創建項目:
勾選:web => spring web
????????運行application后,輸入網址,即可訪問
????????//相當于訪問了static下的index.html
????????http://localhost:8080/index.html
3、處理請求
????????Spring mvc就是用來處理請求的,這兩種請求,處理的方式大不一樣
?????????? ?靜態請求:所有人訪問,得到的結果是一樣的,比如:新聞
?? ?????????動態請求:每個人訪問,得到的結果是不一樣的,比如:登錄
????????spring MVC處理靜態請求
?? ?????????static有調整,需要rebuild一下
????????spring MVC處理動態請求
?? ?????????url地址:http://localhost:8080/v1/users/login
????????Shift + F5 瀏覽器清理緩存,刷新頁面
4、HTTP協議 超文本傳輸協議
????? ?4.1、 HTTP和HTTPS的區別
???????
?? ?????????HTTP:
?? ??? ?????????1、數據以明文的方式在互聯網中傳輸,不安全
?? ??? ?????????2、數據傳輸效率高
?? ??? ?????????3、默認端口號:80
?? ??? ?????????4、不需要SSL證書的認證
?? ?????????HTTPS:
?? ??? ?????????1、數據是以密文的方式在互聯網中傳輸,安全
?? ??? ?????????2、數據傳輸效率低
?? ??? ?????????3、默認端口號:443
?? ??? ?????????4、需要SSL證書的認證
? ? ? ? 4.2、SSL證書
????????????????SSL證書自己做也可以,但是瀏覽器不認,需要把證書一個個的添加信任,操作繁瑣,
????????????????專門做的,瀏覽器是信任的,
? ? ? ? 4.3、請求和響應
? ? ? ? ? ? ? ? 4.3.1、請求
????????????????????????HTTP請求Request 一個請求包含:請求行,請求頭,請求體
????????????????????????????????請求行:抽象路徑(/v1/users/login) ,協議版本(HTTP/1.1)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 請求頭:對請求的進一步解釋和描述,是否支持長連接,代理設置,
????????????????????????????????請求體:請求參數或者提交內容
? ? ? ? ? ? ? ? 4.3.2、響應
HTTP響應Response 一個響應包含三部分:響應行,響應頭,響應體
響應行:版本信息(HTTP/1.1)、響應碼(200)、附加信息(OK)
響應碼:
?? ?1xx:保留
?? ?2xx:成功,表示處理成功,并正常響應
?? ?3xx:重定向,表示處理成功,但是需要瀏覽器進一步請求
?? ?4xx:客戶端錯誤,表示客戶端請求錯誤,導致服務端無法處理
?? ?5xx:服務端錯誤,表示服務端處理請求過程出現了錯誤
重定向:www.360buy.com直接轉成www.jd.com,然后繼續訪問
響應頭:響應內容類別,響應長度,默認字節
5、數據的傳遞與接收
? ? ? ? 5.1、客戶端傳遞數據到服務端
????????
? ? ? ? ????????????????只是規范?
????????????????????????Get請求(請求類別或者請求方法),獲取服務端資源
?? ??? ?????????????????POST請求:服務器新增資源,比如:創建訂單
?? ??? ?????????????????PUT請求:更新服務器端資源,比如:修改個人資料
?? ??? ?????????????????DELETE請求,刪除服務器端資源,比如:刪除訂單,聊天記錄
????????????????????????
get請求
?username=liying&password=1105
敏感信息,圖片、視頻不用get請求,長度有限制
Post請求方式
?? ?發送方式:通過form表單的形式發送
?? ?傳遞數據方式:通過請求體方式
長度沒有限制,安全
? ? ? ? 5.2、服務端接收數據
? ? ? ? ? ? ? ? 1、HttpServletRequest接收
????????????????2、聲明參數方式來接收客戶端傳遞過來的數據
????????????????3、通過DTO類方式接收
?? ?1、HttpServletRequest接收:java servlet規范中定義的一個接口
?? ?tomocat將請求數據,進行封裝HttpServletRequest
?? ?2、聲明參數方式來接收客戶端傳遞過來的數據
?? ?/v1/carts/deleteCart
?? ?
?? ?3、通過DTO類方式接收?? ?
?? ?/v1/carts/updataCart
參數在2個及以下,使用聲明參數接收接口數據,高于兩個,使用POJO類接收
6、URL
????????URL:(網址) 統一資源定位符
?? ?????????區分大小寫,
? ? ? ? URL內容:
協議:http
主機名:localhost
端口號:8080
路徑:/v1/users/login
查詢參數:?后面的參數
Url不支持中文,但是瀏覽器里可以是中文,這是因為瀏覽器對中文做了url編碼
7、示例
添加商品到購物車
?? ?請求方式:get
?? ?請求地址:/v1/carts/addCart
?? ?查詢參數:?title=商品名稱&price=商品單價
?? ?返回響應:添加購物車成功
CartsController
@Controller
public class CartsController {/**** 1、HttpServletRequest接收* 添加商品到購物車* http://localhost:8080/v1/carts/addCart* http://localhost:8080/v1/carts/addCart?title=血飲狂刀&price=999.99** */@RequestMapping(value = "/v1/carts/addCart")@ResponseBodypublic String addCart(HttpServletRequest request){String title = request.getParameter("title");String price = request.getParameter("price");return "添加購物車成功"+title+","+price+"元";}/**** 2、聲明參數方式來接收客戶端傳遞過來的數據* 添加商品到購物車* http://localhost:8080/v1/carts/deleteCart?username=xxx&id=xxx* http://localhost:8080/v1/carts/addCart?title=血飲狂刀&price=999.99* 參數username和username要一致** */@RequestMapping(value = "/v1/carts/deleteCart")@ResponseBodypublic String deleteCart(String username,Integer id){return "恭喜你,刪除:"+username+",id:"+id;}/*** 3、通過DTO類方式接收** /v1/carts/updataCart* http://localhost:8080/v1/carts/updataCart?title=方天畫戟&price=99.99&number=102* */@RequestMapping(value = "/v1/carts/updataCart")@ResponseBodypublic String updataCart(UpdataDTO updataDTO){return "更新成功:"+updataDTO.toString();}
}
cart.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>購物車功能</title>
</head>
<body><!--submit 點擊后,會觸發:action ,會將參數提交到url,并且按照post方式請求地址鏈接-->
<form action="http://localhost:8080/v1/carts/addCart" method="post">商品名稱:<input type="text" name="title">商品價格:<input type="text" name="price"><input type="submit" name="添加">
</form></body>
</html>
測試工具:HttpClient、Knife4j、Postman
添加接口測試:test目錄下新建http文件夾,新建文件:cartsTest.http
cartsTest.http
### 更新購物車
POST http://localhost:8080/v1/carts/updataCart
Content-Type: application/x-www-form-urlencodedtitle = 方天畫戟 &
price = 999.99 &
number = 99###
### 購物車添加
GET http://localhost:8080/v1/carts/addCart?title=血飲狂刀&price=999.99Accept: application/json###