普通型別傳參
當POJO中使用簡單型別屬性時, 引數名稱與POJO類屬性名保持一致
POJO類
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
?
public void setName(String name) {
this.name = name;
}
?
public Integer getAge() {
return age;
}
?
public void setAge(Integer age) {
this.age = age;
}
?
}
Controller
@RequestMapping("/requestParam1")
public String requestParam1(String name ,String age){
System.out.println("name="+name+",age="+age);
return "page.jsp";
}
訪問URL: http://localhost/requestParam1?name=itheima&age=14
**@RequestParam** 的使用 ? 型別: 形參注解 ? 位置:處理器類中的方法形參前方 ? 作用:系結請求引數與對應處理方法形參間的關系
//方法傳遞普通型別引數,使用@RequestParam引數匹配URL傳參中的引數名稱與方法形參名稱
//http://localhost/requestParam2?userName=Jock
@RequestMapping("/requestParam2")
public String requestParam2(@RequestParam(value = "https://www.cnblogs.com/spring-ioc/p/userName",required = true) String name){
System.out.println(name);
return "page.jsp";
}
訪問http://localhost/requestParam2?userName=Jock
總結一下就是使得url中的請求引數與形參保持一致
POJO型別引數傳參
當POJO中使用簡單型別屬性時, 引數名稱與POJO類屬性名保持一致
1
POJO類
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
?
public void setName(String name) {
this.name = name;
}
?
public Integer getAge() {
return age;
}
?
public void setAge(Integer age) {
this.age = age;
}
?
}
Controller
@RequestMapping("/requestParam3")
public String requestParam3(User user){
System.out.println("name="+user.getName());
return "page.jsp";
}
最終訪問http://localhost/requestParam3?name=itheima&age=14
方法傳遞POJO型別引數,URL地址中的引數作為POJO的屬性直接傳入物件
**引數沖突**
當POJO型別屬性與其他形參出現同名問題時,將被同時賦值
建議使用@RequestParam注解進行區分
2
Controller
//當方法引數中具有POJO型別引數與普通型別引數嘶,URL地址傳入的引數不僅給POJO物件屬性賦值,也給方法的普通型別引數賦值
@RequestMapping("/requestParam4")
public String requestParam4(User user,int age){
System.out.println("user="+user+",age="+age);
return "page.jsp";
}
最終訪問//http://localhost/requestParam4?name=Jock&age=39
復雜POJO型別引數
3
當POJO中出現物件屬性時,引數名稱與物件層次結構名稱保持一致
POJO
public class User {
private String name;
private Integer age;
private Address address;
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
Controller
使用物件屬性名.屬性名的物件層次結構可以為POJO中的POJO型別引數屬性賦值
@RequestMapping("/requestParam5")
public String requestParam5(User user){
System.out.println(user.getAddress().getCity());
return "page.jsp";
}
訪問//http://localhost/requestParam5?address.city=beijing
一層套一層
4 當POJO中出現List,保存物件資料,引數名稱與物件層次結構名稱保持一致,使用陣列格式描述集合中物件的位置
POJO
public class User {
private String name;
private Integer age;
private List<Address> addresses;
}
public class Address {
private String province;
private String city;
private String address;
}
Controller
POJO中List物件保存POJO的物件屬性賦值,使用[數字]的格式指定為集合中第幾個物件的屬性賦值
@RequestMapping("/requestParam6")
public String requestParam6(User user){
System.out.println(user);
return "page.jsp";
}
訪問//http://localhost/requestParam7?addresses[0].city=beijing&addresses[1].province=hebei
5 **當POJO中出現Map,保存物件資料,引數名稱與物件層次結構名稱保持一致,使用映射格式描述集合中物件的位置**
POJO
public class User {
private String name;
private Integer age;
private Map<String,Address> addressMap;
}
public class Address {
private String province;
private String city;
private String address;
}
Controller
POJO中Map物件保存POJO的物件屬性賦值,使用[key]的格式指定為Map中的物件屬性賦值
@RequestMapping("/requestParam8")
public String requestParam8(User user){
System.out.println(user.getAddressMap());
return "page.jsp";
}
http://localhost/requestParam8?addressMap['job'].city=beijing&addressMap['home'].province=henan
陣列與集合型別引數傳參
陣列型別引數
請求引數名與處理器方法形參名保持一致,且請求引數數量> 1個
訪問URL: http://localhost/requestParam9?nick=Jockme&nick=zahc
@RequestMapping("/requestParam9")
public String requestParam9(String[] nick){
System.out.println(nick[0]+","+nick[1]);
return "page.jsp";
}
集合型別引數
保存簡單型別資料,請求引數名與處理器方法形參名保持一致,且請求引數數量> 1個
訪問URL: http://localhost/requestParam10?nick=Jockme&nick=zahc
@RequestMapping("/requestParam10")
public String requestParam10(@RequestParam("nick") List<String> nick){
System.out.println(nick);
return "page.jsp";
}
注意: SpringMVC默認將List作為物件處理,賦值前先創建物件,然后將nick作為物件的屬性進行處理,由于
List是介面,無法創建物件,報無法找到構造方法例外;修復型別為可創建物件的ArrayList型別后,物件可
以創建,但沒有nick屬性,因此資料為空,此時需要告知SpringMVC的處理器nick是一組資料,而不是一個單
一資料,通過@RequestParam注解,將數量大于1個names引數打包成引數陣列后, SpringMVC才能識別該數
據格式,并判定形參型別是否為陣列或集合,并按陣列或集合物件的形式操作資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/499411.html
標籤:Java
