请求参数的绑定
1.1 绑定的机制
1.表单提交的数据都是k=v格式的 username=Adair &password=123456
2.SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的
3.要求:提交表单的name和参数的名称是相同的。
代码如图所示:
请求参数绑定的处理类的代码如下:
package com.txw.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
*请求参数绑定的处理类
* @author Adair
*/
@Controller
@RequestMapping(value = "/param")
@SuppressWarnings("all") // 注解警告信息
public class ParamController {
/**
* 请求参数绑定入门
* @return
*/
@RequestMapping(path = "testParam")
public String testParam(String userName,String passWord){
System.out.println("请求参数绑定...");
System.out.println("你的用户名:" + userName);
System.out.println("你的密码:" + passWord);
return "success";
}
}
使用TomCat运行如图所示:
通过浏览器访问http://localhost:8080/params.jsp如图所示:
点击请求参数会跳到如图所示的界面:
控制台打印结果如图所示:
1.2 请求参数绑定实体类型
1.基本数据类型和字符串类型。
2.实体类型(JavaBean)。
步骤如下:
1).在pom.xml导入如下的jar包:
<!--导入lombok的依赖jar包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
2).创建账户的实体类代码如下:
package com.txw.domain;
import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
/**
* 账户的实体类
* @author Adair
*/
@Data // 自动生成set和get方法
@ToString // 重写toString方法
@SuppressWarnings("all") // 注解警告信息
public class Account implements Serializable {
private String userName; // 账户的用户名
private String passWord; // 账户的密码
private Double money; // 账户的金额
}
3).在params.jsp文件的代码如下:
<%--
Created by IntelliJ IDEA.
User: AdAir
Date: 2020/7/1 0001
Time: 9:40
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<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="submit" value="提交"/> </br>
</form>
</body>
</html>
4).创建请求参数绑定的处理类的代码如下:
package com.txw.controller;
import com.txw.domain.Account;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
*请求参数绑定的处理类
* @author Adair
*/
@Controller
@RequestMapping(value = "/param")
@SuppressWarnings("all") // 注解警告信息
public class ParamController {
/**
* 请求参数绑定把数据封装到JavaBean的类中
* @return
*/
@RequestMapping(path = "saveAccount")
public String saveAccount(Account account){
System.out.println("方法执行了...");
System.out.println(account);
return "success";
}
}
5).使用Tomcat运行结果如图所示:
6).通过浏览器访问http://localhost:8080/params.jsp结果如图所示:
7).填写如图所示相应的信息,并点击提交。
8).控制台打印结果如图所示:
9).控制台打印结果如图所示:
引用类实现的方式如下:
1).创建用户的实体类的代码如下:
package com.txw.domain;
import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
/**
* 用户的实体类
* @author Adair
*/
@Data // 自动生成set和get方法
@ToString // 重写toString方法
@SuppressWarnings("all") // 注解警告信息
public class User implements Serializable {
private String uname; // 用户的姓名
private Integer age; // 用户的年龄
}
2).创建引用类的代码如下:
package com.txw.domain;
import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
/**
* 账户的实体类
* @author Adair
*/
@Data // 自动生成set和get方法
@ToString // 重写toString方法
@SuppressWarnings("all") // 注解警告信息
public class Account implements Serializable {
private String userName; // 账户的用户名
private String passWord; // 账户的密码
private Double money; // 账户的金额
private User user; // 引用类
}
3.在params.jsp的代码如下:
<%--
Created by IntelliJ IDEA.
User: AdAir
Date: 2020/7/1 0001
Time: 9:40
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<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>
4).在处理器类的代码如下:
package com.txw.controller;
import com.txw.domain.Account;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
*请求参数绑定的处理类
* @author Adair
*/
@Controller
@RequestMapping(value = "/param")
@SuppressWarnings("all") // 注解警告信息
public class ParamController {
/**
* 请求参数绑定把数据封装到JavaBean的类中
* @return
*/
@RequestMapping(path = "saveAccount")
public String saveAccount(Account account){
System.out.println("方法执行了...");
System.out.println(account);
return "success";
}
}
5).使用TomCat运行结果如图:
6).通过浏览器访问http://localhost:8080/params.jsp结果如图所示:
7).填写如图所示相应的信息,并点击提交。
8).控制台打印结果如图所示:
9).控制台打印结果如图所示:
3.集合数据类型(List、map集合等)
1).创建用户的实体类的实体类代码如下:
package com.txw.domain;
import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
/**
* 用户的实体类
* @author Adair
*/
@Data // 自动生成set和get方法
@ToString // 重写toString方法
@SuppressWarnings("all") // 注解警告信息
public class User implements Serializable {
private String uname; // 用户的姓名
private Integer age; // 用户的年龄
}
2).账户的实体类代码如下:
package com.txw.domain;
import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* 账户的实体类
* @author Adair
*/
@Data // 自动生成set和get方法
@ToString // 重写toString方法
@SuppressWarnings("all") // 注解警告信息
public class Account implements Serializable {
private String userName; // 账户的用户名
private String passWord; // 账户的密码
private Double money; // 账户的金额
private List<User> list; // list集合
private Map<String,User> map; // map集合
}
3).在params.Jsp的代码如下:
<%--
Created by IntelliJ IDEA.
User: AdAir
Date: 2020/7/1 0001
Time: 9:40
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>请求参数绑定</title>
</head>
<body>
<%-- 把数据封装Account类中,类中存在list和map的集合--%>
<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="list[0].uname" /><br/>
用户年龄:<input type="text" name="list[0].age" /><br/>
用户姓名:<input type="text" name="map['one'].uname" /><br/>
用户年龄:<input type="text" name="map['one'].age" /><br/>
<input type="submit" value="提交" />
</form>
</body>
</html>
4.创建请求参数绑定的处理类代码如下:
package com.txw.controller;
import com.txw.domain.Account;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
*请求参数绑定的处理类
* @author Adair
*/
@Controller
@RequestMapping(value = "/param")
@SuppressWarnings("all") // 注解警告信息
public class ParamController {
/**
* 请求参数绑定把数据封装到JavaBean的类中
* @return
*/
@RequestMapping(path = "saveAccount")
public String saveAccount(Account account){
System.out.println("方法执行了...");
System.out.println(account);
return "success";
}
}
5).使用TomCat运行结果如图:
6).通过浏览器访问http://localhost:8080/params.jsp结果如图所示:7).填写如图所示相应的信息,并点击提交。
8).控制台打印结果如图所示::