SpringBoot基础-参数传递
@RequestParam,@PathVariable的使用
创建项目
在com.example.demo包下创建controller.Test类
@RestController @RequestMapping("test") public class Test { }
传统参数传递方式
①在Test类中创建demo方法,添加@RequestMapping("demo")注解
@RestController @RequestMapping("test") public class Test { @RequestMapping("demo") public String demo(String name){ return name; } }
②启动项目,访问 http://localhost:8080/test/demo?name=1234
③访问时把name改成name1时
发现历览器没有返回值。可以看出传统方式下,浏览器输入的参数名和后端参数名一致时,数据才可以被接收到,不一致则不能。
④没传参数也可以访问到,只是不会返回数据
传统传输方式,参数是可选的。
@RequestParam注解
①在Test类中创建demo2方法,添加@RequestMapping("demo2")注解,参数前面加@RequestParam注解,这种情况下,name2是必须要有的
@RestController @RequestMapping("test") public class Test { @RequestMapping("demo2") public String demo2(@RequestParam String name2){ return name2+"\t"; } }
不传name2会报错
②编辑demo2方法,参数前面加@RequestParam("name33")注解,这种情况下,前端访问时,不能使用name3作为参数,要使用注解里面的name33
@RequestMapping("demo2") public String demo2(@RequestParam("name33") String name3){ return name3+"\t"; }
使用name3或不传参数会报错
③ 编辑demo2方法,参数前面加@RequestParam(value = "name44")注解,这种情况下,前端访问时,不能使用name4作为参数,要使用注解里面的name44。这等价于@RequestParam("name44")
@RequestMapping("demo2") public String demo2(@RequestParam(value = "name44") String name4){ return name4+"\t"; }
同样,使用name4或不传参数会报错
④ 编辑demo2方法,参数前面加@RequestParam(name = "name55")注解,这种情况下,前端访问时,不能使用name5作为参数,要使用注解里面的name55。这等价于@RequestParam("name55")
@RequestMapping("demo2") public String demo2(@RequestParam(name = "name55") String name5){ return name5+"\t"; }
同样,使用name5或不传参数会报错
【总结】可以看出@RequestParam(""),@RequestParam(name = ""),@RequestParam(value= "")的效果是一样的。
⑤编辑demo2方法,参数前面加@RequestParam(name = "name66",required = false)注解。这种情况下name6是可选的,前端访问时使用name6作为参数和没有传参数都相当于没有传参
@RequestMapping("demo2") public String demo2(@RequestParam(value = "name66",required = false) String name6){ return name6+"\t"; }
⑦编辑demo2方法,参数前面加@RequestParam(name = "name77",defaultValue = "哈哈哈")注解。这种情况下前端访问时使用name7作为参数和没有传参数都相当于没有传参,后端默认返回 defaultValue 的值
@RequestMapping("demo2") public String demo2(@RequestParam(value = "name77",defaultValue = "哈哈哈") String name7){ return name7+"\t"; }
这种情况下总会有返回值。
@PathVariable注解
创建方法3,加上注解
@RequestMapping(value ={ "demo3/{name1}/{name2}/{name3}", //因为name3是可选参数,所以要考虑没有传输name3的情况 "demo3/{name1}/{name2}"}) public String demo3( // 可选 参数 String name, // 必选 参数 @PathVariable String name1, // 必选 参数 @PathVariable("name2") String name2, //加required = false之后变成 可选 参数 @PathVariable(value = "name3",required = false) String name3 ){ return name+"\t" +name1+"\t" +name2+"\t" +name3+"\t"; }
当传name3参数时走红的,不传时走橙色
①传name3的情况,http://localhost:8080/test/demo3/ALEX/LINUX/C?name=Admin
②不传name3的情况, http://localhost:8080/test/demo3/ALEX/LINUX?name=Admin
更多推荐
所有评论(0)