一 不使用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同上