1. 程式人生 > >SpringMVC 引數繫結相關注解

SpringMVC 引數繫結相關注解

@RequestParams

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

  • 屬性: 這裡寫圖片描述

// <a href="account/save3.do?id=100&username=jack"> 儲存 2</a>
// @RequestParam("username") 這裡的 username 對應的就是請求引數: username=jack
@RequestMapping("save3.do")
public String save3(@RequestParam("id") Integer id_, @RequestParam("username") String name_){
    System.out
.println(id_); System.out.println(name_); return "success"; }

@RequestHeader

  • 作用: 用於獲取請求訊息頭。

  • 屬性: 這裡寫圖片描述

//1. @RequestHeader 獲取指定的請求頭對應的值 (Connection: keep-alive)
@RequestMapping("requestHeader")
public String requestHeader(@RequestHeader(name = "connection") String headValue){
    System.out
.println(headValue); return "success"; }

@CookieValue

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

  • 屬性: 這裡寫圖片描述


//2. 根據指定的 cookie 的 key 獲取值 (Cookie:JSESSIONID=A1E0A61BB8EB66369A1A8CE22677E840)
@RequestMapping("cookieValue")
public String cookieValue(@CookieValue(value="JSESSIONID",defaultValue="") String sessionId){
    System.out
.println(sessionId); return "success"; }

說明: @CookieValue(value=”JSESSIONID”,defaultValue=”“) String sessionId 會自動將JSESSIONID值入參到sessionId引數上,defaultValue表示預設值為空。

@PathVariable

  • 獲得請求URL中的動態引數,只支援一個屬性value,型別為String,表示繫結的名稱,如果省略則預設繫結同名引數。
@RequestMapping(value = "/order/{id}")
public String post(@PathVariable("id") String id){
    System.out.println(id);
    return "success";
}

@RequestBody 、 @ResponseBody

1、@RequestBody

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

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

  • 演示 post 提交

這裡寫圖片描述

//[email protected] 獲取請求體內容(要求: post 提交)
// required = true 預設值,表示必須有請求體,即必須是 post 提交;否則出錯 .
@RequestMapping("requestBody")
public String requestbody(@RequestBody(required = true) String postRequestData){ 
    // 得到 id=11&username=jack , 期望封裝為物件,這樣處理起來方便,故建議用物件接收 
    System.out.println(postRequestData);
    return "success";
}

2、互動 json 資料

/**
* RequestBody
* 可以把請求的 json 資料轉成一個實體類物件。
* 需要藉助 jackson 的 jar 包。
* 該 jar 包在 spring5 版本,需要 2.7.0 及以上
*
* ResponseBody ,
* 它可以把返回值轉成 json 資料
* 要求我們的控制器方法返回的是實體類物件
*/
@RequestMapping("responseBodyJson")
public @ResponseBody Account responseBody(@RequestBody Account account) {
    System.out.println(" 非同步請求:" + account);
    // 設定資料,頁面觀察 json 格式
    account.setName(" 球球");
    account.setMoney(100);
    return account;
}

@SessionAttributes

  • 允許有選擇的指定Model中的哪些屬性需要轉存到HttpSession物件中。

這裡寫圖片描述

@Controller
/**
* names 指定 Model 物件的哪些 key 會自動放入 session 域中
* types = Integer.class Model 中的 Integer 型別的所有 key 都自動放入 session 域中
*/
@SessionAttributes(names = {"name1","name2"}, types = Integer.class)
public class SessionAttributesController {

    @RequestMapping("set")
    public String set(Model model){

        // Model & ModelMap 存入值,相當於往request域存值
        model.addAttribute("name1","Jack");
        model.addAttribute("name2","Rose");
        model.addAttribute("num1",100);
        model.addAttribute("num2",200);
        model.addAttribute("address","gz");
        return "success"; 

    }

}