SpringMVC的请求-获得请求参数

SpringMVC可以接收如下类型的参数

  • 基本类型参数

  • POJO类型参数

  • 数组类型参数

  • 集合类型参数


获得基本类型参数

Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配。并且能自动做类型转换。
http://localhost:8080/eight?name=liu&age=2

//    获得基本类型参数
    @RequestMapping("eight")
    @ResponseBody
    public void test8(String name, int age) {
        System.out.println(name);
        System.out.println(age);
    }

获得POJO类型参数

Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。
http://localhost:8080/night?name=liu&age=2

package com.domain;

public class User {

    String name;
    int age;


    public User() {
    }


    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
//    获得pojo类型参数
    @RequestMapping("night")
    @ResponseBody
    public void test9(User user) {
        System.out.println(user.getName());
        System.out.println(user.getAge());
    }

获得数组类型参数

Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配。
http://localhost:8080/ten?str=1&str=2&str=3

//    获得数组类型参数
    @RequestMapping("ten")
    @ResponseBody
    public void test10(String str[]) {
        int length = str.length;
        for (int i = 0; i < length; i++) {
            System.out.println(str[i]);
        }
    }

获得集合类型参数(两种实现方式)

  • 将集合参数包装到一个POJO中
  • 使用ajax提交时

获得集合类型参数:将集合参数包装到一个POJO中

<form action="${pageContext.request.contextPath}/eleven" method="post">
    <%--表明是第一个User对象的username age--%>
    <input type="text" name="list[0].name"><br/>
    <input type="text" name="list[0].age"><br/>
    <%--表明是第二个User对象的username age--%>
    <input type="text" name="list[1].name"><br/>
    <input type="text" name="list[1].age"><br/>
    <input type="submit" value="提交">
</form>
package com.domain;

import java.util.List;

public class VO {

    List<User> list;

    public List<User> getList() {
        return list;
    }

    public void setList(List<User> list) {
        this.list = list;
    }

    @Override
    public String toString() {
        return "VO{" +
                "list=" + list +
                '}';
    }
}
//    获得集合类型参数
    @RequestMapping("eleven")
    @ResponseBody
    public void test11(VO user) {

        System.out.println(user);

    }

获得集合类型参数:使用ajax提交

当使用ajax提交时,可以指定contentType为json形式,那么在方法参数位置使用@RequestBody可以直接接收集合数据而无需使用POJO进行包装

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="${pageContext.request.contextPath}/js/jquery-3.3.1.min.js" type="text/javascript"></script>

    <script>
        var userList = new Array();
        userList.push({name:"liu",age:18});
        userList.push({name:"wang",age:21});

        $.ajax({
            type:"POST",
            url:"${pageContext.request.contextPath}/twelve",
            data:JSON.stringify(userList),
            contentType:"application/json;charset=utf-8"
        });
    </script>

</head>
<body>




</body>
</html>
//    获得集合类型参数
    @RequestMapping("twelve")
    @ResponseBody
    public void test12(@RequestBody List<User> user) {

        System.out.println(user);

    }
posted @ 2021-02-17 00:29  西红柿里没有番茄  阅读(37)  评论(0编辑  收藏  举报