1、傳統傳參方式
方法參數中使用request,通過request.getParameter("參數名"),再封裝到bean中
@RequestMapping("/test01")
public ModelAndView test01(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username);
System.out.println(password);
return null;
}
2、簡單類型參數和RequestParam注解
如果請求參數和Controller方法的形參同名,可以直接接收
如果請求參數和Controller方法的形參不同名,可以使用@RequestParam注解貼在形參前,設置對應的參數名稱
@RequestMapping("/test02_1")
public ModelAndView test02_1(String username,String password){
System.out.println(username);
System.out.println(password);
return null;
}
@RequestMapping("/test02_2")
public ModelAndView test02_2(@RequestParam("username") String name,@RequestParam(value = "password",defaultValue = "1234987") String pwd){
//使用了@RequestParam的參數不能傳空值
// required:表示是否必須要傳值
// defaultValue:當沒有該請求參數時,SpringMVC給請求參數的默認值
System.out.println(name);
System.out.println(pwd);
return null;
}
3、對象傳參
此時能夠自動把參數封裝到形參的對象上
注意:1、請求參數必須和對象的屬性同名
2、此時對象會直接放入request作用域中,名稱為類型首字母小寫
3、@ModelAttribute設置請求參數綁定到對象中並傳到視圖頁面,設置key值
@RequestMapping("/test03")
public ModelAndView test03(@ModelAttribute("stu") Student student){
/*可以使用對象作為方法的形參,同時接受接受前台的多個請求參數
SpringMVC會基於同名匹配,將請求參數的值注入對應的對象中的屬性中
@ModelAttribute起名字key值*/
System.out.println(student);
ModelAndView mv = new ModelAndView();
mv.setViewName("test2");
return mv;
}
4、數組和List集合類型參數
當前台頁面傳來的參數是參數名相同,參數值不同的多個參數時,可以直接封裝到方法的數組類型的形參中,也可以直接封裝到對象的集合屬性中。
比如批量刪除時傳來的參數。
RequestMapping("/test04")
public ModelAndView test04(String id[]){
/*對於參數名相同的多個請求參數,可以直接使用數組作為方法的形參接收
可以使用對象中的集合屬性接收*/
for (String i : id) {
System.out.println(i);
}
return null;
}
@RequestMapping("/test05")
public ModelAndView test05(Student student){
System.out.println(student.getId().size());
for (String i : student.getId()) {
System.out.println(i);
}
return null;
}
5、使用Restful
Restful是一種軟件架構風格,嚴格上說是一種編碼風格,其充分利用 HTTP 協議本身語義從而提供了一組設計原則和約束條件。
主要用於客戶端和服務器交互類的軟件,該風格設計的軟件可以更簡潔,更有層次,更易於實現緩存等機制。 在后台,RequestMapping標簽后,可以用{參數名}方式傳參,同時需要在形參前加注解@PathVarible,假如前台的請求地址為localhost:8080/delete/3
@RequestMapping("/delete/{id}")
public ModelAndView test4(@PathVariable("id")Long id){
System.out.println("delete");
System.out.println(id);
return null;
}
