最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot接收參數(shù)使用的注解實(shí)例講解

 更新時(shí)間:2022年08月17日 16:45:50   作者:llp1110  
這篇文章主要介紹了詳解SpringBoot接收參數(shù)使用的幾種常用注解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1.基本介紹

SpringBoot 接收客戶端提交數(shù)據(jù)/參數(shù)會(huì)使用到相關(guān)注解

詳 解 @PathVariable 、 @RequestHeader 、 @ModelAttribute 、 @RequestParam 、 @MatrixVariable、@CookieValue、@RequestBody

2.接收參數(shù)相關(guān)注解應(yīng)用實(shí)例

1.需求: 演示各種方式提交數(shù)據(jù)/參數(shù)給服務(wù)器,服務(wù)器如何使用注解接收

2.應(yīng)用實(shí)例演示

需求: 演示各種方式提交數(shù)據(jù)/參數(shù)給服務(wù)器,服務(wù)器如何使用注解接收

創(chuàng)建src\main\resources\static\index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
<h1>hello, llp</h1>
基本注解:
<hr/>
<a href="/monster/200/jack" rel="external nofollow" >@PathVariable-路徑變量 monster/200/jack</a><br/><br/>
</body>
</html>

@PathVariable 使用

演示@PathVariable 使用,創(chuàng)建src\main\java\com\llp\springboot\controller\ParameterController.java, 完成測(cè)試

@RestController
public class ParameterController {
    /**
     * /monster/{id}/{name} 解讀
     * 1. /monster/{id}/{name} 構(gòu)成完整請(qǐng)求路徑
     * 2. {id} {name} 就是占位變量
     * 3. @PathVariable("name"): 這里name 和{name} 命名保持一致
     * 4. String name_ 這里自定義,和{name}命名無(wú)關(guān)
     * 5. @PathVariable Map<String, String> map 把所有傳遞的值傳入map
     * 6. 可以看下@PathVariable源碼
     */
    @GetMapping("/monster/{id}/{name}")
    public String pathVariable(@PathVariable("id") Integer id,
                               @PathVariable("name") String name,
                               @PathVariable Map<String, String> map) {
        System.out.println("id-" + id);
        System.out.println("name-" + name);
        System.out.println("map-" + map);
        return "success";
    }
}

@RequestHeader 使用

演示@RequestHeader 使用,修改 ParameterController.java , 完成測(cè)試

√ 修改 index.html

<a href="/requestHeader" rel="external nofollow" >@RequestHeader-獲取Http請(qǐng)求頭 </a><br/><br/>

√ 修改 ParameterController.java

/**
 * @RequestHeader("Host") 獲取http請(qǐng)求頭的 host信息
 * @RequestHeader Map<String, String> header: 獲取到http請(qǐng)求的所有信息
 */
@GetMapping("/requestHeader")
public String requestHeader(@RequestHeader("host") String host,
                            @RequestHeader Map<String, String> header,
                            @RequestHeader("accept") String accept) {
    System.out.println("host-" + host);
    System.out.println("header-" + header);
    System.out.println("accept-" + accept);
    return "success";
}

@RequestParam 使用

演示@RequestParam 使用,修改 ParameterController.java , 完成測(cè)試

√ 修改 index.html

<a href="/hi?name=wukong&fruit=apple&fruit=pear&id=300&address=北京" rel="external nofollow" >@RequestParam-獲取請(qǐng)求參數(shù)</a><br/><br/>

√ 修改 ParameterController.java

/**
 * @param username wukong
 * @param fruits  List<String> fruits 接收集合 [apple, pear]
 * @param paras Map<String, String> paras 如果我們希望將所有的請(qǐng)求參數(shù)的值都獲取到,
 *              可以通過(guò)@RequestParam Map<String, String> paras這種方式
 *             一次性的接收所有的請(qǐng)求參數(shù) {name=wukong, fruit=apple, id=300, address=北京}
 *             如果接收的某個(gè)參數(shù)中有多個(gè)之值比如這里fruits是一個(gè)集合,從map中只能拿到一個(gè)
 *              可以理解map底層會(huì)將相同的key的value值進(jìn)行覆蓋
 * @return
 * @RequestParam
 */
@GetMapping("/hi")
public String hi(@RequestParam(value = "name") String username,
                 @RequestParam("fruit") List<String> fruits,
                 @RequestParam Map<String, String> paras) {
    //username-wukong
    System.out.println("username-" + username);
    //fruit-[apple, pear]
    System.out.println("fruit-" + fruits);
    //paras-{name=wukong, fruit=apple, id=300, address=北京}
    System.out.println("paras-" + paras);
    return "success";
}

@CookieValue 使用

演示@CookieValue 使用,修改 ParameterController.java , 完成測(cè)試

√ 修改 index.html

<a href="/cookie" rel="external nofollow" >@CookieValue-獲取cookie值</a><br/><br/>

√ 修改 ParameterController.java

/**
 * 因?yàn)槲业臑g覽器目前沒(méi)有cookie,我們可以自己設(shè)置cookie[技巧還是非常有用]
 * 如果要測(cè)試,可以先寫(xiě)一個(gè)方法,在瀏覽器創(chuàng)建對(duì)應(yīng)的cookie
 * 說(shuō)明 1. value = "cookie_key" 表示接收名字為 cookie_key的cookie
 * 2. 如果瀏覽器攜帶來(lái)對(duì)應(yīng)的cookie , 那么 后面的參數(shù)是String ,則接收到的是對(duì)應(yīng)對(duì)value
 * 3. 后面的參數(shù)是Cookie ,則接收到的是封裝好的對(duì)應(yīng)的cookie
 */
@GetMapping("/cookie")
public String cookie(@CookieValue(value = "cookie_key", required = false) String cookie_value,
                     HttpServletRequest request,
                     @CookieValue(value = "username", required = false) Cookie cookie) {
    System.out.println("cookie_value-" + cookie_value);
    if (cookie != null) {
        System.out.println("username-" + cookie.getName() + "-" + cookie.getValue());
    }
    System.out.println("-------------------------");
    Cookie[] cookies = request.getCookies();
    for (Cookie cookie1 : cookies) {
        System.out.println(cookie1.getName() + "=>" + cookie1.getValue());
    }
    return "success";
}

@RequestBody 使用

演示@RequestBody 使用,修改 ParameterController.java , 完成測(cè)試

√ 修改 index.html

<hr/>
<h1>測(cè)試@RequestBody獲取數(shù)據(jù): 獲取POST請(qǐng)求體</h1>
<form action="/save" method="post">
    姓名: <input name="name"/> <br>
    年齡: <input name="age"/> <br/>
    <input type="submit" value="提交"/>
</form>

√ 修改 ParameterController.java

/**
 * @RequestBody 是整體取出Post請(qǐng)求內(nèi)容
 */
@PostMapping("/save")
public String postMethod(@RequestBody String content) {
    System.out.println("content-" + content);
    return "success";
}

@RequestAttribute 和 @SessionAttribute使用

演示@RequestAttribute @SessionAttribute使用,創(chuàng)建 com/hspedu/web/controller/RequestController.java , 完成測(cè)試

√ 修改 index.html

<a href="/login" rel="external nofollow" >@RequestAttribute、@SessionAttribute-獲取request域、session屬性-</a>

√ 創(chuàng)建 RequestController.java

    @GetMapping("/login")
    public String login(HttpServletRequest request) {
        request.setAttribute("user", "llp");
        //向session中添加數(shù)據(jù)
        request.getSession().setAttribute("website", "http://www.baidu.com");
        //這里需要使用forward關(guān)鍵字,如果不適用則會(huì)走視圖解析器,這
        //里視圖解析器前綴配置的是/  后綴配置的.html  ---> /ok.html
        //而請(qǐng)求轉(zhuǎn)發(fā)在服務(wù)器端執(zhí)行,/被解析成 ip:port/工程路徑
        //進(jìn)而最終得到的完整路徑是 ip:port/工程路徑/ok.html
        //但是我們這里希望訪問(wèn)的是 ip:port/工程路徑/ok這個(gè)請(qǐng)求路徑
        //因此這里手動(dòng)的設(shè)置forward:/ok ,底層會(huì)根據(jù)我們?cè)O(shè)置的路徑進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)
        return "forward:/ok";
    }
    @GetMapping("ok")
    //返回字符串,不走視圖解析器
    @ResponseBody
    public String ok(@RequestAttribute(value = "user", required = false) String username,
                     @SessionAttribute(value = "website",required = false) String website, HttpServletRequest request) {
        System.out.println("username= " + username);
        System.out.println("通過(guò)servlet api 獲取 username-" +  request.getAttribute("user"));
        System.out.println("website = " + website);
        System.out.println("通過(guò)servlet api 獲取 website-"+request.getSession().getAttribute("website"));
        return "success";
    }
}

3.復(fù)雜參數(shù)

1.基本介紹

  • 在開(kāi)發(fā)中,SpringBoot 在響應(yīng)客戶端請(qǐng)求時(shí),也支持復(fù)雜參數(shù)
  • Map、Model、Errors/BindingResult、RedirectAttributes、ServletResponse、SessionStatus、 UriComponentsBuilder、ServletUriComponentsBuilder、HttpSession
  • Map、Model 數(shù)據(jù)會(huì)被放在 request 域, 底層 request.setAttribute()
  • RedirectAttributes 重定向攜帶數(shù)據(jù)

2.復(fù)雜參數(shù)應(yīng)用實(shí)例

####1.說(shuō)明 : 演示復(fù)雜參數(shù)的使用,重點(diǎn): Map、Model、ServletResponse

2.代碼實(shí)現(xiàn)

//響應(yīng)一個(gè)注冊(cè)請(qǐng)求
@GetMapping("/register")
public String register(Map<String,Object> map,
                       Model model,
                       HttpServletResponse response) {
    //如果一個(gè)注冊(cè)請(qǐng)求,會(huì)將注冊(cè)數(shù)據(jù)封裝到map或者model
    //map中的數(shù)據(jù)和model的數(shù)據(jù),會(huì)被放入到request域中
    map.put("user","llp");
    map.put("job","碼農(nóng)");
    model.addAttribute("sal", 2500);
    //一會(huì)我們?cè)贉y(cè)試response使用
    //我們演示創(chuàng)建cookie,并通過(guò)response 添加到瀏覽器/客戶端
    Cookie cookie = new Cookie("email", "123@sohu.com");
    response.addCookie(cookie);
    //請(qǐng)求轉(zhuǎn)發(fā)
    return "forward:/registerOk";
}
@ResponseBody
@GetMapping("/registerOk")
public String registerOk(HttpServletRequest request) {
    System.out.println("user-" + request.getAttribute("user"));
    System.out.println("job-" + request.getAttribute("job"));
    System.out.println("sal-" + request.getAttribute("sal"));
    return "success";
}

4.自定義對(duì)象參數(shù)-自動(dòng)封裝

1.基本介紹

  • 在開(kāi)發(fā)中,SpringBoot 在響應(yīng)客戶端請(qǐng)求時(shí),也支持自定義對(duì)象參數(shù)
  • 完成自動(dòng)類(lèi)型轉(zhuǎn)換與格式化
  • 支持級(jí)聯(lián)封裝

2.自定義對(duì)象參數(shù)-應(yīng)用實(shí)例

1.需求說(shuō)明 : 演示自定義對(duì)象參數(shù)使用,完成自動(dòng)封裝,類(lèi)型轉(zhuǎn)換

2.代碼實(shí)現(xiàn)

1.創(chuàng)建src\main\resources\static\save.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加妖怪</title></head>
<body><h1>添加妖怪-坐騎[測(cè)試封裝 POJO;]</h1>
<form action="/savemonster" method="post">
    編號(hào): <input name="id" value="100"><br/>
    姓名: <input name="name" value="牛魔王"/><br/>
    年齡: <input name="age" value="120"/> <br/>
    婚否: <input name="isMarried" value="true"/> <br/>
    生日: <input name="birth" value="2000/11/11"/> <br/>
    <!--注意這里car對(duì)象是monster的屬性,給對(duì)象屬性賦值時(shí)需要以對(duì)象名.字段名的方式-->
    坐騎:<input name="car.name" value="法拉利"/><br/>
    價(jià)格:<input name="car.price" value="99999.9"/>
    <input type="submit" value="保存"/>
</form>
</body>
</html>

2.修改src\main\java\com\llp\springboot\controller\ParameterController.java

@PostMapping("/savemonster")
public String saveMonster(Monster monster) {
    System.out.println("monster= " + monster);
    return "success";
}

到此這篇關(guān)于SpringBoot接收參數(shù)使用的注解實(shí)例講解的文章就介紹到這了,更多相關(guān)SpringBoot接收參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringMVC日期類(lèi)型接收空值異常問(wèn)題解決方法

    SpringMVC日期類(lèi)型接收空值異常問(wèn)題解決方法

    這篇文章主要介紹了SpringMVC日期類(lèi)型接收空值異常問(wèn)題解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 使用IDEA創(chuàng)建SpringBoot項(xiàng)目的方法步驟

    使用IDEA創(chuàng)建SpringBoot項(xiàng)目的方法步驟

    這篇文章主要介紹了使用IDEA創(chuàng)建SpringBoot項(xiàng)目的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Java接口和抽象類(lèi)原理詳解

    Java接口和抽象類(lèi)原理詳解

    這篇文章主要介紹了Java接口和抽象類(lèi)原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • java @interface 注解詳解及實(shí)例

    java @interface 注解詳解及實(shí)例

    這篇文章主要介紹了java @interface 注解詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Java選擇排序和垃圾回收機(jī)制詳情

    Java選擇排序和垃圾回收機(jī)制詳情

    這篇文章主要介紹Java選擇排序和垃圾回收機(jī)制,創(chuàng)建對(duì)象就會(huì)占據(jù)內(nèi)存,如果程序在執(zhí)行過(guò)程中不能再使用某個(gè)對(duì)象,這個(gè)對(duì)象是徒耗內(nèi)存的垃圾,下面來(lái)看看文章具體內(nèi)容吧
    2021-10-10
  • Java詳細(xì)講解依賴(lài)注入的方式

    Java詳細(xì)講解依賴(lài)注入的方式

    Idea中使用@Autowire注解會(huì)出現(xiàn)提示黃線,強(qiáng)迫癥患者看著很難受,使用構(gòu)造器注入或者setter方法注入后可解決,下面我們一起來(lái)看看
    2022-06-06
  • Java線程監(jiān)聽(tīng),意外退出線程后自動(dòng)重啟的實(shí)現(xiàn)方法

    Java線程監(jiān)聽(tīng),意外退出線程后自動(dòng)重啟的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇Java線程監(jiān)聽(tīng),意外退出線程后自動(dòng)重啟的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • 一文讀懂Spring中@Bean注解的核心作用

    一文讀懂Spring中@Bean注解的核心作用

    快速了解Spring框架中的@Bean注解?本文將帶你一鍵掌握其核心作用!只需一篇短文,揭示@Bean注解如何在Spring中定義bean實(shí)例,以及管理和裝配Bean的奧秘,閱讀指南,讓Spring開(kāi)發(fā)更加得心應(yīng)手!
    2024-01-01
  • SpringBoot中實(shí)現(xiàn)Redis緩存預(yù)熱

    SpringBoot中實(shí)現(xiàn)Redis緩存預(yù)熱

    緩存預(yù)熱是一種在系統(tǒng)啟動(dòng)后,但在實(shí)際使用前將數(shù)據(jù)加載到緩存中的技術(shù),本文主要來(lái)和大家一起探討如何在Spring Boot應(yīng)用程序中實(shí)現(xiàn)Redis緩存預(yù)熱,以確保系統(tǒng)在處理請(qǐng)求前就已經(jīng)處于最佳狀態(tài),感興趣的可以了解下
    2023-11-11
  • Java設(shè)計(jì)模式模板方法(Template)原理解析

    Java設(shè)計(jì)模式模板方法(Template)原理解析

    這篇文章主要介紹了Java設(shè)計(jì)模式模板方法(Template)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論

芦溪县| 临城县| 岳阳市| 翁牛特旗| 化州市| 尼勒克县| 漳州市| 额济纳旗| 葫芦岛市| 万宁市| 宜川县| 育儿| 宁化县| 长兴县| 浪卡子县| 南漳县| 长沙市| 武穴市| 新晃| 榆中县| 西乡县| 西乌珠穆沁旗| 泽普县| 屏山县| 东城区| 仙居县| 资中县| 科尔| 东安县| 玛多县| 临朐县| 香格里拉县| 阿勒泰市| 红原县| 临西县| 克什克腾旗| 阿合奇县| 乐都县| 莆田市| 鹤壁市| 墨脱县|