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

JavaEE SpringMVC 請求傳參的示例詳解

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

一、請求

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

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

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

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

使用瀏覽器訪問:http://127.0.0.1:8080/user/m1?request=hello

使用Postman:

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

注意事項:

使?基本類型來接收參數(shù)時, 參數(shù)必須傳(除boolean類型), 否則會報500錯誤, 類型不匹配時, 會報400錯誤.

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

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

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

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

使用Postman:

注意事項:

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

四、傳遞對象

如果參數(shù)?較多時, ?法聲明就需要有很多形參. 并且后續(xù)每次新增?個參數(shù), 也需要修改?法聲明. 我們不妨把這些參數(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();
    }
}    

注意事項:

  • 要傳類中的成員名,不包含類對象名。
  • 由于類定義會給成員默認值,這里沒有基本類型不傳值報錯問題。

五、@RequestParam注解

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

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

實例:

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

注意事項:

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

六、傳遞數(shù)組

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

實例:

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

注意事項:

  • 使用Postman傳參的時候,每個數(shù)組值通過逗號隔開。
  • 當需要傳逗號作為值的時候,就需要傳解碼encode后的值。
  • 在使用瀏覽器URL訪問時,也需要將非英文字母,全部encode。

七、傳遞集合,@RequestParam

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

實例:

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

注意事項:

  • 與傳遞數(shù)組同

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

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

JOSN語法:

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

JSON優(yōu)點

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

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

我們在這介紹使用Jackson方式轉(zhuǎn)換,因為這個是Spring中集成了的,不用引入依賴。
還有fastjson,gson。

8.1.1 @Test注解

在我們寫測試代碼時我們在test這個包下面寫。
我們可以直接寫main方法,也可以使用@Test這個方法注解在測試方法前面加上,這個注解作用相當于為方法開一個線程。所以可以寫多個被@Test修飾的方法同時運行。

8.1.2 Java對象轉(zhuǎn)JSON

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

步驟:

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

8.1.3 JSON轉(zhuǎn)Java對象

使用類ObjectMapper下面的readValue方法。

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

8.2 傳遞JSON

8.3 后端實現(xiàn)

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

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

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

postman傳參

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

相關(guān)文章

  • Springboot中整合knife4j接口文檔的過程詳解

    Springboot中整合knife4j接口文檔的過程詳解

    knife4j就swagger的升級版API文檔的一個框架,但是用起來比swagger方便多了,UI更加豐富,這篇文章主要介紹了Springboot中整合knife4j接口文檔,需要的朋友可以參考下
    2022-04-04
  • mybatis配置對象包含對象以及List的方式

    mybatis配置對象包含對象以及List的方式

    這篇文章主要介紹了mybatis配置對象包含對象以及List的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 圖解Java經(jīng)典算法冒泡排序的原理與實現(xiàn)

    圖解Java經(jīng)典算法冒泡排序的原理與實現(xiàn)

    冒泡排序是一種簡單的排序算法,它也是一種穩(wěn)定排序算法。其實現(xiàn)原理是重復(fù)掃描待排序序列,并比較每一對相鄰的元素,當該對元素順序不正確時進行交換。一直重復(fù)這個過程,直到?jīng)]有任何兩個相鄰元素可以交換,就表明完成了排序
    2022-09-09
  • SpringBoot中4種接口冪等性的實現(xiàn)策略

    SpringBoot中4種接口冪等性的實現(xiàn)策略

    冪等性是指對同一操作執(zhí)行多次與執(zhí)行一次的效果相同,不會因為重復(fù)執(zhí)行而產(chǎn)生副作用,本文整理了4個SpringBoot實現(xiàn)接口冪等性的方法,大家可以根據(jù)需要進行選擇
    2025-04-04
  • Java實現(xiàn)插入排序算法可視化的示例代碼

    Java實現(xiàn)插入排序算法可視化的示例代碼

    插入排序的算法描述是一種簡單直觀的排序算法。其原理是通過構(gòu)建有序序列,對于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。本文將用Java語言實現(xiàn)插入排序算法并進行可視化,感興趣的可以了解一下
    2022-08-08
  • Java中的clone方法詳解_動力節(jié)點Java學(xué)院整理

    Java中的clone方法詳解_動力節(jié)點Java學(xué)院整理

    clone顧名思義就是復(fù)制, 在Java語言中, clone方法被對象調(diào)用,所以會復(fù)制對象。下面通過本文給大家介紹java中的clone方法,感興趣的朋友一起看看吧
    2017-06-06
  • 詳解Java實現(xiàn)LRU緩存

    詳解Java實現(xiàn)LRU緩存

    這篇文章主要介紹了詳解Java實現(xiàn)LRU緩存,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • SpringSecurity實現(xiàn)自定義登錄方式

    SpringSecurity實現(xiàn)自定義登錄方式

    本文介紹自定義登錄流程,包括自定義AuthenticationToken、AuthenticationFilter、AuthenticationProvider以及SecurityConfig配置類,詳細解析了認證流程的實現(xiàn),為開發(fā)人員提供了具體的實施指導(dǎo)和參考
    2024-09-09
  • springboot應(yīng)用中使用過濾器的過程詳解

    springboot應(yīng)用中使用過濾器的過程詳解

    過濾器通常用于實現(xiàn)跨切面的功能,例如身份驗證、日志記錄、請求和響應(yīng)的修改、性能監(jiān)控等,這篇文章主要介紹了springboot應(yīng)用中使用過濾器,需要的朋友可以參考下
    2023-06-06
  • Java實現(xiàn)手寫線程池實例并測試詳解

    Java實現(xiàn)手寫線程池實例并測試詳解

    這篇文章主要來模擬一下線程池和工作隊列的流程,以及編寫代碼和測試類進行測試。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-02-02

最新評論