SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍

介绍几种如何处理url中的参数的注解@PathVaribale/@RequestParam/@GetMapping。

其中,各注解的作用为:

@PathVaribale 获取url中的数据

@RequestParam 获取请求参数的值

@GetMapping 组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写

@PathVaribale 获取url中的数据

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

@RequestParam 获取请求参数的值

@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 组合注解

@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

你可能感兴趣的:(SpringBoot)