@RequestParam
首先我們需要知道@RequestParam注解主要有哪些參數
1。value:請求中傳入參數的名稱,如果不設置后台接口的value值,則會默認為該變量名。比如上圖中第一個參數如果不設置value="page",則前端傳入的參數名必須為pageNum,否則在后台接口中pageNum將接收不到對應的數據
2。required:該參數是否為必傳項。默認是true,表示請求中一定要傳入對應的參數,否則會報404錯誤,如果設置為false時,當請求中沒有此參數,將會默認為null,而對於基本數據類型的變量,則必須有值,這時會拋出空指針異常。如果允許空值,則接口中變量需要使用包裝類來聲明。
3。defaultValue:參數的默認值,如果請求中沒有同名的參數時,該變量默認為此值。注意默認值可以使用SpEL表達式,如"#{systemProperties['java.vm.version']}"
如果在請求中傳入多個同名參數,比如:url?userName=zhl&userName=holley時怎么辦?
其實此時傳入的數據格式是:"zhl,holley",即多個數據之間使用逗號分隔開,在后台接口中可以使用數組或者list類型的變量來接收:
public String requestparam8(@RequestParam(value="userName") String [] userNames)
或者
public String requestparam8(@RequestParam(value="list") List<String> list)
@PathVariable綁定uri模板變量值:通過@PathVariable可以綁定占位符參數到方法參數中
@PathVariable是spring3.0的一個新功能:接收請求路徑中占位符的值
語法:
@PathVariable("xxx")
通過 @PathVariable 可以將URL中占位符參數{xxx}綁定到處理器類的方法形參中@PathVariable(“xxx“)
@RequestMapping(value=”user/{id}/{name}”)
請求路徑:http://localhost:8080/hello/show5/1/james
測試:
@Controller
@RequestMapping("hello")
public class HelloController2 {
/**
*3、占位符映射
* 語法:@RequestMapping(value=”user/{userId}/{userName}”)
* 請求路徑:http://localhost:8080/hello/show5/1/james
* @param ids
* @param names
* @return
*/
@RequestMapping("show5/{id}/{name}")
public ModelAndView test5(@PathVariable("id") Long ids ,@PathVariable("name") String names){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","占位符映射:id:"+ids+";name:"+names);
mv.setViewName("hello2");
return mv;
}
}