springmvc方法引數
阿新 • • 發佈:2018-12-25
1、接收普通請求引數
在沒有任何註解的情況下,springmvc可以通過引數名稱和http請求引數的名稱保持一致來獲取引數;
@RequestMapping("/commonParams")
public ModelAndView commonParams(String roleName, String note) {}
2、javabean接收http引數
@RequestMapping("/commonParamPojo")
public ModelAndView commonParamPojo(RoleParams roleParams) {}
3、@RequestParam
springmvc提供@RequestParam對映http引數名稱,預設情況下該引數不能為空,如果為空系統會丟擲異常。
如果希望允許它為空,就要修改配置項required為false
public void distributeTask(@RequestParam(value="role_name",required=false) String roleName)
@RequestParam相當於request.getParameter(“引數名”)
4、使用url傳遞引數
需要@RequestMapping和@PathVariable兩個註解共同協作完成,訪問/param/getRole/1
@RequestMapping("/getRole/{id}") public ModelAndView pathVariable(@PathVariable("id") Long id) {}
5、傳遞json引數
@RequestBody接收引數,該註解表示要求springmvc將傳遞過來的json陣列資料轉換為對應的java集合型別。
把list轉換為陣列也是可行的。
@RequestMapping("/findRoles") public ModelAndView findRoles(@RequestBody RoleParams roleParams) {} @RequestMapping("/deleteRoles") public ModelAndView deleteRoles(@RequestBody List<Long> idList) {} @RequestMapping("/addRoles") public ModelAndView addRoles(@RequestBody List<Role> roleList) {}
curl命令傳送請求測試
curl -XPOST 'http://localhost:8080/javabean/save.json' -H 'Content-Type:application/json' -d'{"name":"hello","id":1}'
6、MultipartFile處理檔案上傳
@PostMapping("form)
public String handleFileUpload(String name,MultipartFile file)throws IOException{
if(!file.isEmpty()){
String filename = file.getOriginalFilename();//獲取上傳的檔名
}
}
如果上傳多個檔案
@PostMapping("form)
public String handleFileUpload(String name,MultipartFile[] files)throws IOException{}
7、@ModelAttribute
該註解通常可以用來向一個controller中需要的公共模型新增資料。
@ModelAttribute
public void findUserById(@PathVariable Long id,Model model){
model.addAttribute("user",userService.getUserById(id));
}
如果只新增一個物件到model中,可以改寫為
@ModelAttribute
public User findUserById(@PathVariable Long id){
return userService.getUserById(id);
}
@GetMapping(path="/{id}/get.json")
public String getUser(Model model){
return "success";
}
8、Model/ModelAndView
MVC框架一般都會提供一個類似Map結構的Model,可以向model中新增檢視需要的變數,springmvc提供addAttribute(String attributeName,Object attributeValue)
Model用於引數的時候,SpringMvc框架在呼叫方法前自動建立Model
@GetMapping(path = "/{userId}/get.html")
public String getUser(@PathVariable Long userId,Model model){
modle.addAttribute("user",userInfo);
return "userInfo.html";
}
ModelAndView類似於Model,但還提供了一個檢視名稱,該物件既可以通過方法宣告,也可以在方法中構造
@GetMapping(path = "/{userId}/get.html")
public String getUser(@PathVariable Long userId,ModelAndView modelAndView){
modelAndView.addObject("user",userInfo);
modelAndView.setViewName("/userInfo.html");
return view;
}
@GetMapping(path = "/{userId}/get.html")
public String getUser(@PathVariable Long userId){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("user",userInfo);
modelAndView.setViewName("/userInfo.html");
return view;
}