上篇文章我们讲了SpringMVC 概述和SpringMVC 入门,现在来讲SpringMVC中请求参数的绑定和常用的注解
文章目录
请求参数的绑定
绑定的机制
- 当我们从表单提交数据到后台的时候,请求参数都是基于
key=value
的形式,SpringMVC 绑定请求参数的过程是通过把表单提交请求参数
,作为控制器中方法参数进行绑定的。譬如:
<a href="user/findAccount?accountId=10">查询账户</a>
上面代码的请求参数是:
accountId=10
- 此时我们利用 SpingMVC 就可以这样接收:
/**
* 查询账户
* @return
*/
@RequestMapping("/user")
public String findAccount(Integer accountId) {
System.out.println("查询了账户。。。。"+accountId);
return "success";
}
支持的数据类型:
- 基本类型参数:
- 包括基本类型和
String
类型
- 包括基本类型和
- POJO 类型参数:
- 包括实体类,以及关联的实体类
- 数组和集合类型参数:
- 包括
List
结构和Map
结构的集合(包括数组)
- 包括
SpringMVC 绑定请求参数是自动实现的,但是要想使用,必须遵循使用要求。
基本类型和 String 类型作为参数
- 如果是基本类型或者 String 类型,要求我们的参数名称必须和控制器中方法的形参名称保持一致。(严格区分大小写),见以下示例:
- param.jsp代码:
<%-- 请求参数绑定--%>
<a href="param/testParam?username=zhang&password=123">请求参数绑定</a><hr/>
- ParamController控制器代码:
/**
* 请求参数绑定
*/
@Controller
@RequestMapping("/param")
public class ParamController {
/**
* 请求参数绑定入门
* @return
*/
@RequestMapping("/testParam")
public String testParam(String username,String password){
System.out.println("用户名:" +username);
System.out.println("密码:" +password);
System.out.println("执行了...");
return "success";
}
- 运行结果
POJO 类型作为参数
- 如果是 POJO 类型,或者它的关联对象, 要求表单中参数名称和 POJO 类的属性名称保持一致。并且控制器方法的参数类型是
POJO
类型。特别地,如果 POJO 类中含有其他 POJO 类的引用,那么请求参数名称应该为外部属性名.内部属性名
,见以下示例: - param.jsp代码:
<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>
- ParamController控制器代码:
/**
* 请求参数绑定把数据封装到JavaBean的类中
* @return
*/
@RequestMapping("/saveAccount")
public String saveAccount(Account account){
System.out.println("执行了...");
System.out.println(account);
return "success";
}
- 实体类 Account 类、User 类代码:
public class Account implements Serializable {
private String username;
private String password;
private Double money;
private User user;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Double getMoney() {
return money;
}
public void setMoney(Double money) {
this.money = money;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return