Springboot MVC 파헤치기(5) @RequestParam
Controller에서 사용되는 @RequestParam 대해서 알아보겠습니다.
@RequestParam: 클라이언트가 전달하는 HTTP 요청 Parameter 혹은 HTTP Body의 정보를 전달받기 위해서 사용됩니다.
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {
@AliasFor("name")
String value() default "";
@AliasFor("value")
String name() default "";
boolean required() default true;
String defaultValue() default ValueConstants.DEFAULT_NONE;
}
@RequestParam value, name 속성
value와 name은 Alias이고, 값을 바인딩할 때 사용됩니다. Alias이므로 속성을 명시해주면 됩니다. 하지만 요청하는 변수명과 바인딩할 변수명이 같다면 생략 가능합니다. 또한 여러 개의 @RequestParam을 사용 가능합니다.
// 변수명 명시
@GetMapping("/requestParam")
public String requestParam(@RequestParam("str") String str) { // /requestParam?str= or HTTP body에 보내기
return str;
}
// 변수명 생략
@GetMapping("/requestParam")
public String requestParam(@RequestParam String str) { // /requestParam?str= or HTTP body에 보내기
return str;
}
// 값 여러 개 받기
@GetMapping("/requestParam")
public String requestParam(@RequestParam String str,
@RequestParam int size) {
return str+" "+size;
}
@RequestParam required 속성
required 속성은 바인딩 여부를 결정합니다. default가 true이므로 속성을 설정하지 않는다면 반드시 넘겨줘야 합니다. 하지만 false를 준다면, 넘겨주지 않아도 무방합니다.
// required 속성을 default가 true이므로 str을 넘겨주지 않는다면 오류 발생
@GetMapping("/requestParam")
public String requestParam(@RequestParam String str) {
return str;
}
// required 속성을 false로 명시하였기에 오류 발생x
@GetMapping("/requestParam")
public String requestParam(@RequestParam(required = false) String str) {
return str;
}
@RequestParam defaultValue 속성
요청이 들어오고 바인딩할 값이 없을 경우 임의로 값을 넣어주는 역할을 합니다. required = false를 설정하지 않아도 오류가 발생하지 않습니다.
// str의 값이 넘어오지 않았을 경우 10을 넣어주고, 오류를 발생시키지 않습니다.
@GetMapping("/requestParam")
public String requestParam(@RequestParam(defaultValue = "10") String str) {
return str;
}
지금까지 @RequestParam에 대해서 알아봤습니다. 클라이언트에서 요청하는 값이 여러 개라면 @RequestParam을 여러 개 사용해야 하지만 @ModelAttribute를 사용한다면 간편하게 처리가 가능합니다. 다음은 @ModelAttribute에 대해서 알아보겠습니다. 감사합니다.
'SpringBoot > spring mvc' 카테고리의 다른 글
Springboot MVC 파헤치기(9) ViewResolver, HttpMessageConverters (0) | 2022.03.16 |
---|---|
Springboot MVC 파헤치기(8) @ModelAttribute, @RequestParam, @PathVariable @ResponseBody @RequestBody 동작 과정 (0) | 2022.03.15 |
Springboot MVC 파헤치기(7) @RequestBody, @ResponseBody (0) | 2022.03.15 |
Springboot MVC 파헤치기(6) @ModelAttribute (0) | 2022.03.14 |
Springboot MVC 파헤치기(4) @PathVarialbe (0) | 2022.03.02 |
댓글
이 글 공유하기
다른 글
-
Springboot MVC 파헤치기(9) ViewResolver, HttpMessageConverters
Springboot MVC 파헤치기(9) ViewResolver, HttpMessageConverters
2022.03.16 -
Springboot MVC 파헤치기(8) @ModelAttribute, @RequestParam, @PathVariable @ResponseBody @RequestBody 동작 과정
Springboot MVC 파헤치기(8) @ModelAttribute, @RequestParam, @PathVariable @ResponseBody @RequestBody 동작 과정
2022.03.15 -
Springboot MVC 파헤치기(7) @RequestBody, @ResponseBody
Springboot MVC 파헤치기(7) @RequestBody, @ResponseBody
2022.03.15 -
Springboot MVC 파헤치기(6) @ModelAttribute
Springboot MVC 파헤치기(6) @ModelAttribute
2022.03.14