1. 程式人生 > >springmvc方法引數

springmvc方法引數

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;
}