springmvc 参数绑定总结
最近在学习springmvc,今天把springmvc参数绑定给整理一下,也算个学习笔记吧!
@RequestParam绑定单个请求
RequestMapping(value="/form2") @ResponseBody publicStringform2(@RequestParamStringname){ logger.info("name="+name); return""; }
@RequestParam有required(是否必填),defaultValue(默认参数)参数
默认required=true,defaultValue为空
如果name参数不存在则返回400
使用下面这种写法则required默认为false
@RequestMapping(value="/form") @ResponseBody publicStringform(Stringname,Integerage){ logger.info("name="+name+","+"age="+age); return""; }
@RequestParam还支持数组形式
@RequestMapping(value="/names") @ResponseBody publicStringnames(@RequestParamString[]name){ logger.info("name="+Arrays.asList(name)); returnArrays.asList(name).toString(); }
对应请求/names.do?name=张三,李四
或者/names.do?name=张三&name=李四
@PathVariable绑定uri变量值
@RequestMapping("/user/{id}") @ResponseBody publicStringgetUser(@PathVariableLongid){ returnString.valueOf(id); }
请求/user/1返回id为1
@CookieValue绑定cookie的值
@RequestMapping("/getCookie") @ResponseBody publicStringgetCookie(@CookieValue("JSESSIONID")StringsessionId){ returnsessionId; }
@ModelAttribute绑定参数到命令对象
1、绑定请求参数到对象
先定义两个对象
Role
publicclassRoleimplementsSerializable{ privateStringid; }
User
publicclassUserimplementsSerializable{ privateStringid; privateRolerole; }
@RequestMapping("/getUserByModel") @ResponseBody publicStringgetUserByModel(@ModelAttribute("user")Useruser){ logger.info(user.toString()); return""; }
对应请求/getUserByModel.do?id=123&role.id=1
暴露表单引用对象为模型数据
@ModelAttribute("user") publicUsergetUser(StringuserId){ Useruser=newUser(); user.setId("11"); Rolerole=newRole(); role.setId("123"); user.setRole(role); returnuser; } @RequestMapping("/getUserModel") @ResponseBody publicStringgetUserModel(@ModelAttributeUseruser){ returnuser.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 publicStringsetSession( HttpSessionsession){ Citycity=newCity(); city.setCityName("shanghai"); session.setAttribute("city",city); returncity.toString(); }
获取session数据
//在类头部添加需要的session属性 @Controller @SessionAttributes(value={"city"}) publicclassTestController{ @RequestMapping("/getSession") @ResponseBody publicStringgetSession(@ModelAttributeCitycity){ returncity.toString(); } }
清除本次会话session
@RequestMapping("/clearSession") @ResponseBody publicStringclearSession(SessionStatusstatus){ status.setComplete(); return"success"; }
@RequestBody绑定请求的内容区数据并能进行自动类型转换等
使用RequestBody可以将json转化为对象
@RequestMapping("/getUserByJson") @ResponseBody publicStringgetUserByJson(@RequestBodyUseruser){ returnuser.toString(); }
发送json格式报文
{ "id":"123" }
返回结果User{id='123',role=null}
@RequestPart绑定“multipart/data”数据
@RequestMapping("/getFile") @ResponseBody publicStringgetFile(@RequestPart("image")MultipartFilefile){ System.out.println(file.getName()+","+file.getSize()); return"success"; }
源码地址
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。