测试使用的类:
public class User {
private String name;// 姓名
private Integer age;// 年龄
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
public User(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public User() {
super();
}
}
//用户的加强类
public class UserDto {
private User user;//用户对象
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
private List<UserScore> list;//参赛项目和得分
public List<UserScore> getList() {
return list;
}
public void setList(List<UserScore> list) {
this.list = list;
}
@Override
public String toString() {
return "UserDto [user=" + user + ", list=" + list + "]";
}
public UserDto(User user, List<UserScore> list) {
super();
this.user = user;
this.list = list;
}
public UserDto() {
super();
}
}
public class UserScore {
private String competitionName;//比赛科目
private Float score;//成绩
public String getCompetitionName() {
return competitionName;
}
public void setCompetitionName(String competitionName) {
this.competitionName = competitionName;
}
public Float getScore() {
return score;
}
public void setScore(Float score) {
this.score = score;
}
@Override
public String toString() {
return "UserScore [competitionName=" + competitionName + ", score=" + score + "]";
}
public UserScore(String competitionName, Float score) {
super();
this.competitionName = competitionName;
this.score = score;
}
public UserScore() {
super();
}
}
1.URI 模板模式映射
@RequestMapping("/user")
public class UserController{
//页面请求
//http://localhost:8080/springmvc/user/queryUser1/12
@RequestMapping(value="/queryUser1/{id}",method=RequestMethod.GET)
//分析:参数id在url中传递,传给id,method=RequestMethod.GET url请求必须为get方法
public void queryUser1(@PathVariable String id) {
System.out.println("id:"+id);
//结果: id:12
}
2参数传递的是user 的属性名
页面
<form action="${pageContext.request.contextPath }/user/queryUser2" method="post">
姓名:<input name="name" value=""/>
<br/>
年龄:<input name="age" value=""/>
<br/>
<input type="submit" value="提交 "/>
</form>
controller
@RequestMapping("/queryUser2")
public void queryUser2(User user) {
System.out.println(user);
//结果 User [name=aaa, age=12]
}
3参数传递的是user.属性名,需要设置一个userDto对象,其中有个属性是user
页面
<form action="${pageContext.request.contextPath }/user/queryUser3" method="post">
姓名:<input name="user.name" value=""/>
<br/>
年龄:<input name="user.age" value=""/>
<br/>
<input type="submit" value="提交 "/>
</form>
controller
@RequestMapping("/queryUser3")
public void queryUser3(UserDto userDto ) {
System.out.println(userDto.getUser());
//结果 User [name=ww, age=33]
}
4数组传参
对页面相同name,传过来是就是一个数组,这里以checkbox为例
页面
//
<form action="delete">
<table width="">
<tr >
<td>选择</td>
<td>path</td>
<td>姓名</td>
<td>年龄</td>
</tr>
<tr>
<td><input type="checkbox" name="deleteId" value="奥巴马1"/></td>
<td>/springmvc</td>
<td>奥巴马1</td>
<td>45</td>
</tr>
<tr>
<td><input type="checkbox" name="deleteId" value="奥巴马2"/></td>
<td>/springmvc</td>
<td>奥巴马2</td>
<td>45</td>
</tr>
<tr>
<td><input type="checkbox" name="deleteId" value="奥巴马3"/></td>
<td>/springmvc</td>
<td>奥巴马3</td>
<td>45</td>
</tr>
<tr><td><input type="submit" value="批量删除 "/></td> </tr>
</table>
</form>
controller
@RequestMapping("/delete")
//String[] deleteId 设置多个String【】传参
public void delete(String[] deleteId) {
for (String string : deleteId) {
System.out.print(string+" ");
}
}
输出:"奥巴马1 "奥巴马2 "奥巴马3
5.list 集合传参
页面
<form action="${pageContext.request.contextPath }/user/list" method="post">
<br/>
姓名:<input name="name" value="董大鹏"/>
<br/>
年龄:<input name="user.age" value="12"/>
<br/>
课程名:<input type="text"name="list[0].competitionName" value="游泳"/>分数:<input type="text"name="list[0].score" value="50"/><br/>
课程名:<input type="text"name="list[1].competitionName" value="攀岩"/>分数:<input type="text"name="list[1].score" value="70"/><br/>
课程名:<input type="text"name="list[2].competitionName" value="羽毛球"/>分数:<input type="text"name="list[2].score" value="90"/><br/>
<input type="submit" value="提交 "/>
</form>
controller
@RequestMapping("/list")
//设置页面传参方式 属性名|字符串,list集合,对象.属性名
public void list(User user,UserDto userDto,String name) {
System.out.println(user );//获取ID
System.out.println(userDto);
System.out.println(name);
//结果
//User [name=董大鹏, age=null]
//UserDto [user=User [name=null, age=12], list=[UserScore [competitionName=游泳, score=50.0], UserScore [competitionName=攀岩, score=70.0], UserScore [competitionName=羽毛球, score=90.0]]]
//董大鹏
}
6.@RequestParam绑定单个请求参数
@RequestMapping("queryUser4")
//@RequestParam(value="id",defaultValue="34", required=true
//value="id" 请求的参数名字为id
//required=true 表示请求中一定要有相应的参数,否则将报400错误码;
//defaultValue="34" 表示如果请求没有id这个参数是,设置默认请求参数为id=34
//String Userid 用Userid来接收id
public void queryUser4(Model model,@RequestParam(value="id",defaultValue="34", required=true)String Userid,UserDto userDto) {
System.out.println("groupid:"+Userid);
//页面请求 http://localhost:8080/springmvc/user/queryUser4
//结果 groupid:34
//页面请求 http://localhost:8080/springmvc/user/queryUser4?id=10
//结果 groupid:10
}