Java/Spring

@RequestParam, @ModelAttribute

필리힐리 2021. 10. 24. 18:10

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/lecture/71236?tab=curriculum 

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

 

 

 

데이터를 쿼리 파라미터를 통해 가져올 때 기본 방법은

HttpServletRequest를 파라미터로 받아와 request.getParameter("itemName" itemName) 형식으로 받아오는 것이 있다.

 

그런데 이렇게 일일이 request.getParameter를 써가면서 하기 번거로운 부분이 있다.

스프링은 이를 해결하기 위해 @RequestParam 어노테이션을 제공한다.

@RequestParam은 파라미터에서 값을 뽑아 변수에 값을 자동으로 넣어준다.

 

그런데 파라미터 값을 받아 객체 item을 생성해 값을 넣어주는데

이 과정을 스프링이 자동으로 해주면 어떨까?

 

 

스프링에선 객체를 위해 @ModelAttribute 어노테이션을 제공한다.

@ModelAttribute는 크게 두가지 기능을 사용하는데

  • 파라미터로 들어오는 값과 @ModelAttribute에 정의한 객체를 비교해 매치되는 값을 넣어준다.
  • @ModelAttribute("item") 괄호 안에 정의한 이름을 키 값으로 model.attribute에 넣어준다.

 

 

("item")에 정의하는 이름은 생략도 가능한데 생략을 한다면 객체 이름에서 첫글자를 소문자로 바꿔 키 값으로 사용한다.

 

스프링을 만든 사람들은 @ModelAttribute 어노테이션을 표시하는 것조차 번거롭다고 생각했는지 이것도 생략이 가능하다.

 

 

파라미터로 객체를 넣으면 스프링은 @ModelAttribute를 이용

 

* @RequestParam, @ModelAttribute 둘 다 생략이 가능하고 파라미터로 객체로 들어오면 스프링은 @ModelAttribute을 사용하고 나머지는 @RequestParam를 이용한다.

'Java > Spring' 카테고리의 다른 글

로그  (0) 2021.10.13
MVC 패턴 (ModelView)  (0) 2021.10.02
서블릿 진행 구조  (0) 2021.09.15
서버, 서블릿, 멀티쓰레드 개념  (0) 2021.09.15
초기화 콜백, 소멸 콜백  (0) 2021.09.13