@RequestParam和@PathVariable区别与使用

网上看到总结的内容:
@RequestParam与@PathVariable为spring的注解,都可以用于在Controller层接收前端传递的数据,不过两者的应用场景不同。

1.@RequestParam
在后台获取前段数据有两种方式:
一种是request.getParameter(“name”),另外一种是用注解@RequestParam直接获取.
request.getParameter(“name”)这种就不需要我多介绍了,很多人用这种方式去获取参数.主要来介绍下@RequestParam获取参数.
那我们首选来了解下@RequestParam中的三个参数:
①value:请求参数名(必须配置),表示接受数据的参数名称.比如在前段需要传过来的参数为id,可以写成value=id.
②required:是否必需,默认为 true,即 请求中必须包含该参数,如果没有包含,将会抛出异常(可选配置)报404错误码,
也可以设置为false.
③defaultValue:默认值,表示如果请求中没有同名参数时的默认值.

代码演示

//@RequestParam用法,注意这里请求后面没有添加参数
	@RequestMapping(value = "/test",method = RequestMethod.POST)
	public Result test(@RequestParam(value="id",required=false,defaultValue="0") String id) 

这里需要注意的一点:

 处理参数名称不一致的情况,如果前台传入lid到后台,可给该参数设置别名为id(也可将String类型换成int,会自动转换),用	@RequestParam
 注解从请求参数中映射到控制器中的参数时,控制器的参数一定要用对象类型或简单类型的包装类。例如
 @RequestParam(value="id",required=false) Integer id)不能写成@RequestParam(value="id",required=false) int id),不能用简单int类型去接
 收请求中的整数。因为,若请求中的对象为空,则int类型的参数不能接收空对象,int类型的参数必须要有一个默认值的。
 若想用简单类型去接收请求中的值,需要赋值一个默认值,写成如下的形式:@RequestParam(value = "id", required = false, defaultValue = "0") int id).

特殊情况一:
url = url?userName=zhangsan&userName=lisi,可以写成如下:

public String requestparam8(@RequestParam(value="userName") String []  userNames)
//或者是
public String requestparam8(@RequestParam(value="list") List<String> list)

特殊情况二:
url = “ c t x / m a i n / m m / a m / e d i t ? I d = {ctx}/main/mm/am/edit?Id= {Id}&name=${name}”,可以写成如下:

@RequestMapping("/edit")
     		   public String edit(Model model, @RequestParam Map<String, Object> paramMap ) {
     		        long id = Long.parseLong(paramMap.get("id").toString());
     		        String name = paramMap.get("name").toString;
     		        return page("edit");
     		    }

2.@PathVariable
使用@PathVariable接收参数,参数值需要在url进行占位.
@PathVariable是用来获得请求url中的动态参数的,@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。//配置url和方法的一个关系@RequestMapping(“xxx/{type}”)
案例如下:

@RequestMapping("/xxx/{type}")
public String zyh(@PathVariable(value = "type") int type){
		......
}
发布了7 篇原创文章 · 获赞 1 · 访问量 3230

猜你喜欢

转载自blog.csdn.net/Java_mouse/article/details/97782616