欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

【方式一】原始方式

因為SpringBoot封裝了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類型需要類型轉換
        Integer age_int = Integer.parseInt(age_str);
        return "我叫" + name + ",今年" + age_int;
    }

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

【方式二】鍵值對

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

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

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

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

可以創(chuàng)建一個對象,將頁面提交的數(shù)據(jù)封裝成一個對象來接收;注意對象的屬性名要和頁面提交的參數(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)單獨接收集合數(shù)據(jù)需要加“@RequestParam”注解

    /**
     * 【方式二】3.集合數(shù)據(jù)
     * @param hobby 集合名
     */
    @RequestMapping("/demo04")
    // 單獨接收集合數(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,并設置時間模板
    public String demo05(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time) {
        System.out.println(time.getClass());
        return time.toString();
    }

【方式三】json格式

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

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;
    // 時間格式屬性要加@JsonFormat注解,并可設置時間模板
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime time;
    // 集合作為一個javaBean的屬性時,不需要加@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)容

小結

需要注意以下幾點:

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

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

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

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

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

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

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

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

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

總結

涉及到的Spring注解說明:

@RequestMapping:設置頁面訪問程序的路徑;

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

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

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

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

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

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

相關文章

最新評論