亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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";
    }

控制臺(tái)打印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)文章

最新評(píng)論