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

SpringBoot接收請求參數(shù)的四種方式總結(jié)

 更新時(shí)間:2023年09月12日 09:38:01   作者:特立獨(dú)行的程序員  
這篇文章主要給大家介紹了關(guān)于SpringBoot接收請求參數(shù)的四種方式,文中通過代碼以及圖文介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SpringBoot具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

【方式一】原始方式

因?yàn)镾pringBoot封裝了Servlet,所以也允許使用HttpServletRequest類中的方法來獲取

    /**
     * 【方式一】原始方式
     */
    @RequestMapping("/demo01")
    public String demo01(HttpServletRequest request) {
        // 參數(shù)名要與頁面提交的參數(shù)名一致
        String name = request.getParameter("name");
        String age_str = request.getParameter("age");
        // 接收到的數(shù)據(jù)都是String類型,想要int類型需要類型轉(zhuǎn)換
        Integer age_int = Integer.parseInt(age_str);
        return "我叫" + name + ",今年" + age_int;
    }

使用postman發(fā)送:http://localhost:8080/demo01?name=張三&age=30,查看結(jié)果

【方式二】鍵值對

1、直接使用參數(shù)名(或別名)

springboot允許直接使用參數(shù)獲取,簡單優(yōu)雅;另外,還也可使用“@RequestParam”注解給參數(shù)設(shè)置別名,這樣頁面提交的參數(shù)名使用別名也能獲取到;

/**
	 * 【方式二】1.直接使用參數(shù)名
	 */
	@RequestMapping("/demo02")
	public String demo02(String name, Integer age) {
	    return "我叫" + name + ",今年" + age;
	}
    /**
     * 【方式二】1.直接使用別名
     */
    @RequestMapping("/demo02")
    // 可用@RequestParam給參數(shù)設(shè)置別名
    public String demo02(@RequestParam(name="Name")String name, Integer age) {
        return "我叫" + name + ",今年" + age;
    }

2、對象數(shù)據(jù)

可以創(chuàng)建一個(gè)對象,將頁面提交的數(shù)據(jù)封裝成一個(gè)對象來接收;注意對象的屬性名要和頁面提交的參數(shù)名一致

/**
 * 人類
 */
public class Person {
    /**
     * 姓名
     */
    private String name;
    /**
     * 年齡
     */
    private Integer age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
    /**
     * 【方式二】2.對象數(shù)據(jù)
     */
    @RequestMapping("/demo03")
    public String demo03(Person person) {
        return "我叫" + person.getName() + ",今年" + person.getAge();
    }

3、數(shù)組/集合數(shù)據(jù)

(1)數(shù)組

/**
	 * 【方式二】3.數(shù)組數(shù)據(jù)
	 * @param hobby 數(shù)組名
	 */
	@RequestMapping("/param04")
	public String param04(String[] hobby) {
	    return Arrays.toString(hobby);
	}

(2)單獨(dú)接收集合數(shù)據(jù)需要加“@RequestParam”注解

    /**
     * 【方式二】3.集合數(shù)據(jù)
     * @param hobby 集合名
     */
    @RequestMapping("/demo04")
    // 單獨(dú)接收集合數(shù)據(jù)需要加@RequestParam
    public String param04(@RequestParam List hobby) {
        return hobby.toString();
    }

4、日期數(shù)據(jù)

    /**
     * 【方式二】4.日期數(shù)據(jù)
     * @param time 參數(shù)名
     */
    @RequestMapping("/demo05")
    // 接收日期數(shù)據(jù)需要加@DateTimeFormat,并設(shè)置時(shí)間模板
    public String demo05(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time) {
        System.out.println(time.getClass());
        return time.toString();
    }

【方式三】json格式

創(chuàng)建兩個(gè)javaBean,Address類是User類的一個(gè)屬性

import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;
import java.util.List;
/**
 * 用戶類
 */
public class User {
    private String username;
    private String password;
    private Integer age;
    private Double score;
    private Address address;
    // 時(shí)間格式屬性要加@JsonFormat注解,并可設(shè)置時(shí)間模板
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime time;
    // 集合作為一個(gè)javaBean的屬性時(shí),不需要加@RequestParam注解
    private List hobby;
	/* set()、get()、toString()方法 */
}
/**
 * 聯(lián)系地址
 */
public class Address {
    private String phone;
	/* set()、get()、toString()方法 */
}
    /**
     * 【方式三】json數(shù)據(jù)
     * @param user 用戶類
     */
    @RequestMapping("/demo06")
    public String demo06(@RequestBody User user){
        // 打印user對象的內(nèi)容
        System.out.println(user);
        return "success";
    }

控制臺打印user對象內(nèi)容

小結(jié)

需要注意以下幾點(diǎn):

(1)接收時(shí)間格式的數(shù)據(jù),屬性要加@JsonFormat注解;

(2)封裝json對象數(shù)據(jù),形參前面要加@RequestBody,表示將請求的json數(shù)據(jù)轉(zhuǎn)換成對象接收;

(3)使用postman發(fā)送json數(shù)據(jù),需要使用post提交方式;因?yàn)閖son數(shù)據(jù)要放在請求體中,get提交沒有請求體;

(4)這種接收方式,需要跟前面的【鍵值對】接收對象數(shù)據(jù)的方式區(qū)分開。

這種方式提交的json數(shù)據(jù),接收時(shí)需要加@RequestBody;前面【鍵值對】接收對象數(shù)據(jù)的方式,提交的是鍵值對數(shù)據(jù),接收時(shí)不需要加注解。

所以,如果發(fā)現(xiàn)頁面提交的數(shù)據(jù),程序接收不到,需要考慮是不是錯(cuò)誤的把頁面提交的json數(shù)據(jù)當(dāng)成是一個(gè)對象來接收了;反之,如果傳入的參數(shù)是鍵值對方式,用對象加@RequestBody注解來接收,也接收不到。

【方式四】路徑參數(shù)

路徑參數(shù),是指把數(shù)據(jù)附加在訪問的路徑后面,數(shù)據(jù)以“/”間隔。在程序中接收的時(shí)候,需要在映射的路徑后面給參數(shù)設(shè)置參數(shù)名,并在形參列表中使用@PathVariable()注解,將參數(shù)值傳給形參。

/**
	 * 【方式四】路徑參數(shù)
	 */
	// 需要在路徑后面加{},{}內(nèi)寫別名,表明該位置的參數(shù)值傳給形參中的哪個(gè)變量
	@RequestMapping("/demo07/{name}/{age}")
	public String demo07(@PathVariable("name") String name,
	                     @PathVariable("age") String age){
	    return "我叫" + name + ",今年" + age;
	}

總結(jié)

涉及到的Spring注解說明:

@RequestMapping:設(shè)置頁面訪問程序的路徑;

@RequestParam:用于給參數(shù)設(shè)置別名、單獨(dú)使用集合時(shí);

@DateTimeFormat:用于單獨(dú)接收時(shí)間格式的數(shù)據(jù),格式化數(shù)據(jù);

@JsonFormat:接收json數(shù)據(jù)時(shí),用于對象中需要格式化的數(shù)據(jù);

@RequestBody:接收json數(shù)據(jù)時(shí),用于將請求的json數(shù)據(jù)轉(zhuǎn)換成對象接受;

@PathVariable:接收路徑參數(shù)時(shí),用于將參數(shù)值傳分配給形參;

到此這篇關(guān)于SpringBoot接收請求參數(shù)的四種方式的文章就介紹到這了,更多相關(guān)SpringBoot接收請求參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java/word+fusionchart生成圖表深入分析

    java/word+fusionchart生成圖表深入分析

    本文將以java/word+fusionchart生成圖表問題深入解析,有興趣的朋友可以參考下
    2012-11-11
  • idea插件之如何使用JarEditor編輯Java JAR文件

    idea插件之如何使用JarEditor編輯Java JAR文件

    JarEditor是一款用于在IntelliJIDEA中直接編輯JAR文件的插件,支持反編譯查看和編輯.class文件,并提供即時(shí)編譯與保存功能,通過JarEditor,用戶可以在IDE內(nèi)一站式完成JAR文件的編輯、管理和打包操作,提高開發(fā)效率,但在生產(chǎn)環(huán)境中使用前,請確保備份并測試修改
    2025-01-01
  • SpringBoot設(shè)置編碼UTF-8的兩種方法

    SpringBoot設(shè)置編碼UTF-8的兩種方法

    本文通過兩種方式給大家介紹SpringBoot 設(shè)置編碼UTF-8 ,每種方式通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • springboot中事務(wù)管理@Transactional的注意事項(xiàng)與使用場景

    springboot中事務(wù)管理@Transactional的注意事項(xiàng)與使用場景

    今天小編就為大家分享一篇關(guān)于springboot中事務(wù)管理@Transactional的注意事項(xiàng)與使用場景,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • JavaCV攝像頭實(shí)戰(zhàn)之實(shí)現(xiàn)口罩檢測

    JavaCV攝像頭實(shí)戰(zhàn)之實(shí)現(xiàn)口罩檢測

    這篇文章主要介紹了利用JavaCV實(shí)現(xiàn)口罩檢測,功能是檢測攝像頭內(nèi)的人是否帶了口罩,把檢測結(jié)果實(shí)時(shí)標(biāo)注在預(yù)覽窗口。感興趣的可以試一試
    2022-01-01
  • Java用list儲存,遍歷,查詢指定信息過程詳解

    Java用list儲存,遍歷,查詢指定信息過程詳解

    這篇文章主要介紹了Java用list儲存,遍歷,查詢指定信息過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • java byte與base64的互轉(zhuǎn)的實(shí)現(xiàn)示例

    java byte與base64的互轉(zhuǎn)的實(shí)現(xiàn)示例

    在項(xiàng)目開發(fā)中經(jīng)常用到,比如前端上送文件流(byte[])到后臺并轉(zhuǎn)成文件,本文主要介紹了java byte與base64的互轉(zhuǎn)的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別

    Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別

    相信大家在日常開發(fā)中這三種方法用到的應(yīng)該很多,本文主要介紹了Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別,感興趣的可以了解一下
    2021-09-09
  • Mybatis代碼生成器Mybatis Generator(MBG)實(shí)戰(zhàn)詳解

    Mybatis代碼生成器Mybatis Generator(MBG)實(shí)戰(zhàn)詳解

    本文我們主要實(shí)戰(zhàn)Mybatis官方的代碼生成器:Mybatis Generator(MBG),掌握它以后,可以簡化大部分手寫代碼,我們只需要寫復(fù)雜邏輯代碼,需要的朋友可以參考下
    2023-05-05
  • Installij IDEA install或clean項(xiàng)目的使用

    Installij IDEA install或clean項(xiàng)目的使用

    這篇文章主要介紹了Installij IDEA install或clean項(xiàng)目的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論

两当县| 海安县| 繁昌县| 中阳县| 理塘县| 九龙坡区| 保德县| 鄯善县| 铜川市| 和硕县| 黄平县| 巴彦县| 长顺县| 新巴尔虎左旗| 上犹县| 鄂尔多斯市| 太原市| 泰顺县| 石家庄市| 石棉县| 门源| 平塘县| 措美县| 仁怀市| 伊金霍洛旗| 海宁市| 岢岚县| 万州区| 赤水市| 安新县| 前郭尔| 米易县| 永康市| 巢湖市| 错那县| 邯郸市| 景洪市| 石家庄市| 江孜县| 南通市| 柏乡县|