• SpringMVC参数绑定总结


    一、基本数据类型的绑定

    表单代码:

    <form action="/echo" method="post">
        <input name="name" value="张三" type="text"/>
    </form>


    controller代码:

    @RequestMapping(value = "/echo")
    @ResponseBody
    public String echo(String name){
    return name;
    }

    注意:

    • 方法形参中的参数名要和前台传进来的名一样,才能完成参数的绑定。
    • 若不一样,我们可以使用@RequestParam注解标明传进来参数的名称,完成参数的绑定。

    二、pojo类型的绑定

    Model代码:

    public class User {
    private String name;
    private Integer age;

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public Integer getAge() {
    return age;
    }

    public void setAge(Integer age) {
    this.age = age;
    }
    }

    表单代码:

    <form action="/save" method="post">
      <input name="name" value="张三" type="text"/>
      <input name="age" value="21" type="text"/>
    </form>

    Controller代码:

    @RequestMapping("/save")
    public void test(User user) {
    }

    三、数组和集合的绑定

    1. 数组的绑定

    表单代码:

    <form action="/echoArray" method="post">
        <input name="name" value="张三" type="text"/>
      <input name="name" value="李四" type="text"/>
    </form>


    controller代码:

    @RequestMapping(value = "/echoArray")
    @ResponseBody
    public String echo(String[] name){
    return Arrays.toString(name);
    }

    2. List的绑定

     SpringMVC不支持直接使用List接收参数,使用时,需封装在一个pojo类中

    Model代码:

    public class UserVo {
    private List<User> userList;

    public List<User> getUserList() {
    return userList;
    }

    public void setUserList(List<User> userList) {
    this.userList = userList;
    }
    }

    表单代码:

    <form action="/echoList" method="post">
      <input name="userList[0].name" value="张三" type="text"/>
      <input name="userList[0].age" value="21" type="text"/>
    </form>

    Controller代码:

    @RequestMapping(value = "/echoList")
    @ResponseBody
    public String echoList(UserVo userVo){
    List<User> userList = userVo.getUserList();
    return JSON.toJSONString(userList);
    }

    3. Set的绑定

     封装在pojo中,需手动创建对象,使用时下标不能超过Set集合的大小

    public class UserVo {
    
        private Set<User> userSet = new HashSet<>();
    
        public UserVo() {
            userSet.add(new User());
            userSet.add(new User());
        }
    
        public Set<User> getUserSet() {
            return userSet;
        }
    
        public void setUserSet(Set<User> userSet) {
            this.userSet = userSet;
        }
    }

    表单代码:

    <form action="/echoSet" method="post">
      <input name="userList[0].name" value="张三" type="text"/>
      <input name="userList[0].age" value="21" type="text"/>
    </form>

    Controller代码:

    @RequestMapping(value = "/echoSet")
    @ResponseBody
    public String echoSet(UserVo userVo){
       Set<User> userSet = userVo.getUserSet();
       return JSON.toJSONString(userSet);
    }

    4. Map的绑定

      封装在pojo中

    public class UserVo {
        private Map<String, User> userMap;
    
        public Map<String, User> getUserMap() {
            return userMap;
        }
    
        public void setUserMap(Map<String, User> userMap) {
            this.userMap = userMap;
        }
    }

    表单代码:

    <form action="/echoMap" method="post">
      <input name="userMap['user1'].name" value="张三" type="text"/>
      <input name="userMap['user1'].age" value="21" type="text"/>
    </form>

    Controller代码:

    @RequestMapping(value = "/echoMap")
    @ResponseBody
    public String echoMap(UserVo userVo){
       Map<String, User> userMap = userVo.getUserMap();
       return JSON.toJSONString(userMap);
    }

    四、json参数绑定

    前台

    $.ajax({  
              type: "POST",  
              contentType: "application/json",
             dataType: "json",  
              url: "/dataAnalysis/selsPoverty",  
              data: JSON.stringify({ 'name': "张三", 'age': 21 })  ,  
              success: function (data) {
          }
    });

    后台

    @RequestMapping(value = "/echoJson")
    @ResponseBody
    public String echoJson(@RequestBody Map<String, Object> user){
       return JSON.toJSONString(user);
    }
  • 相关阅读:
    javaWeb 使用 filter 处理 html 标签问题
    javaWeb 使用 filter 处理全站乱码问题
    Kubernetes常见部署方案--滚动更新、重新创建、蓝绿、金丝雀
    阿里云
    Kubernetes技术分析之灰度升级
    fetch进行post请求为什么会首先发一个options 请求?
    免费给你的网站加速,全球访问速度杠杠的
    抗DDOS,我选Cloudflare,免费!
    被骗几十万总结出来的Ddos攻击防护经验!------转自 服务器之家server
    微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布
  • 原文地址:https://www.cnblogs.com/wslook/p/9185320.html
Copyright © 2020-2023  润新知