SpringMVC 中请求参数的绑定

SpringMVC 中请求参数的绑定,第1张

SpringMVC 中请求参数的绑定

请求参数的绑定说明

绑定机制

表单提交的数据都是k=v格式的 username=haha&password=123

SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的

要求:提交表单的name和参数的名称是相同的

我们可以新建一个UserController,然后在UserController中添加相关测试方法。

@Controller
@RequestMapping(value = "/user")
public class UserController {
}
基本数据类型和字符串类型

新建一个addUser方法,代码如下

@RequestMapping(value = "/parameter/add")
public String addUser(int id,String name){
    System.out.println("ID:"+id+",NAME:"+name);
    return "success";
}
实体类型(JavaBean)

我们使用SpringMVC还可以接受一个JavaBean对象。

(1)创建User实体Bean

package com.sen.bean;

import java.io.Serializable;

public class User implements Serializable {
	private String name;
	private Integer age;

	public User() {
	}

	public User(String name, Integer age) {
		this.name = name;
		this.age = 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 +
				'}';
	}
}

(2)在UserController类中添加addUser方法,代码如下:

@RequestMapping(value = "/add")
public String addUser(User user){
    System.out.println("AGE:"+user.getAge()+",NAME:"+user.getName());
    return "success";
}

(3)在index.jsp中加入如下表单

 

以上测试可以通过表单接收到对象

集合数据类型(Map、List) 接收Map类型

(1)在上面案例中,添加addUser方法,注意需要加上一个注解@RequestParam来接收Map数据,代码如下:

@RequestMapping(value = "/map/add")
public String addUser(@RequestParam Map userMap){
    System.out.println(userMap);
    return "success";
}

(2)在index.jsp中添加如下表单:

 

(3)测试

可以输入http://localhost:8080/index.jsp填写数据测试

测试可以从后台接收到数据

接收List类型

(1)在上面案例中,添加addUser方法,注意需要加上一个注解@RequestParam来接收List数据,代码如下:

@RequestMapping(value = "/list/add")
public String addUser(@RequestParam List id){
    System.out.println(id);
    return "success";
}
传入请求参数总结, String name,User user,@RequestParam Map map(List id)
  1. 提交表单的name和参数的名称是相同的

  2. 如果接收JavaBean则必须和JavaBean的属性名相同

  3. 区分大小写

实体引用类型(JavaBean)
public class IdCard implements Serializable {
    //身份z号
    private String number;
    //身份z地址
    private String address;
}
public class User implements Serializable {
	private String name;
	private Integer age;

	//一对一,一个用户有一个身份z属性
	private IdCard idCard;//idCard.number=666
}

(2)修改index.jsp中action="/user/add"对应的表单,代码如下:

 

取赋值用.来表示

idCard.number

给JavaBean集合属性数据封装

如果JavaBean有集合属性,JSP页面编写方式:list[0].属性

我们在上面案例基础上添加一个Mobile对象,再在User中添加一个集合属性List mobiles属性。

只需修改:

	//一对多,比如一个用户拥有多部手机,即手机集合
	private List mobiles;//mobiles[0].mobileName=huawei

集合的取赋值用
 mobiles[0].mobileName=huawei

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5692738.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存