SpringMVC接收参数方法(自动匹配参数+自动装箱+@RequestParam详解)

首先我们先创建一个springboot项目,详情见另外一篇博文

创建完成后简单的介绍下文件目录,如下:

Application类呢,是创建springboot项目的时候自带的,这个时候建议将该类移至根目录下。

TestDemo.java类呢是一个简单的测试类,内容如下,也比较的简单:

@RestController
public class TestDemo {
	@RequestMapping("/hai")
    public String test(String name, String password){
		System.out.println("name:" + name + ",password:" + password);
        return "/JunitTest-springboot/src/main/java/com/example/controller/TestDemo.java";  
    }
}

然后运行JunitTestSpringbootApplication.java类中的main方法。

在浏览器地址栏中输入http://localhost:8080/hai?name=zhang&password=567

结果示意图:

接下来介绍以下第二种方法,也就是自动装箱:

首先呢编写一个实体类bean,代码如下:

public class Person {
	private String name;
	private String password;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", password=" + password + "]";
	}
	
}

在上面TestDemo.java类中编写一个新的测试方法,代码如下:

	@RequestMapping("/haha")
	public String test2(Person p) {
		System.out.println(p);
		System.out.println("name:" + p.getName() + ",password:" + p.getPassword());
		return "methond = test2";
	}

在浏览器地址栏中输入:http://localhost:8080/haha?name=zhang&password=888

结果如下:

再介绍下第三种方法吧,平时开发中也用的到,就是@RequestParam

首先区分下加与不加的区别吧:

    @RequestMapping("/test3")
	public String test3(@RequestParam String name) {
		System.out.println("name: " + name);
		
		return "method = test3";
	}

 

	@RequestMapping("/test3")
	public String test3(String name) {
		System.out.println("name: " + name);
		
		return "method = test3";
	}

第一种必须带有参数,也就是说你直接输入localhost:8080/list 会报错 不会执行方法 只能输入localhost:8080/list?name=? 才能执行相应的方法

第二种 可带参数也可不带参数  就是说你输入  localhost:8080/list  以及 localhost:8080/list?name=?  方法都能执行

当然你也可以设置 @RequestParam 里面的required为false(默认为true 代表必须带参数) 这样就跟第二种是一样的了

如下:

	@RequestMapping("/test3")
	public String test3(@RequestParam(required = false) String name) {
		System.out.println("name: " + name);
		return "method = test3";
	}

当然你也可以设置里面defaultValue的属性

	@RequestMapping("/test3")
	public String test3(@RequestParam(defaultValue = "zhanglala") String name) {
		System.out.println("name: " + name);
		return "method = test3";
	}

结果如下:

里面还有一个value属性也讲一下, 前面所有的方法 传入的参数必须为parentId 才能接收到值

但是如果你加了value属性,这样会用username代替name,也就是说你地址里面传入的参数名称为username,例如

http://localhost:8080/test3?username=zhanghaha

代码如下:

	@RequestMapping("/test3")
	public String test3(@RequestParam(value="username") String name) {
		System.out.println("name: " + name);
		return "method = test3";
	}

结果如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值