Spring

Spring MVC [ Model / @ModelAttribute]

2021. 8. 26. 21:18
목차
  1. 💜 Model 💜
  2. 💜 @ModelAttribute 💜
  3. ✍ 생략할 경우 주의할 점

 

 

spring을 공부하다 보니까 Model이랑 @ModelAttribute가 너무 많이 나와서 한번 정리 좀 하고 싶어서 글 쓰게 됐다...

Model이랑 @ModelAttribute랑 다르지만 자꾸 헷갈려서ㅋㅋㅋㅋㅋㅠㅠ

 


💜 Model 💜

  • Model은 객체이다.
  • view의 이름과 view를 렌더링할 때 필요하다.
  • map으로 되어있기 때문에 controller에서 view에 필요한 데이터를 key, value로 넣어준다.
  • Servlet에서 request.setAttribute()와 비슷한 역할을 한다.
  • model객체에 담을 때는 model.addAttribute("key", value)를 사용하면 된다.

 

 

💜 @ModelAttribute 💜

요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어주어야 한다.

보통 @RequestParam을 사용해서 값을 받고, set을 사용해서 값을 넣어주곤 하지만 이 과정을 자동화시켜주는 것이 @ModelAttribute이다.

 

👉 @ModelAttribute를 사용하지 않을 때 (model도 같이 사용해보기)

public void item(@RequestParam String name,
                 @RequestParam int price,
                 Model model){
    Item item = new Item();
    item.setName(name);
    item.setPrice(price);
    model.addAttribute("item", item);
}

 

 

이렇게 @RequestParam으로 일일이 받아서 set을 해줘야 값이 저장된다. 하지만 @ModelAttribute를 사용하면 간단해진다.

 

👉 modelAttribute 사용

public void modelAttributeEx(@ModelAttribute Item item, Model model){
	model.addAttribute("item", item);
}

이렇게 간결하게 사용 가능하다. 

@ModelAttribute가 실행되는 원리를 설명하자면 요청 파라미터의 이름으로 Item 객체의 프로퍼티를 찾는다. 

해당 프로퍼티의 setter를 호출해서 파라미터 값을 입력한다.

 

하지만 저기에서 model.addAttribute도 생략 가능하다. @ModelAttribute를 사용함으로써 model에도 자동적으로 객체가 추가 되기 때문이다.

 

➕ @ModelAttribute 어노테이션도 생략가능하다.

public void ModelAttributeEx(Item item, Model model){}

그럼 최종적으로 이런 모양이 된다!!

 

 

 

✍ 생략할 경우 주의할 점

@RequestParam과 @ModelAttribute모두 생략 가능한 어노테이션이다.

하지만 @RequestParam을 생략할 때는 String이나 int 같은 단순 타입을 사용할 때이고, 객체 같은 나머지를 사용할 때는 @ModelAttribute가 생략되었다고 생각하면 된다.

 

 

 

저작자표시 (새창열림)

'Spring' 카테고리의 다른 글

SpringBoot [Bean Validation]  (0) 2022.07.21
Thymeleaf 타임리프 기본 기능 정리 [텍스트/변수/반복/속성]  (0) 2021.10.15
Spring MVC 기본기능- HTTP 요청 [ 요청파라미터, 요청메시지]  (0) 2021.08.18
Spring [@RequestMapping 기초 정리 ]  (0) 2021.08.14
Spring boot - 로깅 [ 스프링 로그남기기 ]  (0) 2021.08.13
  1. 💜 Model 💜
  2. 💜 @ModelAttribute 💜
  3. ✍ 생략할 경우 주의할 점
'Spring' 카테고리의 다른 글
  • SpringBoot [Bean Validation]
  • Thymeleaf 타임리프 기본 기능 정리 [텍스트/변수/반복/속성]
  • Spring MVC 기본기능- HTTP 요청 [ 요청파라미터, 요청메시지]
  • Spring [@RequestMapping 기초 정리 ]
DAHLIA CHOI
DAHLIA CHOI
DAHLIA CHOI
🌼 dali's log 🌼
DAHLIA CHOI
전체
오늘
어제
  • 분류 전체보기 (103)
    • Spring (42)
    • JAVA & OOP (8)
    • AWS (2)
    • DevOps (5)
    • Network (7)
    • DB (5)
    • Algorithm (9)
      • BOJ (6)
      • PROGRAMMERS (2)
      • LEETCODE (0)
    • Books (5)
    • 트러블 슈팅 (5)
    • 회고 (0)
    • 기타 (5)
    • FRENCH (1)
    • 필사 (2)
    • 경험 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 글

hELLO · Designed By 정상우.
DAHLIA CHOI
Spring MVC [ Model / @ModelAttribute]
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.