請求參數綁定:說⽩了SpringMVC如何接收請求參數
http協議(超⽂本傳輸協議)
原⽣servlet接收⼀個整型參數:
1) String ageStr = request.getParameter("age");
2) Integer age = Integer.parseInt(ageStr);
SpringMVC框架對Servlet的封裝,簡化了servlet的很多操作
SpringMVC在接收整型參數的時候,直接在Handler⽅法中聲明形參即可
@RequestMapping("xxx")
public String handle(Integer age) {
System.out.println(age);
}
參數綁定:取出參數值綁定到handler⽅法的形參上
默認⽀持 Servlet API 作爲⽅法參數
當需要使⽤HttpServletRequest、 HttpServletResponse、 HttpSession等原⽣servlet對象時,直
接在handler⽅法中形參聲明使⽤即可。
/**
*
* SpringMVC 對原⽣servlet api的⽀持 url: /demo/handle02?id=1
*
* 如果要在SpringMVC中使⽤servlet原⽣對象,⽐如
HttpServletRequest\HttpServletResponse\HttpSession,直接在Handler⽅法形參中聲
明使⽤即可
*
*/
@RequestMapping("/handle02")
public ModelAndView handle02(HttpServletRequest request,
HttpServletResponse response,HttpSession session) {
String id = request.getParameter("id");
Date date = new Date();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("date",date);
modelAndView.setViewName("success");
return modelAndView;
}
綁定簡單類型參數
簡單數據類型:⼋種基本數據類型及其包裝類型
參數類型推薦使⽤包裝數據類型,因爲基礎數據類型不可以爲null
整型: Integer、 int
字符串: String
單精度: Float、 float
雙精度: Double、 double
布爾型: Boolean、 boolean
說明:對於布爾類型的參數, 請求的參數值爲true或false。或者1或0
注意:綁定簡單數據類型參數,只需要直接聲明形參即可(形參參數名和傳遞的參數名要保持⼀致,建議 使⽤包裝類型,當形參參數名和傳遞參數名不⼀致時可以使⽤@RequestParam註解進⾏⼿動映射)
簡單數據類型:
/*
* SpringMVC 接收簡單數據類型參數 url: /demo/handle03?id=1
*
* 注意:接收簡單數據類型參數,直接在handler⽅法的形參中聲明即可,框架會取出參數值
然後綁定到對應參數上
* 要求:傳遞的參數名和聲明的形參名稱保持⼀致
*/
@RequestMapping("/handle03")
public ModelAndView handle03(@RequestParam("ids") Integer id,Boolean
flag) {
Date date = new Date();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("date",date);
modelAndView.setViewName("success");
return modelAndView;
}
綁定Pojo類型參數
/*
* SpringMVC接收pojo類型參數 url: /demo/handle04?id=1&username=zhangsan
*
* 接收pojo類型參數,直接形參聲明即可,類型就是Pojo的類型,形參名⽆所謂
* 但是要求傳遞的參數名必須和Pojo的屬性名保持⼀致
*/
@RequestMapping("/handle04")
public ModelAndView handle04(User user) {
Date date = new Date();
綁定Pojo包裝對象參數
包裝類型 QueryVo
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("date",date);
modelAndView.setViewName("success");
return modelAndView;
}
綁定Pojo包裝對象參數
包裝類型 QueryVo
package com.lagou.edu.pojo;
/**
* @author 應癲
*/
public class QueryVo {
private String mail;
private String phone;
// 嵌套了另外的Pojo對象
private User user;
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
/*
* SpringMVC接收pojo包裝類型參數 url: /demo/handle05?
user.id=1&user.username=zhangsan
* 不管包裝Pojo與否,它⾸先是⼀個pojo,那麼就可以按照上述pojo的要求來
* 1、綁定時候直接形參聲明即可
* 2、傳參參數名和pojo屬性保持⼀致,如果不能夠定位數據項,那麼通過屬性名 + "." 的
⽅式進⼀步鎖定數據
*
*/
@RequestMapping("/handle05")
public ModelAndView handle05(QueryVo queryVo) {
Date date = new Date();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("date",date);
modelAndView.setViewName("success");
return modelAndView;
}