程序员社区

SpringMvc中请求参数的绑定

文章目录

    • 1.请求参数的绑定说明
    • 2.请求参数绑定基本数据类型和字符串类型
    • 3.请求参数绑定实体类型
      • 3.1实体类中仅包含基本对象和字符串类型
      • 3.2 实体类型中包含引用类型
    • 4.配置解决中文乱码的过滤器(Post方式提交数据)
    • 5.请求参数绑定集合类型

1.请求参数的绑定说明

  1. 绑定机制:
    1.表单提交的数据都是k=v格式的,username=hh&password=123
    2.SpringMvc的参数绑定过程就是把表单提交的请求参数,作为控制器中方法的参数进行绑定的
    3.要求:表单提交的name和参数的名称是相同的
  2. 支持的数据类型:
    1.基本数据类型和字符串数据类型
    2.实体类型(JavaBean)
    3.集合数据类型

2.请求参数绑定基本数据类型和字符串类型

提交表单的name和参数名称是相同的,区分大小写

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <a href="param/testParam?username=hehe?password=123">请求参数绑定</a>
</body>
</html>
@Controller
@RequestMapping(path = "/param")
public class ParamController {
    @RequestMapping(path = "/testParam")
    public String testParam(String username,String password){
        System.out.println("执行了...");
        System.out.println("用户名:"+username);
        System.out.println("密码:"+password);
        return "success";
    }
}

在这里插入图片描述

3.请求参数绑定实体类型

3.1实体类中仅包含基本对象和字符串类型

实体类Account:

@Data
public class Account implements Serializable {
    private String username;
    private String password;
    private Double money;
}

表单提交数据:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="/param/saveAccount" method="post">
        姓名:<input type="text" name="username"/><br>
        密码:<input type="text" name="password"/><br>
        金额:<input type="text" name="money"/><br>
        <input type="submit" value="提交"/>
    </form>
</body>
</html>

控制器中方法:

@Controller
@RequestMapping(path = "/param")
public class ParamController {
    //实体类型
    @RequestMapping("/saveAccount")
    public String saveAccoint(Account account){
        System.out.println(account);
        return "success";
    }
}

在这里插入图片描述
在这里插入图片描述

3.2 实体类型中包含引用类型

@Data
public class User implements Serializable {
    private String uname;
    private int age;
}
@Data
public class Account implements Serializable {
    private String username;
    private String password;
    private Double money;
    //引用类型
    private User user;
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="/param/saveAccount" method="post">
        姓名:<input type="text" name="username"/><br>
        密码:<input type="text" name="password"/><br>
        金额:<input type="text" name="money"/><br>

        用户姓名:<input type="text" name="user.uname"/><br>
        用户年龄:<input type="text" name="user.age"/><br>
        <input type="submit" value="提交"/>
    </form>
</body>
</html>
@Controller
@RequestMapping(path = "/param")
public class ParamController {
    //实体类型
    @RequestMapping("/saveAccount")
    public String saveAccoint(Account account){
        System.out.println(account);
        return "success";
    }
}

在这里插入图片描述
在这里插入图片描述

4.配置解决中文乱码的过滤器(Post方式提交数据)

    <!--配置解决中文乱码的过滤器-->
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

在这里插入图片描述

5.请求参数绑定集合类型

@Data
public class User implements Serializable {
    private String uname;
    private int age;
}
@Data
public class Account implements Serializable {
    private String username;
    private String password;
    private Double money;
    private List<User> list;
    private Map<String,User> map;
}
<%--把数据封住哪个在Acount类中,类中存在list和map的集合--%>
<form action="/param/saveAccount" method="post">
   姓名:<input type="text" name="username"/><br>
   密码:<input type="text" name="password"/><br>
   金额:<input type="text" name="money"/><br>
   <%--将这一组User对象封装到List集合中--%>
   用户姓名:<input type="text" name="list[0].uname"/><br>
   用户年龄:<input type="text" name="list[0].age"/><br>
   <%--将这一组User对象封装到Map集合中--%>
   用户姓名:<input type="text" name="map['one'].uname"/><br>
   用户年龄:<input type="text" name="map['one'].age"/><br>
   <input type="submit" value="提交"/>
</form>
@Controller
@RequestMapping(path = "/param")
public class ParamController {
    //实体类型
    @RequestMapping("/saveAccount")
    public String saveAccoint(Account account){
        System.out.println(account);
        return "success";
    }
}

在这里插入图片描述
在这里插入图片描述

赞(0) 打赏
未经允许不得转载:IDEA激活码 » SpringMvc中请求参数的绑定

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区