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

JavaEE SpringMVC 請(qǐng)求傳參的示例詳解

 更新時(shí)間:2025年02月26日 10:29:14   作者:鴿鴿程序猿  
這篇文章詳細(xì)介紹了SpringMVC中請(qǐng)求參數(shù)的傳遞和接收方式,包括傳遞單個(gè)參數(shù)、多個(gè)參數(shù)、對(duì)象參數(shù)、數(shù)組參數(shù)、集合參數(shù)以及JSON數(shù)據(jù)的傳遞和處理,感興趣的朋友一起看看吧

一、請(qǐng)求

訪問(wèn)不同的路徑, 就是發(fā)送不同的請(qǐng)求. 在發(fā)送請(qǐng)求時(shí), 可能會(huì)帶?些參數(shù), 所以學(xué)習(xí)Spring的請(qǐng)求,主要是學(xué)習(xí)如何傳遞參數(shù)到后端以及后端如何接收.
傳遞參數(shù), 咱們主要是使?瀏覽器和Postman來(lái)模擬.

二、傳遞單個(gè)參數(shù)

接收單個(gè)參數(shù), 在 Spring MVC 中直接??法中的參數(shù)就可以

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @RequestMapping(value = "/m1")
    public String m1(String request) {
        return  request;        
    }
}

使用瀏覽器訪問(wèn):http://127.0.0.1:8080/user/m1?request=hello

使用Postman:

這兩種都是鍵值對(duì)模型,其中的鍵要與方法的參數(shù)名一樣。

注意事項(xiàng):

使?基本類型來(lái)接收參數(shù)時(shí), 參數(shù)必須傳(除boolean類型), 否則會(huì)報(bào)500錯(cuò)誤, 類型不匹配時(shí), 會(huì)報(bào)400錯(cuò)誤.

三、傳遞多個(gè)參數(shù)

和接收單個(gè)參數(shù)?樣, 直接使??法的參數(shù)接收即可. 使?多個(gè)形參.

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @RequestMapping(value = "/m3")
    public String m3(String s1, int a) {
        return s1+"參數(shù):"+a;
    }
}

使用瀏覽器訪問(wèn):http://127.0.0.1:8080/user/m3?s1=你好&a=100

使用Postman:

注意事項(xiàng):

  • 這兩種都是鍵值對(duì)模型,其中的鍵要與方法的參數(shù)名一樣。
  • 參數(shù)的位置是不影響后端獲取參數(shù)的結(jié)果.
  • 基本類型來(lái)接收參數(shù)時(shí),一樣有上述問(wèn)題。

四、傳遞對(duì)象

如果參數(shù)?較多時(shí), ?法聲明就需要有很多形參. 并且后續(xù)每次新增?個(gè)參數(shù), 也需要修改?法聲明. 我們不妨把這些參數(shù)封裝為?個(gè)對(duì)象.

實(shí)例:

public class Person {
    private int id;
    private String name;
    private String password;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
@RestController
@RequestMapping(value = "/user")
public class UserController {
    @RequestMapping(value = "/m4")
    public String m4(Person person){
        return person.toString();
    }
}    

注意事項(xiàng):

  • 要傳類中的成員名,不包含類對(duì)象名。
  • 由于類定義會(huì)給成員默認(rèn)值,這里沒(méi)有基本類型不傳值報(bào)錯(cuò)問(wèn)題。

五、@RequestParam注解

后端參數(shù)重命名(后端參數(shù)映射)

某些特殊的情況下,前端傳遞的參數(shù) key 和我們后端接收的 key 可以不?致。
使用@RequestParam注解

實(shí)例:

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @RequestMapping(value = "/m5")
    public String m5(@RequestParam(value = "s")String string) {
        return string;
    }
}

注意事項(xiàng):

  • 使? @RequestParam 進(jìn)?參數(shù)重命名時(shí), 請(qǐng)求參數(shù)只能和 @RequestParam 聲明的名稱?
    致, 才能進(jìn)?參數(shù)綁定和賦值.
  • 使? @RequestParam 進(jìn)?參數(shù)重命名時(shí), 參數(shù)就變成了必傳參數(shù).
  • 要將參數(shù)變成非必傳參數(shù),需要將required = false

六、傳遞數(shù)組

Spring MVC 可以?動(dòng)綁定數(shù)組參數(shù)的賦值

實(shí)例:

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @RequestMapping(value = "/m6")
    public String m6(String[] strings) {
        return Arrays.toString(strings);
    }
}

注意事項(xiàng):

  • 使用Postman傳參的時(shí)候,每個(gè)數(shù)組值通過(guò)逗號(hào)隔開(kāi)。
  • 當(dāng)需要傳逗號(hào)作為值的時(shí)候,就需要傳解碼encode后的值。
  • 在使用瀏覽器URL訪問(wèn)時(shí),也需要將非英文字母,全部encode。

七、傳遞集合,@RequestParam

集合參數(shù):和數(shù)組類似, 同?個(gè)請(qǐng)求參數(shù)名有為多個(gè), 且需要使? @RequestParam 綁定參數(shù)關(guān)系

實(shí)例:

@RestController
@RequestMapping(value = "/user")
public class UserController {
    @RequestMapping(value = "/m7")
    public String m7(@RequestParam ArrayList<String> strings) {
        return  strings.toString();
    }
}

注意事項(xiàng):

  • 與傳遞數(shù)組同

八、傳遞JSON數(shù)據(jù)

JSON就是?種數(shù)據(jù)格式, 有??的格式和語(yǔ)法, 使??本表??個(gè)對(duì)象或數(shù)組的信息, 因此JSON本質(zhì)是字符串. 主要負(fù)責(zé)在不同的語(yǔ)?中數(shù)據(jù)傳遞和交換.

JOSN語(yǔ)法:

  • 數(shù)據(jù)在 鍵值對(duì)(Key-Value) 中
  • 數(shù)據(jù)由逗號(hào), 分隔
  • 對(duì)象? { } 表?
  • 數(shù)組? [ ] 表?
  • 值可以為對(duì)象, 也可以為數(shù)組, 數(shù)組中可以包含多個(gè)對(duì)象
  • 鍵key和值value之間通過(guò)冒號(hào)分割
  • 鍵值對(duì)之間使用逗號(hào)分割

JSON優(yōu)點(diǎn)

  • 簡(jiǎn)單易?: 語(yǔ)法簡(jiǎn)單,易于理解和編寫,可以快速地進(jìn)?數(shù)據(jù)交換
  • 跨平臺(tái)?持: JSON可以被多種編程語(yǔ)?解析和?成, 可以在不同的平臺(tái)和語(yǔ)?之間進(jìn)?數(shù)據(jù)交換和
  • 傳輸輕量級(jí): 相較于XML格式, JSON數(shù)據(jù)格式更加輕量級(jí), 傳輸數(shù)據(jù)時(shí)占?帶寬較?, 可以提?數(shù)據(jù)傳輸
  • 速度易于擴(kuò)展: JSON的數(shù)據(jù)結(jié)構(gòu)靈活,?持嵌套對(duì)象和數(shù)組等復(fù)雜的數(shù)據(jù)結(jié)構(gòu),便于擴(kuò)展和使?
  • 安全性: JSON數(shù)據(jù)格式是?種純?本格式,不包含可執(zhí)?代碼, 不會(huì)執(zhí)?惡意代碼,因此具有較?的安全性

8.1 JSON字符串和Java對(duì)象互轉(zhuǎn)

我們?cè)谶@介紹使用Jackson方式轉(zhuǎn)換,因?yàn)檫@個(gè)是Spring中集成了的,不用引入依賴。
還有fastjson,gson。

8.1.1 @Test注解

在我們寫測(cè)試代碼時(shí)我們?cè)趖est這個(gè)包下面寫。
我們可以直接寫main方法,也可以使用@Test這個(gè)方法注解在測(cè)試方法前面加上,這個(gè)注解作用相當(dāng)于為方法開(kāi)一個(gè)線程。所以可以寫多個(gè)被@Test修飾的方法同時(shí)運(yùn)行。

8.1.2 Java對(duì)象轉(zhuǎn)JSON

使用類ObjectMapper下面的writeValueAsString方法。類對(duì)象必須要有無(wú)參構(gòu)造函數(shù)。

步驟:

  • 創(chuàng)建ObjectMapper對(duì)象
  • 創(chuàng)建對(duì)象
  • 直接調(diào)用writeValueAsString 將對(duì)象轉(zhuǎn)換為JSON
 @Test
void testObjectToJson() throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        //創(chuàng)建對(duì)象
        Person person = new Person();
        person.setId(1);
        person.setName("zhangsan");
        person.setPassword("111");
        //對(duì)象轉(zhuǎn)JSON
        String j = objectMapper.writeValueAsString(person);
        System.out.println(j);
    }

8.1.3 JSON轉(zhuǎn)Java對(duì)象

使用類ObjectMapper下面的readValue方法。

  • 創(chuàng)建ObjectMapper對(duì)象
  • 創(chuàng)建json
  • 直接調(diào)用readValue將json轉(zhuǎn)換為對(duì)象
@Test
    void testJsonToObject() throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        //創(chuàng)建json
        String s = "{\"id\":1,\"name\":\"zhangsan\",\"password\":\"111\"}";
		//JSON轉(zhuǎn)對(duì)象
        Person person = objectMapper.readValue(s,Person.class);
        System.out.println(person);
    }

8.2 傳遞JSON

8.3 后端實(shí)現(xiàn)

我們只需要在方法參數(shù)上加上@RequestBody這個(gè)注解。

RequestBody: 請(qǐng)求正?,意思是這個(gè)注解作?在請(qǐng)求正?的數(shù)據(jù)綁定,請(qǐng)求參數(shù)必須在寫在請(qǐng)求正?中

@RequestMapping(value ="/j1")
    public String j1(@RequestBody Person person) {
        return person.toString();
    }

postman傳參

到此這篇關(guān)于 JavaEE SpringMVC 請(qǐng)求傳參的文章就介紹到這了,更多相關(guān) JavaEE SpringMVC 請(qǐng)求傳參內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?Cloud灰度部署實(shí)現(xiàn)過(guò)程詳解

    Spring?Cloud灰度部署實(shí)現(xiàn)過(guò)程詳解

    這篇文章主要為大家介紹了Spring?Cloud灰度部署實(shí)現(xiàn)過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • MyBatis動(dòng)態(tài)SQL如何實(shí)現(xiàn)前端指定返回字段

    MyBatis動(dòng)態(tài)SQL如何實(shí)現(xiàn)前端指定返回字段

    這篇文章主要介紹了MyBatis動(dòng)態(tài)SQL如何實(shí)現(xiàn)前端指定返回字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringBoot整合Elasticsearch實(shí)現(xiàn)全文搜索功能

    SpringBoot整合Elasticsearch實(shí)現(xiàn)全文搜索功能

    在現(xiàn)代應(yīng)用程序中,對(duì)于大量數(shù)據(jù)的高效管理和快速檢索是至關(guān)重要的,Elasticsearch作為一款開(kāi)源的全文搜索引擎,為開(kāi)發(fā)者提供了強(qiáng)大而靈活的搜索解決方案,本文將介紹如何通過(guò)Spring Boot框架整合Elasticsearch,實(shí)現(xiàn)高效的全文搜索功能,需要的朋友可以參考下
    2025-12-12
  • Spring IOC創(chuàng)建對(duì)象的兩種方式

    Spring IOC創(chuàng)建對(duì)象的兩種方式

    這篇文章主要給大家介紹了關(guān)于Spring IOC創(chuàng)建對(duì)象的兩種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java中實(shí)現(xiàn)日志記錄的方案總結(jié)

    Java中實(shí)現(xiàn)日志記錄的方案總結(jié)

    在平時(shí)使用到一些軟件中,比如某寶或者某書,通過(guò)記錄用戶的行為來(lái)構(gòu)建和分析用戶的行為數(shù)據(jù),這就需要使用到日志系統(tǒng)來(lái)存儲(chǔ)或者記錄數(shù)據(jù),小編為大家整理了幾種Java日志方案,希望對(duì)大家有所幫助
    2024-12-12
  • java線程的基礎(chǔ)實(shí)例解析

    java線程的基礎(chǔ)實(shí)例解析

    java中線程的基本方法的熟練使用是精通多線程編程的必經(jīng)之路,線程相關(guān)的基本方法有wait,notify,notifyAll,sleep,join,yield等,本文淺要的介紹一下它們的使用方式
    2021-06-06
  • 查看Spring容器中bean的五種方法小結(jié)

    查看Spring容器中bean的五種方法小結(jié)

    近期在寫Spring項(xiàng)目的時(shí)候,需要通過(guò)注解的形式去替代之前直接將Bean存放在Spring容器這種方式,以此來(lái)簡(jiǎn)化對(duì)于Bean對(duì)象的操作,這篇文章主要給大家介紹了關(guān)于如何查看Spring容器中bean的五種方法,需要的朋友可以參考下
    2024-05-05
  • 使用?mybatis?自定義日期類型轉(zhuǎn)換器的示例代碼

    使用?mybatis?自定義日期類型轉(zhuǎn)換器的示例代碼

    這篇文章主要介紹了使用?mybatis?自定義日期類型轉(zhuǎn)換器的示例代碼,這里使用mybatis中的typeHandlers?實(shí)現(xiàn)的,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • Springboot項(xiàng)目使用Slf4j將日志保存到本地目錄的實(shí)現(xiàn)代碼

    Springboot項(xiàng)目使用Slf4j將日志保存到本地目錄的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Springboot項(xiàng)目使用Slf4j將日志保存到本地目錄的實(shí)現(xiàn)方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java 獲取本機(jī)IP地址的方法的兩種方法

    Java 獲取本機(jī)IP地址的方法的兩種方法

    本文主要介紹了Java 獲取本機(jī)IP地址的方法的兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01

最新評(píng)論

永靖县| 抚顺市| 云林县| 柘城县| 那曲县| 阿合奇县| 启东市| 余江县| 黔江区| 罗甸县| 军事| 蓬安县| 信丰县| 大城县| 吉木萨尔县| 大埔县| 仙居县| 抚远县| 类乌齐县| 邻水| 启东市| 临西县| 乐业县| 巴马| 平凉市| 遵义县| 江阴市| 沙雅县| 临沂市| 新建县| 大姚县| 北宁市| 武汉市| 繁峙县| 阳西县| 白银市| 井研县| 囊谦县| 淮南市| 武山县| 永年县|