SpringMVC之请求参数的绑定

一 不使用SpringMVC时,获取请求参数的方法

不论get还是post请求方式都可以使用下列方法来获取请求参数
1. String getParameter(String name):根据参数名称获取参数值    username=zs&password=123
2. String[] getParameterValues(String name):根据参数名称获取参数值的数组  hobby=xx&hobby=game
3. Enumeration<String> getParameterNames():获取所有请求的参数名称
4. Map<String,String[]> getParameterMap():获取所有参数的map集合

二 SpringMVC框架的请求参数绑定入门

在SpringMVC中,如果想获取请求参数,只需要在处理请求的方法中写上和请求参数一致的形参即可,就能完成请求参数的绑定。

1. Account类

package cn.itcast.domain;

import java.io.Serializable;

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

    //setter、getter、toString方法省略
}

2. param.jsp

访问该页面,点击<a href="param/testParam?username=zhangsan&password=123">请求参数绑定的入门超链接,就可以访问/param/testParam,请求参数是username=zhangsan和password=123

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2020/6/8
  Time: 17:25
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <a href="param/testParam?username=zhangsan&password=123">请求参数绑定的入门</a>
</body>
</html>

3. ParamController

在ParamController中完成请求参数的绑定

package cn.itcast.controller;

import cn.itcast.domain.Account;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/param")
public class ParamController {

    //testParam方法中的参数(String username,String password)就是和请求参数的绑定,这两个参数可以自动获取请求参数中username和password的值
    @RequestMapping("/testParam")
    public String testParam(String username,String password){
        System.out.println("用户名是:"+username);//输出zhangsan
        System.out.println("密码是:"+password);//输出123
        return "success";
    }
}

4. success.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2020/6/7
  Time: 22:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>跳转成功</title>
</head>
<body>
    <h3>跳转成功了!!!</h3>
</body>
</html>

三 请求参数绑定实体类型

使用这种方法要保证请求参数的参数名和实体的属性名一致。

请注意实体类型里面有引用类型的属性的情况。

1. Account1类

package cn.itcast.domain;

import java.io.Serializable;

public class Account1 implements Serializable {
    private String username;
    private String password;
    private Double money;
    private User user;
    //setter、getter、toString方法省略
}

2. param1.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2020/6/8
  Time: 17:25
  To change this template use File | Settings | File Templates.
--%>
<%@ 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="提交"></br>
    </form>
</body>
</html>

3. ParamController1

package cn.itcast.controller;

import cn.itcast.domain.Account;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/param")
public class ParamController1 {

    @RequestMapping("/saveAccount")
    public String saveAccount(Account account){
        System.out.println(account);
        return "success";
    }
}

4. success.jsp 同上

三 请求参数绑定集合类型

1. Account2类

package cn.itcast.domain;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public class Account2 implements Serializable {
    private String username;
    private String password;
    private Double money;
    private List<User> userList;
    private Map<String,User> userMap;
    //省略setter、getter、toString方法
}

2. param2.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2020/6/8
  Time: 17:25
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="param/saveAccount2" method="post">
        姓名:<input type="text" name="username"></br>
        密码:<input type="text" name="password"></br>
        金额:<input type="text" name="money"></br>
        userList名字:<input type="text" name="userList[0].uname"></br>
        userList年龄:<input type="text" name="userList[0].age"></br>
        userMap的one键对应的user的uname:<input type="text" name="userMap['one'].uname"></br>
        userMap的one键对应的user的age:<input type="text" name="userMap['one'].age"></br>
        提交:<input type="submit" value="提交"></br>
    </form>
</body>
</html>

3. ParamController2

package cn.itcast.controller;

import cn.itcast.domain.Account2;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/param")
public class ParamController2 {

    @RequestMapping("/saveAccount2")
    public String saveAccount(Account2 account){
        System.out.println(account);
        return "success";
    }
}

4. success.jsp同上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值