欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

springmvc 参数绑定总结

程序员文章站 2024-03-03 15:26:46
最近在学习springmvc,今天把springmvc 参数绑定给整理一下,也算个学习笔记吧! @requestparam 绑定单个请求 requestma...

最近在学习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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。