SpringMVC 05 常用註解和REST

2021-10-13 02:59:58 字數 3809 閱讀 4881

1.requsetparam

作用:

解決前台引數名字和後台引數名字不一致問題。

屬性:

value:請求引數中的名稱。同name,可省略。

required:請求引數中是否必須提供此引數。預設值:true。表示必須提供,如果不提供將報錯.

前台的傳參username=安琪拉

href

="controller/hello?username=安琪拉"

>

clicka

>

後台接收引數名字為name:

("/hello"

)public string hello

(@requestparam

(name=

"username"

) string name)

requsetparam註解必須要有name引數,並且值要和前台引數名字一致。當只有name引數時,「name=」 可以省略。

2.requestbody

作用:

可以獲取請求體,不適用get方法。直接使用得到是 key=value&key=value…結構的資料。

屬性:

required:是否必須有請求體。預設值是:true。當取值為 true 時,get 請求方式會報錯。如果取值為 false,get 請求得到是 null。

前台提交乙個表單,使用post方法。後台獲取:

("/hello"

)public string hello

(@requestbody string body)

3.pathvariable

作用:

用於繫結 url 中的佔位符。例如:請求 url 中 /delete/,這個就是 url 佔位符。

url 支援佔位符是 spring3.0 之後加入的。是 springmvc 支援 rest 風格 url 的乙個重要標誌。

屬性:

value:用於指定 url 中佔位符名稱。同name,可省略。

required:是否必須提供佔位符。

前台href=「controller/hello/安琪拉」,後台:

("/hello/"

)public string hello

(@pathvariable

(value =

"uname"

) string name)

4.rest 風格 url

什麼是 rest:

rest(英文:representational state transfer,簡稱 rest)描述了乙個架構樣式的網路系統,比如 web 應用程式。它首次出現在 2000 年 roy fielding 的博士**中,他是 http 規範的主要編寫者之一。在目前主流的三種 web 服務互動方案中,rest 相比於 soap(****** object access protocol,簡單物件訪問協議)以及 xml-rpc 更加簡單明瞭,無論是對 url 的處理還是對 payload 的編碼,rest 都傾向於用更加簡單輕量的方法設計和實現。值得注意的是 rest 並沒有乙個明確的標準,而更像是一種設計的風格。它本身並沒有什麼實用性,其核心價值在於如何設計出符合 rest 風格的網路介面。

restful 的優點

資源(resources):網路上的乙個實體,或者說是網路上的乙個具體資訊。它可以是一段文字、一張、一首歌曲、一種服務,總之就是乙個具體的存在。可以用乙個 uri(統一資源定位符)指向它,每種資源對應乙個特定的 uri 。要獲取這個資源,訪問它的 uri 就可以,因此 uri 即為每乙個資源的獨一無二的識別符。

表現層(representation):把資源具體呈現出來的形式,叫做它的表現層 (representation)。比如,文字可以用 txt 格式表現,也可以用 html 格式、xml 格式、json 格式表現,甚至可以採用二進位制格式。

狀態轉化(state transfer):每 發出乙個請求,就代表了客戶端和伺服器的一次互動過程。http 協議,是乙個無狀態協議,即所有的狀態都儲存在伺服器端。因此,如果客戶端想要操作伺服器,必須通過某種手段,讓伺服器端發生「狀態轉化」(state transfer)。而這種轉化是建立在表現層之上的,所以就是 「表現層狀態轉化」。具體說,就是 http 協議裡面,四個表示操作方式的動詞:get 、post 、put、delete。它們分別對應四種基本操作:get 用來獲取資源,post 用來新建資源,put 用來更新資源delete 用來刪除資源。

5.基於 hiddenthttpmethodfilter 的示例(了解)

作用:

由於瀏覽器 form 表單只支援 get 與 post 請求,而 delete、put 等 method 並不支援,spring3.0 新增了乙個過濾器,可以將瀏覽器請求改為指定的請求方式,傳送給我們的控制器方法,使得支援 get、post、put與 delete 請求。

第一步:在 web.xml 中配置該過濾器。

第二步:請求方式必須使用 post 請求。

第三步:按照要求提供_method 請求引數,該引數的取值就是我們需要的請求方式。

6.requestheader

作用:

用於獲取請求訊息頭。

屬性:

value:提供訊息頭名稱

required:是否必須有此訊息頭

注:在實際開發中一般不怎麼用。

7.cookievalue

作用:

用於把指定 cookie 名稱的值傳入控制器方法引數。

屬性:

value:指定 cookie 的名稱。

required:是否必須有此 cookie。

8.modelattribute

作用:

該註解是 springmvc4.3 版本以後新加入的。它可以用於修飾方法和引數。

出現在方法上,表示當前方法會在控制器的方法執行之前,先執行。它可以修飾沒有返回值的方法,也可以修飾有具體返回值的方法。出現在引數上,獲取指定的資料給引數賦值。

屬性:

value:用於獲取資料的 key。key 可以是 pojo 的屬性名稱,也可以是 map 結構的 key。

應用場景:

當表單提交資料不是完整的實體類資料時,保證沒有提交資料的字段使用資料庫物件原來的資料。

例如:我們在編輯乙個使用者時,使用者有乙個建立資訊字段,該字段的值是不允許被修改的。在提交表單資料是肯定沒有此字段的內容,一旦更新會把該字段內容置為 null,此時就可以使用此註解解決問題。

8.1 基於 pojo 屬性的基本使用

8.2 基於 map 的應用場景示例 modelattribute 修飾方法帶返回值

8.3 基於 map 的應用場景示例 modelattribute 修飾方法不帶返回值

9. sessionattribute

作用:

用於多次執行控制器方法間的引數共享。

屬性:

value:用於指定存入的屬性名稱

type:用於指定存入的資料型別。

Spring MVC 05 引數接收及頁面跳轉

1 提交的網域名稱稱和處理方法的引數名一致 提交資料 http localhost 8080 hello?name kuangshen 處理方法 後台輸出 kuangshen 2 提交的網域名稱稱和處理方法的引數名不一致 提交資料 http localhost 8080 hello?username...

SpringMVC常用註解

一,controller 負責註冊乙個bean 到spring 上下文中,bean 的id 預設為類名稱開頭字母小寫。1 在springmvc 的配置檔案中定義mycontroller 的bean 物件。2 在springmvc 的配置檔案中告訴spring 該到 去找標記為 controller ...

SpringMVC常用註解

controller 負責註冊乙個bean 到spring 上下文中 註解為控制器指定可以處理哪些 url 請求 requestbody 該註解用於讀取request請求的body部分資料,使用系統預設配置的httpmessageconverter進行解析,然後把相應的資料繫結到要返回的物件上 再把...