IT/SpringBoot

[Spring Boot] @RequestParam 어노테이션 사용법

hi.anna 2023. 12. 20. 06:20

 

@RequestParam

@RequestParam 어노테이션은

Servlet request parameters (Query Parameter, Form data)를

Controller의 메소드 파라미터와 바인딩하는 역할을 한다.

 

 

기본 사용법

    @GetMapping("/say-hello")
    public String helloMvc(@RequestParam String name, Model model) {
        model.addAttribute("data", name);
        return "hello-template";
    }

http://localhost:8080/say-hello?name=anna

위와 같이 쿼리 파라미터로 전달된, name이

helloMvc() 메소드의 파라미터 이름 'name'과 바인딩된다.

 

 

name, value 속성

아래와 같이,

명시적으로 쿼리 파라미터의 이름과 Controller 메소드의 파라미터 이름을 바인딩할 수 있다.

    @GetMapping("/say-hello")
    public String helloMvc(@RequestParam("nameParam") String name, Model model) {
        model.addAttribute("data", name);
        return "hello-template";
    }
    @GetMapping("/say-hello")
    public String helloMvc(@RequestParam(value="nameParam") String name, Model model) {
        model.addAttribute("data", name);
        return "hello-template";
    }
    @GetMapping("/say-hello")
    public String helloMvc(@RequestParam(name="nameParam") String name, Model model) {
        model.addAttribute("data", name);
        return "hello-template";
    }

http://localhost:8080/say-hello?nameParam=anna

위 코드들은 쿼리 파라미터 'nameParam'를,

Controller 메소드의 name 파라미터와 비인딩 한다.

 

 

@RequestParam에 사용할 수 있는 속성

  • name, value
  • required
  • defaultValue

name, value

이전 예제와 같이,

쿼리 파라미터와 Controller 메소드의 파라미터의 이름이 다른 경우, 명시적으로 바인딩한다.

 

required

기본 값은 true이다.

required가 true일 때, 해당 파라미터가 입력되지 않으면 에러가 발생한다.

    @GetMapping("/say-hello")
    public String helloMvc(@RequestParam(required = false) String name, Model model) {
        return name;
    }

@RequestParam(required = false) String name

위와 같이, required를 false로 설정하면, 

name 파라미터가 입력되지 않더라도 에러가 발생하지 않는다.

name 파라미터가 입력되지 않으면, name 변수는 null 값을 가진다.

 

defaultValue

defaultValue 속성을 이용해서, 파라미터가 입력되지 않은 경우의, 기본값을 설정할 수 있다.

defaultValue가 필요한 경우는, 파라미터가 입력되지 않는 경우이기 때문에,

만약 defaultValue를 설정하면, required=false를 설정하지 않더라도,

자동으로 required 값은 false가 된다.

    @GetMapping("/say-hello")
    public String helloMvc(@RequestParam(defaultValue = "Anna") String name, Model model) {
        return name;
    }

defaultValue를 "Anna"로 설정하였다.

 

http://localhost:8080/say-hello

위와 같이, name 쿼리 파라미터를 전달하지 않으면,

name 값은 "Anna"가 된다.

 

http://localhost:8080/say-hello?name=tom

위와 같이, name 쿼리 파라미터를 tom으로 하면

name 값은 "tom"이 된다.

 

 

 

반응형