Spring MVC(7)- spring mvc 常用註解

1 RequestParam

作用: 把請求中指定名稱的參數給控制器中的形參賦值。

屬性:

  • value:請求參數中的名稱。
  • required:請求參數中是否必須提供此參數。默認值:true。表示必須提供,如果不提供將報錯。

在這裏插入圖片描述

2 RequestBody

作用: 用於獲取請求體內容。直接使用得到是key=value&key=value…結構的數據。
get請求方式不適用。

屬性:

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

<form action="/anno/testRequestBody" method="post">
    姓名:<input type="text" name="username"><br>
    年齡:<input type="text" name="age">
    <input type="submit" value="提交">
</form>

在這裏插入圖片描述
在這裏插入圖片描述

3 PathVaribale

作用: 用於綁定url中的佔位符。例如:請求url中 /delete/{id},這個{id}就是url佔位符。
url支持佔位符是spring3.0之後加入的。是springmvc支持rest風格URL的一個重要標誌。

屬性:

  • value:用於指定url中佔位符名稱。
  • required:是否必須提供佔位符。

3.1 REST 風格 URL

REST(英文:Representational State Transfer,簡稱REST)描述了一個架構樣式的網絡系統,比如 web 應用程序。它首次出現在 2000 年 Roy Fielding 的博士論文中,他是 HTTP 規範的主要編寫者之一。在目前主流的三種Web服務交互方案中,REST相比於SOAP(Simple Object Access protocol,簡單對象訪問協議)以及XML-RPC更加簡單明瞭,無論是對URL的處理還是對Payload的編碼,REST都傾向於用更加簡單輕量的方法設計和實現。值得注意的是REST並沒有一個明確的標準,而更像是一種設計的風格。 它本身並沒有什麼實用性,其核心價值在於如何設計出符合REST風格的網絡接口。


restful的優點:

  • 它結構清晰、符合標準、易於理解、擴展方便,所以正得到越來越多網站的採用。

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 用來刪除資源。

在這裏插入圖片描述


3.2 測試

在這裏插入圖片描述
在這裏插入圖片描述

3.3 HiddentHttpMethodFilter

作用: 由於瀏覽器 form 表單只支持 GET 與 POST 請求,而DELETE、PUT 等 method 並不支持,Spring3.0 添加了一個過濾器,可以將瀏覽器請求改爲指定的請求方式,發送給我們的控制器方法,使得支持 GET、POST、PUT 與DELETE 請求。

使用方法:

  • 第一步:在web.xml中配置該過濾器。
  • 第二步:請求方式必須使用post請求。
  • 第三步:按照要求提供_method請求參數,該參數的取值就是我們需要的請求方式。

4 RequestHeader

作用: 用於獲取請求消息頭。

屬性:

  • value:提供消息頭名稱
  • required:是否必須有此消息頭

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


在這裏插入圖片描述
在這裏插入圖片描述

5 CookieValue

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

屬性:

  • value:指定cookie的名稱。
  • required:是否必須有此cookie。

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

6 ModelAttribute

作用: 該註解是SpringMVC4.3版本以後新加入的。它可以用於修飾方法和參數。 出現在方法上,表示當前方法會在控制器的方法執行之前,先執行。它可以修飾沒有返回值的方法,也可以修飾有具體返回值的方法。 出現在參數上,獲取指定的數據給參數賦值。

屬性: value:用於獲取數據的key。key可以是POJO的屬性名稱,也可以是map結構的key。

應用場景:

  • 當表單提交數據不是完整的實體類數據時,保證沒有提交數據的字段使用數據庫對象原來的數據。
  • 例如: 我們在編輯一個用戶時,用戶有一個創建信息字段,該字段的值是不允許被修改的。在提交表單數據是肯定沒有此字段的內容,一旦更新會把該字段內容置爲null,此時就可以使用此註解解決問題。

6.1 ModelAttribute 修飾方法帶返回值

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

6.2 ModelAttribute修飾方法不帶返回值

@Controller
@RequestMapping("/anno")
public class AnnoController {

    @RequestMapping("/testModelAttribute")
    public String testModelAttribute(@ModelAttribute("abc") User user) {
        System.out.println("testModelAttribute 執行了。。。。");
        System.out.println(user);
        return "success";
    }

    /**
     * 此方法先執行
     *
     * @param uname
     * @return
     */
    @ModelAttribute
    public void showUser(String uname, Map<String, User> map) {
        System.out.println("showUser 執行了。。。。");
        //通過用戶名查詢數據庫(模擬)
        User user = new User();
        user.setUname(uname);
        user.setAge(30);
        user.setDate(new Date());
        map.put("abc", user);
    }


}

7 SessionAttribute

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

屬性:

  • value:用於指定存入的屬性名稱
  • type:用於指定存入的數據類型。

7.1 SessionAttributes

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章