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

Spring Boot 控制層之參數(shù)傳遞方法詳解

 更新時間:2021年09月06日 10:04:17   作者:CN-Dust  
這篇文章主要介紹了Spring Boot 控制層之參數(shù)傳遞方法詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

當然,您自己創(chuàng)建一個項目也是可以的。

bean包下的Student.java

package com.example.demo.bean;
public class Student {
    private Integer id; //學號
    private String name; //姓名
    public Student() {
    }
    public Student(Integer id, String name) {
        this.id = id;
        this.name = name;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

無注解獲取參數(shù)

  • 直接把 HTTP 請求的參數(shù)寫在后臺方法的形參中,允許參數(shù)為空。
  • HTTP 請求的參數(shù)值(字符串)將自動轉換為方法形參的類型。
  • 要求:方法的參數(shù)名稱要和 HTTP 請求的參數(shù)名稱保持一致。
  • 適用于 GET 和 POST 請求方式。

后臺代碼:

@RestController
public class TestController {

    @RequestMapping("/test1")
    public Student test1(Integer id, String name) {
        Student s=new Student();
        s.setId(id);
        s.setName(name);
        return s;
    }
}

前端代碼:

<body>
	<p th:inline = "none" >hello, [[${msg}]]</p>
	<p th:inline = "none" >hello, [(${msg})]</p>
</body>

用postman嘗試:
前端請求:http://localhost:8080/test1?id=2019001&name=小明

參數(shù)是 key=value 形式
value 默認都是字符串類型

參數(shù)和請求之間用?連接
參數(shù)之間用&連接

在這里插入圖片描述

為空值的情況:

在這里插入圖片描述

使用HttpServletRequest對象

方法的參數(shù)中添加 HttpServletRequest 對象。
通過該對象 getParameter(“xxx”) 獲取請求的 “xxx” 參數(shù)值(字符串值)。

適用于 GET 和 POST 請求方式。

后臺代碼:

@RequestMapping("/test2")
    public Student test2( HttpServletRequest request ) {
        Integer id = Integer.parseInt( request.getParameter("id") ); 
        String name = request.getParameter("name");
        Student s=new Student(id,name);
        return s;
    }

postman測試:

在這里插入圖片描述

使用實體類封裝 ★

直接使用實體類做為控制器參數(shù),Spring Boot會自動創(chuàng)建這個類的對象,并用 HTTP 參數(shù)裝配它。
要求:實體類屬性名稱要和 HTTP 請求的參數(shù)名稱保持一致。
適用于 GET 和 POST 請求方式。

后臺代碼:

@RequestMapping("/test3")
    public Student test3( Student s ) {
        return s;
    }

要求:實體類屬性名稱要和 HTTP 請求的參數(shù)名稱保持一致

postman測試:
一般情況:

在這里插入圖片描述

多的參數(shù)不接收:

在這里插入圖片描述

為空:

在這里插入圖片描述

名稱不一致:

在這里插入圖片描述

使用 @RequestParam 獲取參數(shù)

 在無注解的情況下,要求 HTTP 參數(shù)名與控制器參數(shù)名稱保持一致,然
而現(xiàn)在在前后臺分離的趨勢下,前端的命名規(guī)則可能與后端的不一樣。
使用 @RequestParam 注解來確定前后端參數(shù)名稱的映射關系。
適用于 GET 和 POST 請求方式。
@RequestParam 有三個配置參數(shù):
value 為接收 HTTP 請求的參數(shù)名。

required 表示是否必須,默認為 true,表示參數(shù)必填。
defaultValue 可設置請求參數(shù)的默認值。

后臺代碼:

@RequestMapping("/test4")
    public Student test4( @RequestParam(value="stu_id") Integer id,
                          @RequestParam(value="stu_name") String name) {
        Student s=new Student();
        s.setId(id);
        s.setName(name);
        return s;
    }

postman測試:

在這里插入圖片描述
在這里插入圖片描述

報錯:stu_name參數(shù)默認必填

在這里插入圖片描述

添加默認值

@RequestMapping("/test4")
    public Student test4(@RequestParam(value="stu_id", required = true, defaultValue = "2019000") Integer id,
                         @RequestParam(value="stu_name", required = false) String name) {
        Student s=new Student();
        s.setId(id);
        s.setName(name);
        return s;
    }

postman測試:

在這里插入圖片描述

全為空:

在這里插入圖片描述

使用 @PathVariable 獲取參數(shù)

REST風格請求,例如:http://localhost:8080/test4/2019001/小明(數(shù)據(jù)直接放在請求路徑上,并用"/“連接)
后臺請求映射:
@RequestMapping(”/test4/{id}/{name}")
參數(shù)綁定:
@PathVariable(“xxx”) 將占位符參數(shù)"xxx"綁定到控制器方法的形參中。
注意:
(1)路徑上必須有參數(shù)(required=true),且不能設置默認值。
(2)適用于 GET 和 POST 請求方式。

后臺代碼:

@RequestMapping("/test5/{id}/{name}")
    public Student test5( @PathVariable("id") Integer id,//這里有兩種寫法
                          @PathVariable(value = "name") String name) {
        Student s=new Student();
        s.setId(id);
        s.setName(name);
        return s;
    }

前端請求:(這次不用postman測試了,用也可以,都一樣)

在這里插入圖片描述

錯誤的前端請求:

在這里插入圖片描述


@PathVariable與@RequestParam的區(qū)別

在這里插入圖片描述

使用 @RequestBody 獲取參數(shù)

@RequestBody 主要用來接收前端傳遞的 json 數(shù)據(jù)。
 注意:
(1)使用 @RequestBody 接收數(shù)據(jù)時,前端必須 POST 方式提交;
(2)且必須與 contentType = “application/json” 配合使用。

不設置時使用的是默認值:application/x-www-form-urlencoded

后臺代碼

@PostMapping("/test6")
    public Student test6(@RequestBody Student s) {
        return s;
    }

postman測試:

在這里插入圖片描述

前端傳遞對象數(shù)組

后臺代碼

@PostMapping("/test6")
    public List<Student> test6(@RequestBody List<Student> list) {
        Iterator it = list.iterator();
        while (it.hasNext()){
            Student s=(Student)it.next();
            System.out.println(s.getId()+":"+s.getName());
        }
        return list;
    }

postman測試:

在這里插入圖片描述

控制器代碼完整版:

TestController.java

package com.example.demo.controller;

import com.example.demo.bean.Student;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.*;

@RestController
@ServletComponentScan
public class TestController {

    @RequestMapping("/test1")
    public Student test1(Integer id, String name) {
        Student s=new Student();
        s.setId(id);
        s.setName(name);
        return s;
    }
    @RequestMapping("/test2")
    public Student test2( HttpServletRequest request ) {
        Integer id = Integer.parseInt( request.getParameter("id") ); // 轉換一下(沒有判斷空串或null)
        String name = request.getParameter("name");
        Student s=new Student(id,name);
        return s;
    }
    @RequestMapping("/test3")
    public Student test3( Student s ) {
        return s;
    }
    @RequestMapping("/test4")
    public Student test4(@RequestParam(value="stu_id", required = true, defaultValue = "2019000") Integer id,
                         @RequestParam(value="stu_name", required = false) String name) {
        Student s=new Student();
        s.setId(id);
        s.setName(name);
        return s;
    }
    @RequestMapping("/test5/{id}/{name}")
    public Student test5( @PathVariable("id") Integer id,//這里有兩種寫法
                          @PathVariable(value = "name") String name) {
        Student s=new Student();
        s.setId(id);
        s.setName(name);
        return s;
    }
    @PostMapping("/test6")
    public List<Student> test6(@RequestBody List<Student> list) {
        Iterator it = list.iterator();
        while (it.hasNext()){
            Student s=(Student)it.next();
            System.out.println(s.getId()+":"+s.getName());
        }
        return list;
    }

}

到此這篇關于Spring Boot 控制層之參數(shù)傳遞方法詳解的文章就介紹到這了,更多相關Spring Boot 參數(shù)傳遞內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java的遞歸算法詳解

    Java的遞歸算法詳解

    Java遞歸算法是基于Java語言實現(xiàn)的遞歸算法。遞歸算法對解決一大類問題很有效,它可以使算法簡潔和易于理解。接下來通過本文給大家介紹Java遞歸算法相關知識,感興趣的朋友一起學習吧
    2021-09-09
  • 教你如何用Java簡單爬取WebMagic

    教你如何用Java簡單爬取WebMagic

    今天給大家?guī)淼氖顷P于Java爬蟲的相關知識,文章圍繞著Java如何爬取WebMagic展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • spring+hibernate 兩種整合方式配置文件的方法

    spring+hibernate 兩種整合方式配置文件的方法

    本篇文章主要介紹了spring+hibernate 兩種整合方式配置文件的方法,主要有兩種方式 1、注解方式 2、xml方式實現(xiàn),有興趣的可以了解一下。
    2017-04-04
  • springboot @RequestBody 接收字符串實例

    springboot @RequestBody 接收字符串實例

    這篇文章主要介紹了springboot @RequestBody 接收字符串實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java中的Random()函數(shù)及兩種構造方法

    Java中的Random()函數(shù)及兩種構造方法

    Java中存在著兩種Random函數(shù)分別是java.lang.Math.Random和java.util.Random,文中給大家介紹了random()的兩種構造方法,感興趣的朋友跟隨小編一起看看吧
    2018-11-11
  • RabbitMQ實現(xiàn)Work Queue工作隊列的示例詳解

    RabbitMQ實現(xiàn)Work Queue工作隊列的示例詳解

    工作隊列(又稱任務隊列)的主要思想是避免立即執(zhí)行資源密集型任務,而不得不等待它完成。本篇文章將記錄和分享RabbitMQ工作隊列相關的知識點,希望對大家有所幫助
    2023-01-01
  • java 使用JDBC構建簡單的數(shù)據(jù)訪問層實例詳解

    java 使用JDBC構建簡單的數(shù)據(jù)訪問層實例詳解

    以下是如何使用JDBC構建一個數(shù)據(jù)訪問層,包括數(shù)據(jù)轉換(將從數(shù)據(jù)庫中查詢的數(shù)據(jù)封裝到對應的對象中……),數(shù)據(jù)庫的建立,以及如何連接到數(shù)據(jù)庫,需要的朋友可以參考下
    2016-11-11
  • Mybatis官方生成器的使用方式

    Mybatis官方生成器的使用方式

    本文詳細介紹了MyBatisGenerator(MBG)的使用方法,通過實際代碼示例展示了如何配置Maven插件來自動化生成MyBatis項目所需的實體類、Mapper接口和MapperXML文件,MBG通過配置文件和Maven插件,可以大大減少開發(fā)人員在進行CRUD操作時的重復工作,提升開發(fā)效率和代碼一致性
    2025-01-01
  • Spring自定義注解實現(xiàn)接口版本管理

    Spring自定義注解實現(xiàn)接口版本管理

    這篇文章主要介紹了Spring自定義注解實現(xiàn)接口版本管理,RequestMappingHandlerMapping類是與 @RequestMapping相關的,它定義映射的規(guī)則,即滿足怎樣的條件則映射到那個接口上,需要的朋友可以參考下
    2023-11-11
  • java 文件和byte互轉的實例

    java 文件和byte互轉的實例

    下面小編就為大家分享一篇java 文件和byte互轉的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11

最新評論

新津县| 油尖旺区| 轮台县| 花莲市| 绩溪县| 上饶市| 徐水县| 泰和县| 宜川县| 安新县| 保定市| 内江市| 孙吴县| 沐川县| 广州市| 崇左市| 凌云县| 平武县| 镇远县| 龙山县| 连平县| 南昌市| 衡山县| 通许县| 卫辉市| 安图县| 吉木萨尔县| 蕉岭县| 灌南县| 双辽市| 淳化县| 姚安县| 金昌市| 登封市| 友谊县| 甘肃省| 屏南县| 平山县| 渝中区| 侯马市| 张家界市|