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

Spring?MVC各種參數(shù)進行封裝的方法實例

 更新時間:2023年06月26日 09:48:06   作者:會洗碗的CV工程師  
這篇文章主要給大家介紹了關于Spring?MVC各種參數(shù)進行封裝的相關資料,SpringMVC內置多種數(shù)據(jù)類型轉換器,可以根據(jù)請求中的參數(shù)與后端控制器方法的參數(shù)的關系為我們實現(xiàn)簡單的數(shù)據(jù)封裝,需要的朋友可以參考下

一、簡單數(shù)據(jù)類型

在Servlet中我們通過 request.getParameter(name) 獲取請求參數(shù)。該方式存在兩個問題:

  • 請求參數(shù)較多時會出現(xiàn)代碼冗余。
  • 與容器緊耦合

而SpringMVC支持參數(shù)注入的方式用于獲取請求數(shù)據(jù),即將請求參數(shù)直接封裝到方法的參數(shù)當中。用法如下:

1.1 控制器方法

// 獲取簡單類型參數(shù)
    @RequestMapping("/c1/param1")
    public void simpleParam(String username,int age){
        System.out.println(username+" "+age);
    }

由于我們沒有配置對應的param1頁面,這是直接在控制臺打印出訪問的參數(shù)是多少。 訪問該方法時,請求參數(shù)名和方法參數(shù)名相同,即可完成自動封裝。并在控制臺打印出來。執(zhí)行路徑為:http://localhost:8080/c1/param1?username=LYL&age=19

1.2 測試結果

OK,確實是在控制臺成功輸出了,說明封裝成功,接下來我們講一下對象類型。 

二、對象類型

SpringMVC支持將參數(shù)直接封裝為對象,首先我們先新建一個學生類。如下:

Student 

package com.example.domain;
public class Student {
    private int id;
    private String name;
    private String sex;
    public Student() {
    }
    public Student(int id, String name, String sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }
    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 getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "Student[ " +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                " ]";
    }
}

2.1 單個對象

2.1.1 控制器方法

// 獲取對象類型參數(shù)
    @RequestMapping("/c1/param2")
    public void objParam(Student student){
        System.out.println(student);
    }

 可以知道,我們在控制臺是會打印出學生的具體信息的,

訪問路徑:http://localhost:8080/c1/param2?id=1&name=LYL&sex=man

2.1.2 測試結果

OK,確實是在控制臺打印出來了,說明我們對對象類型進行封裝的時候,只需要將他們的屬性放在訪問路徑的參數(shù)里面即可 

2.2 關聯(lián)對象

要實現(xiàn)關聯(lián)對象的封裝,首先我們得先建一個Address地址類,然后在Student類里面新增一個Address類型的屬性即可。如下:

Address: 

package com.example.domain;
public class Address {
    // 地址信息
    private String info;
    // 郵編
    private String postcode;
    public String getInfo() {
        return info;
    }
    public void setInfo(String info) {
        this.info = info;
    }
    public String getPostcode() {
        return postcode;
    }
    public void setPostcode(String postcode) {
        this.postcode = postcode;
    }
    @Override
    public String toString() {
        return "Address[ " +
                "info='" + info + '\'' +
                ", postcode='" + postcode + '\'' +
                " ]";
    }
}

 記住修改Student類,如下:

package com.example.domain;
import java.util.List;
import java.util.Map;
public class Student {
    private int id;
    private String name;
    private String sex;
    // 地址對象
    private Address address;
    public Student() {
    }
    public Student(int id, String name, String sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }
    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 getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "Student[ " +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                " ]";
    }
}

2.2.1 控制器方法

    // 獲取關聯(lián)對象類型參數(shù)
    @RequestMapping("c1/param3")
    public void objParam2(Student student){
        System.out.println(student);
    }

        訪問該方法時,請求參數(shù)名和方法參數(shù)的屬性名相同,即可完成自動封裝。,因此我們可以將請求路徑寫成:http://localhost:8080/c1/param3?id=1&name=HQX&sex=woman&address.info=guangzhou&address.postcode=5201314

2.2.2 測試結果

OK,可以很明顯看到也是可以成功查詢出來了。 

三、集合類型

SpringMVC支持將參數(shù)封裝為List或Map集合,下面演示一下封裝為簡單數(shù)據(jù)類型集合的寫法。如下:

3.1 簡單數(shù)據(jù)類型集合

3.1.1 控制方法

// 綁定簡單數(shù)據(jù)類型List參數(shù),參數(shù)前必須添加@RequestParam注解
    @RequestMapping("/c/param4")
    public void listParam(@RequestParam List<String> users){
        users.forEach(System.out::println);
    }

從代碼可以看出這是訪問之后會在控制臺遍歷這個集合。

訪問路徑如下: http://localhost:8080/c/param4?users=LYL&users=HQX

3.1.2 測試結果

OK,確實成功在控制臺打印出來了。

3.2 對象數(shù)據(jù)類型集合

SpringMVC不支持將參數(shù)封裝為對象類型的List集合,但可以封裝到有List屬性的對象中。在這里我們得先在Student類添加一個集合對象。寫法如下:

Student

package com.example.domain;
import java.util.List;
import java.util.Map;
public class Student {
    private int id;
    private String name;
    private String sex;
    // 地址集合List
    private List<Address> address;
    public Student() {
    }
    public Student(int id, String name, String sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }
    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 getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public List<Address> getAddress() {
        return address;
    }
    public void setAddress(List<Address> address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "Student[ " +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                " ]";
    }
}

3.2.1 控制器方法

// 對象中包含集合屬性
    @RequestMapping("c1/param6")
    public void listParam6(Student student){
        System.out.println(student);
    }

其實和上面得對象類型沒什么不一樣,主要是參數(shù)類型得屬性不一樣,訪問路徑不一樣。 

訪問路徑:http://localhost:8080/c1/param6?id=1&name=LYL&sex=man&address[0].info=HQX&address[0].postcode=520&address[1].info=MVC&address[1].postcode=1314

3.2.2 測試結果

 OK,也是可以成功查詢出來的

3.3 Map集合

同樣,SpringMVC要封裝Map集合,需要封裝到有Map屬性的對象中。修改Student實體類,寫法如下:

Student

package com.example.domain;
import java.util.List;
import java.util.Map;
public class Student {
    private int id;
    private String name;
    private String sex;
    // 地址集合Map
    private Map<String,Address> address;
    public Student() {
    }
    public Student(int id, String name, String sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }
    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 getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Map<String, Address> getAddress() {
        return address;
    }
    public void setAddress(Map<String, Address> address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "Student[ " +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                " ]";
    }
}

3.3.1 控制器方法

// 對象中包含Map屬性
    @RequestMapping("c1/param7")
    public void mapParam(Student student){
        System.out.println(student);
    }

訪問路徑:

http://localhost:8080/c1/param7?id=1&name=LYL&sex=man&address[%27one%27].info=H&address[%27one%27].postcode=520&address[%27two%27].info=QX&address[%27two%27].postcode=1314]

3.3.2 測試結果 

OK,也是成功查出來了,至于第一條的two的info為什么為空是因為我寫少了個']',所以才出現(xiàn)一丟丟小插曲,但是不影響我們繼續(xù)輸出。

總結

到此這篇關于Spring MVC各種參數(shù)進行封裝的文章就介紹到這了,更多相關Spring MVC各種參數(shù)封裝內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java判斷101-200之間有多少個素數(shù)并輸出

    Java判斷101-200之間有多少個素數(shù)并輸出

    這篇文章主要介紹了Java判斷101-200之間有多少個素數(shù)并輸出,需要的朋友可以參考下
    2017-02-02
  • JavaWeb中的組件Filter過濾器解析

    JavaWeb中的組件Filter過濾器解析

    這篇文章主要介紹了JavaWeb中的組件Filter過濾器解析,Filter過濾器是一種用于處理和轉換數(shù)據(jù)的工具,常用于Web開發(fā)中,它可以在請求到達服務器之前或響應返回給客戶端之前對數(shù)據(jù)進行預處理或后處理,需要的朋友可以參考下
    2023-10-10
  • eclipse端口被占用問題的解決方法

    eclipse端口被占用問題的解決方法

    這篇文章主要給大家介紹了關于eclipse端口被占用問題的解決方法,文中通過圖文以及命令代碼介紹的非常詳細,對遇到這個問題的朋友們具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • SpringCloud Feign配置應用詳細介紹

    SpringCloud Feign配置應用詳細介紹

    這篇文章主要介紹了SpringCloud Feign配置應用,feign是netflix提供的服務間基于http的rpc調用框架,在spring cloud得到廣泛應用
    2022-09-09
  • Java枚舉類的規(guī)范設計與常見錯誤規(guī)避指南

    Java枚舉類的規(guī)范設計與常見錯誤規(guī)避指南

    在Java開發(fā)中,枚舉(enum)是一種強大的工具,用于定義一組固定常量集合,然而,許多開發(fā)者在使用枚舉時容易陷入設計誤區(qū),導致代碼可維護性差、運行時錯誤頻發(fā),甚至引發(fā)生產事故,所以本文給大家介紹了Java枚舉類的規(guī)范設計與常見錯誤規(guī)避,需要的朋友可以參考下
    2025-06-06
  • 解析ConcurrentHashMap: 預熱(內部一些小方法分析)

    解析ConcurrentHashMap: 預熱(內部一些小方法分析)

    ConcurrentHashMap是由Segment數(shù)組結構和HashEntry數(shù)組結構組成。Segment的結構和HashMap類似,是一種數(shù)組和鏈表結構,今天給大家普及java面試常見問題---ConcurrentHashMap知識,一起看看吧
    2021-06-06
  • Spring @Transactional工作原理詳解

    Spring @Transactional工作原理詳解

    這篇文章主要介紹了Spring @Transactional工作原理詳解,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 【Java】BigDecimal實現(xiàn)加減乘除運算代碼

    【Java】BigDecimal實現(xiàn)加減乘除運算代碼

    本篇文章主要介紹了【Java】BigDecimal實現(xiàn)加減乘除運算代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • SpringBoot中處理跨域資源的5種實現(xiàn)方法與對比

    SpringBoot中處理跨域資源的5種實現(xiàn)方法與對比

    這篇文章主要為大家詳細介紹了SpringBoot中處理跨域資源的5種實現(xiàn)方法并進行簡單對比,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2026-01-01
  • springboot整合jquery和bootstrap框架過程圖解

    springboot整合jquery和bootstrap框架過程圖解

    這篇文章主要介紹了springboot整合jquery和bootstrap框架過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12

最新評論

林芝县| 库尔勒市| 遂川县| 于都县| 石狮市| 牟定县| 汕头市| 霍邱县| 六安市| 嘉荫县| 巩义市| 奇台县| 沙雅县| 班玛县| 长垣县| 夏津县| 湖北省| 辉南县| 芦山县| 兴国县| 南丰县| 陆丰市| 宣城市| 应用必备| 静安区| 武汉市| 玉山县| 旅游| 剑阁县| 宾阳县| 镇平县| 沂水县| 泸州市| 临西县| 永平县| 依安县| 平舆县| 汉源县| 芒康县| 孙吴县| 新安县|