介绍几种如何处理url中的参数的注解@PathVaribale/@RequestParam/@GetMapping。
其中,各注解的作用为:
@PathVaribale 获取url中的数据
@RequestParam 获取请求参数的值
@GetMapping 组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写
package com.example.demo; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.*; @RestController public class HelloController { @RequestMapping(value="/hello/{id}",method= RequestMethod.GET) public String Hello(@PathVariable("id") String id){ // System.out.println("开始"); // System.out.println(id); return "id:"+id.toString(); } } 结果 id:id=2
同样,如果我们需要在url有多个参数需要获取
@RequestMapping(value="/hello/{id}/{name}",method= RequestMethod.GET) public String Hello2(@PathVariable("id") String id,@PathVariable("name") String name){ return "id:"+id+" name:"+name; }
结果 id:id=2 name:name=li
@RequestMapping(value="/hello" ,method= RequestMethod.GET) public String Hello3(@RequestParam("id") Integer id){ return "id:"+id; }
测试 http://localhost:9000/hello?id=12
结果:id:12
当我们在浏览器中输入地址:localhost:9000/hello?id ,即不输入id的具体值,此时返回的结果为null。具体测试结果如下:
但是,当我们在浏览器中输入地址:localhost:9000/hello ,即不输入id参数,则会报如下错误:
@RequestParam注解给我们提供了这种解决方案,即允许用户不输入id时,使用默认值,具体代码如下:
@RequestMapping(value="/hello",method= RequestMethod.GET)
//required=false 表示url中可以不穿入id参数,此时就使用默认参数
public String Hello4(@RequestParam(value="id",required = false,defaultValue = "1") Integer id){
return "id:"+id;
}
如果在url中有多个参数,即类似于localhost:9000/hello?id=98&&name=li这样的url,同样可以这样来处理。具体代码如下:
@RequestMapping(value="/hello",method= RequestMethod.GET) public String Hello(@RequestParam("id") Integer id,@RequestParam("name") String name){ return "id:"+id+ " name:"+name; }
@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。该注解将HTTP Get 映射到 特定的处理方法上。
即可以使用@GetMapping(value = “/hello”)来代替@RequestMapping(value=”/hello”,method= RequestMethod.GET)。即可以让我们精简代码。
@GetMapping(value = "/hello") public String Hello(@RequestParam("id") Integer id,@RequestParam("name") String name){ return "id:"+id+ " name:"+name; }
测试 http://127.0.0.1:9000/hello?id=2&name=li
结果 id:10 name:li