目錄
一、簡單數(shù)據(jù)類型
1.1?控制器方法
1.2?測試結(jié)果
二、對象類型
2.1?單個對象
2.1.1 控制器方法
2.1.2 測試結(jié)果
2.2?關(guān)聯(lián)對象
2.2.1?控制器方法
2.2.2 測試結(jié)果
三、集合類型
3.1?簡單數(shù)據(jù)類型集合
3.1.1 控制方法
3.1.2 測試結(jié)果
3.2?對象數(shù)據(jù)類型集合
3.2.1 控制器方法
3.2.2 測試結(jié)果
3.3?Map集合
3.3.1 控制器方法
3.3.2 測試結(jié)果?
往期專欄&文章相關(guān)導(dǎo)讀?
1. Maven系列專欄文章
2. Mybatis系列專欄文章
3. Spring系列專欄文章?
4. Spring MVC系列專欄文章??
一、簡單數(shù)據(jù)類型
在Servlet中我們通過 request.getParameter(name) 獲取請求參數(shù)。該方式存在兩個問題:
- 請求參數(shù)較多時會出現(xiàn)代碼冗余。
- 與容器緊耦合
而SpringMVC支持參數(shù)注入的方式用于獲取請求數(shù)據(jù),即將請求參數(shù)直接封裝到方法的參數(shù)當(dāng)中。用法如下:
1.1?控制器方法
// 獲取簡單類型參數(shù)
@RequestMapping("/c1/param1")
public void simpleParam(String username,int age){
System.out.println(username+" "+age);
}
????????由于我們沒有配置對應(yīng)的param1頁面,這是直接在控制臺打印出訪問的參數(shù)是多少。?訪問該方法時,請求參數(shù)名和方法參數(shù)名相同,即可完成自動封裝。并在控制臺打印出來。執(zhí)行路徑為:http://localhost:8080/c1/param1?username=LYL&age=19
1.2?測試結(jié)果
OK,確實是在控制臺成功輸出了,說明封裝成功,接下來我們講一下對象類型。?
二、對象類型
SpringMVC支持將參數(shù)直接封裝為對象,首先我們先新建一個學(xué)生類。如下:
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);
}
?可以知道,我們在控制臺是會打印出學(xué)生的具體信息的,
訪問路徑:http://localhost:8080/c1/param2?id=1&name=LYL&sex=man
2.1.2 測試結(jié)果
????????OK,確實是在控制臺打印出來了,說明我們對對象類型進(jìn)行封裝的時候,只需要將他們的屬性放在訪問路徑的參數(shù)里面即可?
2.2?關(guān)聯(lián)對象
????????要實現(xiàn)關(guā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?控制器方法
// 獲取關(guān)聯(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 測試結(jié)果
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 測試結(jié)果
?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 測試結(jié)果
?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 測試結(jié)果?
????????OK,也是成功查出來了,至于第一條的two的info為什么為空是因為我寫少了個']',所以才出現(xiàn)一丟丟小插曲,但是不影響我們繼續(xù)輸出。
往期專欄&文章相關(guān)導(dǎo)讀?
?????大家如果對于本期內(nèi)容有什么不了解的話也可以去看看往期的內(nèi)容,下面列出了博主往期精心制作的Maven,Mybatis等專欄系列文章,走過路過不要錯過哎!如果對您有所幫助的話就點點贊,收藏一下啪。其中Spring專欄有些正在更,所以無法查看,但是當(dāng)博主全部更完之后就可以看啦。文章來源:http://www.zghlxwxcb.cn/news/detail-493162.html
1. Maven系列專欄文章
Maven系列專欄 | Maven工程開發(fā) |
Maven聚合開發(fā)【實例詳解---5555字】 |
2. Mybatis系列專欄文章
Mybatis系列專欄 | MyBatis入門配置 |
Mybatis入門案例【超詳細(xì)】 | |
MyBatis配置文件 —— 相關(guān)標(biāo)簽詳解 | |
Mybatis模糊查詢——三種定義參數(shù)方法和聚合查詢、主鍵回填 | |
Mybatis動態(tài)SQL查詢 --(附實戰(zhàn)案例--8888個字--88質(zhì)量分) | |
Mybatis分頁查詢——四種傳參方式 | |
Mybatis一級緩存和二級緩存(帶測試方法) | |
Mybatis分解式查詢 | |
Mybatis關(guān)聯(lián)查詢【附實戰(zhàn)案例】 | |
MyBatis注解開發(fā)---實現(xiàn)增刪查改和動態(tài)SQL | |
MyBatis注解開發(fā)---實現(xiàn)自定義映射關(guān)系和關(guān)聯(lián)查詢 |
3. Spring系列專欄文章?
Spring系列專欄 | Spring IOC 入門簡介【自定義容器實例】 |
IOC使用Spring實現(xiàn)附實例詳解 | |
Spring IOC之對象的創(chuàng)建方式、策略及銷毀時機(jī)和生命周期且獲取方式 | |
Spring DI簡介及依賴注入方式和依賴注入類型 | |
Spring IOC相關(guān)注解運用——上篇 | |
Spring IOC相關(guān)注解運用——下篇 | |
Spring AOP簡介及相關(guān)案例 | |
注解、原生Spring、SchemaBased三種方式實現(xiàn)AOP【附詳細(xì)案例】 | |
Spring事務(wù)簡介及相關(guān)案例 | |
Spring 事務(wù)管理方案和事務(wù)管理器及事務(wù)控制的API | |
Spring 事務(wù)的相關(guān)配置、傳播行為、隔離級別及注解配置聲明式事務(wù) |
4. Spring MVC系列專欄文章??
SpringMVC系列專欄 | Spring MVC簡介附入門案例 |
Spring MVC各種參數(shù)獲取及獲取方式自定義類型轉(zhuǎn)換器和編碼過濾器 | |
Spring MVC獲取參數(shù)和自定義參數(shù)類型轉(zhuǎn)換器及編碼過濾器 | |
Spring MVC處理響應(yīng)附案例詳解 | |
Spring MVC相關(guān)注解運用 —— 上篇 | |
Spring MVC相關(guān)注解運用 —— 中篇文章來源地址http://www.zghlxwxcb.cn/news/detail-493162.html | |
Spring MVC相關(guān)注解運用 —— 下篇 | |
Spring MVC多種情況下的文件上傳 | |
Spring MVC異步上傳、跨服務(wù)器上傳和文件下載 | |
Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】 | |
Spring MVC攔截器和跨域請求 | |
SSM整合案例【C站講解最詳細(xì)流程的案例】 |
到了這里,關(guān)于Spring MVC各種參數(shù)進(jìn)行封裝的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!