一、int和Integer類型
如:參數為int類型的請求
@Controller public class TestController { @RequestMapping(value="/baseType") @ResponseBody//直接返回字符串界面,不用請求獲取jsp頁面。去掉報404錯誤,找不到頁面。 public String baseType(int age) { return "age:"+age; } }
1。參數為int類型的請求,若沒有傳入參數,報500的錯誤

2.參數為int類型的請求,若參數類型錯誤,報400的錯誤

正確

1.2@RequestParam
@Controller public class TestController { @RequestMapping(value="/baseType") @ResponseBody //@RequestParam注解value屬性為傳參別名,defaultValue默認賦值,required是否必須傳值默認true。 //若把required設置為false,不傳參則不報錯 public String baseType(@RequestParam(value="xage",defaultValue="1",required=false) int age) { return "age:"+age; } }
如:參數為Integer類型
1.若參數請求為Integer類型,沒有參數,自動給參數賦值為null

2.若參數請求為Integer類型,參數l類型不匹配,同上也報400錯誤。
二、參數為數組類型
//http://127.0.0.1:8080/SpringMVC/array?name=Tom&name=Lucy&name=jim @RequestMapping(value="array") @ResponseBody public String array(String[] name) { StringBuilder sbf = new StringBuilder(); for(String item:name) { sbf.append(item).append(" "); } return sbf.toString(); }

三、參數為對象(簡單對象)
//model public class User { private String name; private Integer age; //getter and setting ...... @Override public String toString() { return "User [name=" + name + ", age=" + age + "]"; } }
//http://127.0.0.1:8080/SpringMVC/object?name=Tom&age=20 @RequestMapping(value="object") @ResponseBody public String object(User user) { return user.toString(); }

三、參數為對象(多層級對象)
1.1model
//聯系信息類 public class ContactInfo { private String phone; private String address; //getting and setting............ @Override public String toString() { return "ContactInfo [phone=" + phone + ", address=" + address + "]"; } }
//用戶類 public class User { private String name; private Integer age; private ContactInfo contactInfo; //getting and setting............ @Override public String toString() { return "User [name=" + name + ", age=" + age + ", contactInfo=" + contactInfo + "]"; } }
//http://127.0.0.1:8080/SpringMVC/object?name=Tom&age=20&contactInfo.phone=10086&contactInfo.address=ss @RequestMapping(value="object") @ResponseBody public String object(User user) { return user.toString(); }
結果顯示:

1.2 若參數為2個對象
@RequestMapping(value="object") @ResponseBody public String object(User user,Admin admin) { return user.toString()+" "+admin.toString(); }


兩個參數對象被賦予相同的參數
解決辦法@InitBinder
//http://127.0.0.1:8080/SpringMVC/object?user.name=Tom&age=20&admin.name=lucy
@RequestMapping(value="object") @ResponseBody public String object(User user,Admin admin) { return user.toString()+" "+admin.toString(); } @InitBinder("user") public void initUser(WebDataBinder binder) { binder.setFieldDefaultPrefix("user."); } @InitBinder("admin") public void initAdmin(WebDataBinder binder) { binder.setFieldDefaultPrefix("admin."); }

