@PathVariable与@PathParam

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tangyaliang11/article/details/80295476

@PathVariable 与 @PathParam 详见下面示例。

==========================写的太tm乱了看的我自己都眼晕==========================

@PathVariable

据说@PathVariable 是RSET风格的springmvc取值。

http://127.0.0.1:8080/tangyaliang

此种获取参数值的方式,需要在value中指定一个key,并且在方法参数中一定要有这个key不然报500错误

在简单点说就是@RequestMapping中有的参数名称方法中可以没有,但是方法中有的参数名称@RequestMapping一定要有。

{name}对应的@PathVariable(name = "name")中的"name",如果参数String name与地址中{name}名称相同

那么@PathVariable(name = "name")可以忽略name属性

经过我的简单测试 @PathVariable 属性name与value功能相同

required=true 地址中如果没有这个这个参数会报错,=false会忽略与@Autowired中的required功能相同

下面的例子输入结果是:Hello tangyaliangtangyaliang

@RestController
@RequestMapping("/")
public class ChineseDrugController {
	@ResponseBody
	@RequestMapping(value = "/{name}")
	public String showName(@PathVariable String name, @PathVariable(value = "name", required = false) String sex) {
		return "Hello " + name + sex;
	}
}
@RestController
@RequestMapping(value = "/{sex}")
public class ChineseDrugController {
	@ResponseBody
	@RequestMapping(value = "/{name}")
	public String showName(@PathVariable String name,@PathVariable(value = "sex",required = false) String sex) {
		return "Hello " + name + " " + sex;
	}
}
http:// 127.0.0.1:8080/唐/男,得到的输出是 Hello 唐 男

当看到这会想如果获得多个值应该怎么办,那就是这样了,注意show只是一个地址的标示。

@RequestMapping(value = "/{name}/{sex}/{n}/show")
	public String showName(@PathVariable String name,@PathVariable String sex) {
		return "Hello " + name + " " + sex;
	}

@PathParam

这个注解相对简单,就是从地址栏取参数值,采用的是传统的?name=唐&sex=男。

不同的是@PathVariab在没有对应属性时会是一个null值,不会报错。

通过访问地址:http://127.0.0.1:8080/namevalue/sexvalue?name=唐&sex=男

得到的输出结果是 Hello 唐 男

@RestController
@RequestMapping(value = "/{sex}")
public class ChineseDrugController {
	@ResponseBody
	@RequestMapping(value = "/{name}")
	public String showName(@PathVariable(value = "name") String name, @PathParam(value = "sex") String sex) {
		return "Hello " + name + " " + sex;
	}
}

注意在以上代码中/{sex}与/{name}可以匹配到任意根目录开始的级别例如:127.0.0.1/任意/任意。

如果带有项目名称的路径那么就是127.0.0.1/项目名称/任意/任意。所以在此演示代码中无需管它,它就是一个路径,知道含义即可。写代码时一定注意不能这么搞。



猜你喜欢

转载自blog.csdn.net/tangyaliang11/article/details/80295476