您好,登錄后才能下訂單哦!
最近在學習springmvc,今天把springmvc 參數綁定給整理一下,也算個學習筆記吧!
@RequestParam 綁定單個請求
RequestMapping(value = "/form2") @ResponseBody public String form2(@RequestParam String name){ logger.info("name=" + name ); return ""; }
@RequestParam
有required(是否必填),defaultValue(默認參數)參數
默認required=true,defaultValue為空
如果name參數不存在則返回400
使用下面這種寫法則required默認為false
@RequestMapping(value = "/form") @ResponseBody public String form(String name, Integer age) { logger.info("name=" + name + "," + "age=" + age); return ""; }
@RequestParam
還支持數組形式
@RequestMapping(value = "/names") @ResponseBody public String names(@RequestParam String[] name) { logger.info("name=" + Arrays.asList(name)); return Arrays.asList(name).toString(); }
對應請求/names.do?name=張三,李四
或者/names.do?name=張三&name=李四
@PathVariable 綁定uri變量值
@RequestMapping("/user/{id}") @ResponseBody public String getUser(@PathVariable Long id) { return String.valueOf(id); }
請求/user/1返回id為1
@CookieValue 綁定cookie的值
@RequestMapping("/getCookie") @ResponseBody public String getCookie(@CookieValue("JSESSIONID") String sessionId) { return sessionId; }
@ModelAttribute綁定參數到命令對象
1、綁定請求參數到對象
先定義兩個對象
Role
public class Role implements Serializable { private String id; }
User
public class User implements Serializable { private String id; private Role role; }
@RequestMapping("/getUserByModel") @ResponseBody public String getUserByModel(@ModelAttribute("user") User user) { logger.info(user.toString()); return ""; }
對應請求/getUserByModel.do?id=123&role.id=1
暴露表單引用對象為模型數據
@ModelAttribute("user") public User getUser(String userId) { User user = new User(); user.setId("11"); Role role=new Role(); role.setId("123"); user.setRole(role); return user; } @RequestMapping("/getUserModel") @ResponseBody public String getUserModel(@ModelAttribute User user) { return user.toString(); }
請求/getUserModel?id=1
返回 User{id='1', role=Role{id='123'}}
使用@ModelAttribute注釋的方法會在所有Controller方法前運行
因為先運行了@ModelAttribute注解的方法,生成了一個user對象,之后user對象的id屬性被修改為1
@SessionAttributes綁定命令對象到session
springmvc提供了@SessionAttributes用來對會話數據的存取
添加session
@RequestMapping("/setSession") @ResponseBody public String setSession( HttpSession session) { City city = new City(); city.setCityName("shanghai"); session.setAttribute("city", city); return city.toString(); }
獲取session數據
//在類頭部添加需要的session屬性 @Controller @SessionAttributes(value = {"city"}) public class TestController { @RequestMapping("/getSession") @ResponseBody public String getSession(@ModelAttribute City city) { return city.toString(); } }
清除本次會話session
@RequestMapping("/clearSession") @ResponseBody public String clearSession(SessionStatus status) { status.setComplete(); return "success"; }
@RequestBody綁定請求的內容區數據并能進行自動類型轉換等
使用RequestBody可以將json轉化為對象
@RequestMapping("/getUserByJson") @ResponseBody public String getUserByJson(@RequestBody User user){ return user.toString(); }
發送json格式報文
{ "id":"123" }
返回結果User{id='123', role=null}
@RequestPart綁定“multipart/data”數據
@RequestMapping("/getFile") @ResponseBody public String getFile(@RequestPart("image") MultipartFile file){ System.out.println(file.getName()+","+file.getSize()); return "success"; }
源碼地址:springmvcLearn_jb51.rar
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。