首页 > 开发 > Java > 正文

springmvc 参数绑定总结

2024-07-13 10:05:43
字体:
来源:转载
供稿:网友

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

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表