91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

四、Spring MVC的RequestParam注解

發布時間:2020-07-26 23:21:39 來源:網絡 閱讀:14677 作者:艾斯的夢想 欄目:開發技術

    前面的章節,有提到可以通過@PathVariable注解來映射restful風格的url中的值到方法中去,本章就看看如果不使用restful風格的url來怎么進行參數的傳遞。

    RequestParam就是來實現參數傳遞的,能夠把用戶的輸入綁定到后臺的方法上面。它有三個主要的屬性:

value:定義參數的名稱

required:定義參數是否是必須的,默認是true

defaultValue:定義參數的默認值

    下面結合具體的示例代碼來看一下如何使用:

1、下面的這段代碼定義了三個參數,一個name,一個sex,一個age,可以看出來以下兩種方式是等價的,它們的作用是一樣的

@RequestParam("name") String userName
@RequestParam(value = "name") String userName

2、參數的綁定是name,而不是userName,即如果傳遞的參數名稱為userName,那么就不能接收到參數

@RequestMapping("/testReqParam")
public String testRequestParam(@RequestParam("name") String userName, 
                     @RequestParam("sex") String sex,
            @RequestParam(value = "age") int age, Model model) {

    model.addAttribute("name", userName);
    model.addAttribute("sex", sex);
    model.addAttribute("age", age);
    return "result";
}


測試代碼:下面定義了三個請求,第一個完整參數,get請求,第二個完整參數post請求,第三個缺少參數age。前兩個都會成功,最后一個會404的,因為required的默認值是true

<p>RequestParam測試,get請求形式
 <a href="/testRequestParam/testReqParam?name=lxy&sex=male&age=15">here</a>
 </p>

<form action="/testRequestParam/testReqParam" method="post">
    <p>post請求形式</p>
    name:<input type="text" name="name" value=""/><br/>
    sex:<input type="text" name="sex" value=""/><br/>
    age:<input type="text" name="age" value=""/><br/>
    <input type="submit" value="submit" />
</form>
<p>RequestParam測試,get請求形式,缺少age參數,出現404
 <a href="/testRequestParam/testReqParam?name=lxy&sex=male">here</a>
</p>

3、required屬性定義,直接這么定義會不會出問題,答案是會的,會出現500錯誤。為什么?因為age參數是null,在spring mvc在進行類型轉換的時候,null不能轉為int類型,那要怎么辦呢?

@RequestMapping("/testAttrRequired500Error")
public String testAttrRequired500Error(@RequestParam("name") String userName, 
    @RequestParam("sex") String sex,
    @RequestParam(value = "age", required = false) int age, Model model) {

    model.addAttribute("name", userName);
    model.addAttribute("sex", sex);
    model.addAttribute("age", age);
    return "result";
}


這一段代碼把int修改為了Integer,此時無論是否缺少age參數都是可以成功的。

@RequestMapping("/testAttrRequired")
public String testAttrRequired(@RequestParam("name") String userName, 
@RequestParam("sex") String sex,
@RequestParam(value = "age", required = false) Integer age, Model model) {

    model.addAttribute("name", userName);
    model.addAttribute("sex", sex);
    model.addAttribute("age", age);
    return "result";
}

測試代碼

<p>required屬性設為false,500錯誤的定義形式,參數轉化錯誤
    <a href="/testRequestParam/testAttrRequired500Error?name=lxy&sex=male">here</a>
</p>

<p>required屬性設為false,缺少參數age 不會出錯,因為定義類型為Integer
    <a href="/testRequestParam/testAttrRequired?name=lxy&sex=male">here</a>
</p>

4、defaultValue的使用,定義參數的默認是,如果沒有傳遞該參數,使用此處定義的,此時即使缺少age參數,也不會出現錯誤了,因為會使用0來作為age的值。

@RequestMapping("/testAttrDefaultValue")
public String testAttrDefaultValue(@RequestParam("name") String userName,
        @RequestParam("sex") String sex,@RequestParam(value = "age",
        required = false, defaultValue = "0") int age, Model model) {

    model.addAttribute("name", userName);
    model.addAttribute("sex", sex);
    model.addAttribute("age", age);
    return "result";
}

測試代碼

<p>required屬性設為false,設置defaultValue為0,缺少age參數也不會出錯,
因為給定了一個默認值,按照該值進行轉換
    <a href="/testRequestParam/testAttrDefaultValue?name=lxy&sex=male">here</a>
</p>

5、RequestHeader和CookieValue的使用,不太會用到,和RequestParam用法一致,示例代碼如下所示:

/**
 * 注解 @RequestHeader 可以定義獲取請求頭的信息
 * 注解 @CookieValue 可以定義獲取請求的cookie中的值
 */
@RequestMapping("/testRequestHeaderAndCookieValue")
public String testRequestHeader(@RequestHeader("Accept-Language") String language,
    @CookieValue("JSESSIONID") String sessionId, Model model) {

    System.out.println("header:" + language + "\tsessionId:" + sessionId);
    return "result";
}

測試代碼:

<p>@RequiredHeader和@CookieValue的使用說明:
    <a href="/testRequestParam/testRequestHeaderAndCookieValue">here</a>
</p>


項目源代碼:

https://git.oschina.net/acesdream/spring-mvc


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

襄垣县| 娱乐| 正定县| 吴川市| 井研县| 威远县| 新建县| 武强县| 册亨县| 龙州县| 磴口县| 云安县| 油尖旺区| 五大连池市| 琼海市| 隆德县| 宜春市| 廉江市| 寿阳县| 铁力市| 吴江市| 城固县| 观塘区| 合肥市| 九龙坡区| 灵川县| 鄄城县| 宁夏| 黎川县| 和田市| 托克托县| 中宁县| 城市| 北票市| 阳春市| 彩票| 宁陕县| 兴城市| 炎陵县| 林口县| 新田县|