13.spring获得请求参数

  1.获得基本类型参数

    @RequestMapping(value = "/save10")
    @ResponseBody //告知SpringMVC 不进行视图跳转 直接进行数据回写
    public void save10(String userName,int age) throws JsonProcessingException
    {
        System.out.println(userName);
        System.out.println(age);
    }

 

  2.获得POJO类型参数

    @RequestMapping(value="/save10",params = {"userName","age"})
    @ResponseBody
    public void save10(User user)
    {
        System.out.println(user);
    }

SpringMVC会自动调用setUserName,setAge为save10方法的参数实例化一个user对象,

user类:

package entity;

public class User
{
    private String userName;
    private int age;

    public void setUserName(String userName)
    {
        this.userName = userName;
    }

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

    public User(String userName, int age) {
        this.userName = userName;
        this.age = age;
    }

    public User() {
    }

    public String getUserName() {
        return userName;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "User{" +
                "userName='" + userName + '\'' +
                ", age=" + age +
                '}';
    }
}

  2.获得数组类型参数

    @RequestMapping(value="/save11")
    @ResponseBody
    public void save11(String[] args)
    {
        System.out.println(Arrays.asList(args));//数组打印是一个地址,list打印是值
    }

3.获得集合类型参数

客户端给一个List,元素是user对象的集合传参

private List<User> userList;
    @RequestMapping(value = "/save12")
    @ResponseBody
    public void save12 (VO vo)
    {
        System.out.println(vo);
    }

需要先封装成一个类(VO)

public class VO
{
    private List<User> userList;

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

    @Override
    public String toString()
    {
        return "VO{" +
                "userList=" + userList +
                '}';
    }

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

然后使用form表单提交数据给后台

        <form action="/user/save12" method="post" accept-charset="UTF-8">
            <%--表明是第一个user对象的userName、age--%>
            <input type="text" name="userList[0].userName"><br>
            <input type="text" name="userList[0].age"><br>

            <input type="text" name="userList[1].userName"><br>
            <input type="text" name="userList[1].age"><br>

            <input type="text" name="userList[2].userName"><br>
            <input type="text" name="userList[2].age"><br>

            <input type="submit" value="提交">
        </form>

需要在web.xml文件中设置过滤器,不然后台接收中文参数是乱码

    <!--解决SpringMVC获取请求参数时后台中文乱码问题-->
    <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>

需要User类只有无参构造函数,springMVC是通过set方法注入数据,再通过无参构造函数创建User对象。

后台输出: 

1.在js文件引入jquery

2.需要让spring-mvc添加jquery文件的映射地址

<mvc:resources mapping="/js/**" location="/js/"/>

如果需要访问webapp下的img文件的静态资源,需要添加

<mvc:resources mapping="/img/**" location="/img/"></mvc:resources>

3.在web-app新建ajax.jsp文件,发送ajax请求

<head>
    <title>Title</title>
    <script src="${pageContext.request.contextPath}/js/jquery-3.3.1.js"></script>
    <script>
        var userList = new Array();
        userList.push({userName:"zhangsan",age:18});
        userList.push({userName:"lisi",age:20});

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

4.后台收到请求,输出userList ,@RequestBody代表将请求体的内容直接注解到userList中,

ajax需要将contenType设置成application/json格式

    @RequestMapping(value = "/save13")
    @ResponseBody
    public void save13 (@RequestBody List<User> userList)
    {
        System.out.println(userList);
    }

或者springMVC匹配不到该静态资源时,可以设置tomcat访问该静态资源

<mvc:default-servlet-handler></mvc:default-servlet-handler>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值