springmvc 参数绑定总结
最近在学习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"; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。