DEV/Spring

[Spring] @RequestParam의 이해

Bi3a 2023. 11. 21. 22:41

목차
반응형

[Spring] @RequestParam에 대해 알아봅시다.
Spring boot 기초 깨부시기

 

@RequestParam

HTTP 요청으로 View에서 값을 바인딩해 받아옵니다.
@RequestParam("가져올 데이터의 이름", Type T 변수명 var, Model model) 형태로 쓰입니다. 
 

required, defaultValue

java
닫기
// 기본
String inputUsername(@RequestParam(name = "name", required = true,
defaultValue = "guest"), String user)
return user;
// 파라미터 이름이 변수와 같으면 생략 가능
String inputUsername(@RequestParam("name", required = true,
defaultValue = "guest"), String user)
return user;

 

예제는 뷰에서 해당 이름의 파라미터 값을 받아와 매개변수인 user로 바인딩하는 작업을 수행합니다.

  • required : 파라미터에 원하는 value 값이 없는 경우 required = false 면 null 값을 저장합니다.  
  • required = true 면 404 error가 발생합니다.

defaultValue : 요청한 value 값이 없을 때 defaultValue 값으로 대체됩니다.

  • required = true에서 발생하는 404 error를 방지합니다.

 

@RequestParam의 생략

@RequestParam은 매개변수 = 데이터를 전송받는 폼 필드의 이름과 일치할 시 생략이 가능합니다.
@PostMapping("/write")
public String write(@RequestParam("title") String title, @RequestParam("content") String content){
articleService.create(title, content);
return "redirect:/article/list";
}

예제는 /write로 접속 시 view 단에서 폼 필드의 이름이 title, content에 해당하는 value를 전송받아 인자로 입력받습니다.

그러나, 폼 필드의 이름과 메소드 매개변수가 동일하게 title, content이라면 Spring은 이를  인식해 바인딩을 수행합니다.

따라서, 명시적인 @RequestParam이 생략 가능하며, 해당 내용은 아래와 같이 바꿔 적용할 수 있습니다.

 

@PostMapping("/write")
public String write(String title, String content){
articleService.create(title, content);
return "redirect:/article/list";
}

 


 

반응형