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

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

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

一、簡(jiǎn)單數(shù)據(jù)類(lèi)型

在Servlet中我們通過(guò) request.getParameter(name) 獲取請(qǐng)求參數(shù)。該方式存在兩個(gè)問(wèn)題:

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

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

1.1 控制器方法

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

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

1.2 測(cè)試結(jié)果

OK,確實(shí)是在控制臺(tái)成功輸出了,說(shuō)明封裝成功,接下來(lái)我們講一下對(duì)象類(lèi)型。 

二、對(duì)象類(lèi)型

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

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 單個(gè)對(duì)象

2.1.1 控制器方法

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

 可以知道,我們?cè)诳刂婆_(tái)是會(huì)打印出學(xué)生的具體信息的,

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

2.1.2 測(cè)試結(jié)果

OK,確實(shí)是在控制臺(tái)打印出來(lái)了,說(shuō)明我們對(duì)對(duì)象類(lèi)型進(jìn)行封裝的時(shí)候,只需要將他們的屬性放在訪問(wèn)路徑的參數(shù)里面即可 

2.2 關(guān)聯(lián)對(duì)象

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

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類(lèi),如下:

package com.example.domain;
import java.util.List;
import java.util.Map;
public class Student {
    private int id;
    private String name;
    private String sex;
    // 地址對(duì)象
    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 控制器方法

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

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

2.2.2 測(cè)試結(jié)果

OK,可以很明顯看到也是可以成功查詢出來(lái)了。 

三、集合類(lèi)型

SpringMVC支持將參數(shù)封裝為L(zhǎng)ist或Map集合,下面演示一下封裝為簡(jiǎn)單數(shù)據(jù)類(lèi)型集合的寫(xiě)法。如下:

3.1 簡(jiǎn)單數(shù)據(jù)類(lèi)型集合

3.1.1 控制方法

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

從代碼可以看出這是訪問(wèn)之后會(huì)在控制臺(tái)遍歷這個(gè)集合。

訪問(wèn)路徑如下: http://localhost:8080/c/param4?users=LYL&users=HQX

3.1.2 測(cè)試結(jié)果

OK,確實(shí)成功在控制臺(tái)打印出來(lái)了。

3.2 對(duì)象數(shù)據(jù)類(lèi)型集合

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

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 控制器方法

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

其實(shí)和上面得對(duì)象類(lèi)型沒(méi)什么不一樣,主要是參數(shù)類(lèi)型得屬性不一樣,訪問(wèn)路徑不一樣。 

訪問(wèn)路徑: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 測(cè)試結(jié)果

 OK,也是可以成功查詢出來(lái)的

3.3 Map集合

同樣,SpringMVC要封裝Map集合,需要封裝到有Map屬性的對(duì)象中。修改Student實(shí)體類(lèi),寫(xiě)法如下:

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 控制器方法

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

訪問(wèn)路徑:

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 測(cè)試結(jié)果 

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

總結(jié)

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

相關(guān)文章

  • Java中的?CyclicBarrier詳解

    Java中的?CyclicBarrier詳解

    這篇文章主要介紹了Java中的?CyclicBarrier詳解,CyclicBarrier沒(méi)有顯示繼承哪個(gè)父類(lèi)或者實(shí)現(xiàn)哪個(gè)父接口,?所有AQS和重入鎖不是通過(guò)繼承實(shí)現(xiàn)的,而是通過(guò)組合實(shí)現(xiàn)的,下文相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • JAVA代碼開(kāi)發(fā)規(guī)范

    JAVA代碼開(kāi)發(fā)規(guī)范

    本文主要對(duì)JAVA代碼開(kāi)發(fā)規(guī)范進(jìn)行詳細(xì)介紹,具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • Mybatis之動(dòng)態(tài)sql標(biāo)簽的使用

    Mybatis之動(dòng)態(tài)sql標(biāo)簽的使用

    這篇文章主要介紹了Mybatis之動(dòng)態(tài)sql標(biāo)簽的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java?OpenCV圖像處理之SIFT角點(diǎn)檢測(cè)詳解

    Java?OpenCV圖像處理之SIFT角點(diǎn)檢測(cè)詳解

    SIFT,即尺度不變特征變換,是用于圖像處理領(lǐng)域的一種描述。這種描述具有尺度不變性,可在圖像中檢測(cè)出關(guān)鍵點(diǎn),是一種局部特征描述子。本文將詳細(xì)介紹一下Java?OpenCV圖像處理中的SIFT角點(diǎn)檢測(cè),需要的可以參考一下
    2022-02-02
  • @Bean注解和@Configuration、@Component注解組合使用的區(qū)別

    @Bean注解和@Configuration、@Component注解組合使用的區(qū)別

    這篇文章主要介紹了@Bean注解和@Configuration、@Component注解組合使用的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring中自定義數(shù)據(jù)類(lèi)型轉(zhuǎn)換的方法詳解

    Spring中自定義數(shù)據(jù)類(lèi)型轉(zhuǎn)換的方法詳解

    Spring3引入了一個(gè)core.onvert包,提供一個(gè)通用類(lèi)型轉(zhuǎn)換系統(tǒng)。在Spring容器中,可以使用這個(gè)系統(tǒng)作為PropertyEditor實(shí)現(xiàn)的替代,將外部化的bean屬性值字符串轉(zhuǎn)換為所需的屬性類(lèi)型。本文將詳解這一系統(tǒng)的使用方法,需要的可以參考一下
    2022-06-06
  • 如何利用Java爬蟲(chóng)獲取蘇寧易購(gòu)商品詳情

    如何利用Java爬蟲(chóng)獲取蘇寧易購(gòu)商品詳情

    蘇寧易購(gòu)作為中國(guó)領(lǐng)先的電商平臺(tái)之一,提供了豐富的商品信息,本文將介紹如何使用Java語(yǔ)言開(kāi)發(fā)爬蟲(chóng),獲取蘇寧易購(gòu)商品的詳細(xì)信息,感興趣的朋友一起看看吧
    2024-12-12
  • Java加載ICC文件的方法和示例代碼

    Java加載ICC文件的方法和示例代碼

    ICC文件,通常用于顏色管理,定義了如何將一個(gè)顏色空間轉(zhuǎn)換為另一個(gè)顏色空間,在Java中,我們可能需要加載這些文件來(lái)進(jìn)行顏色轉(zhuǎn)換或管理,本文將為您提供加載ICC文件的方法和示例代碼,需要的朋友參考下吧
    2023-08-08
  • Springboot整合mybatisplus的項(xiàng)目實(shí)戰(zhàn)

    Springboot整合mybatisplus的項(xiàng)目實(shí)戰(zhàn)

    本文主要介紹了Springboot整合mybatisplus的項(xiàng)目實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Mybatis查詢時(shí)數(shù)據(jù)丟失的問(wèn)題及解決

    Mybatis查詢時(shí)數(shù)據(jù)丟失的問(wèn)題及解決

    Mybatis查詢時(shí)數(shù)據(jù)丟失的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評(píng)論