티스토리 뷰
@ModelAttribute
1.
메서드에 ModelAttribute
애너테이션을 사용하거나
→ 스프링의 Model 객체에 속성을 저장하고 싶을 때
이면 반환받은 a 인스턴스가 Model 객체에 추가된다. 반환되는 a 객체가 aString이라는 이름으로 Model 객체에 저장됨, RequestMapping
이 붙은 메서드보다 먼저 실행됨
2.
파라미터에 ModelAttribute
애너테이션을 사용하는 방법
→ Model 객체에서 속성을 읽고 싶을 때
이런 예제가 있다고 치면, Model로부터 page라는 객체를 얻어서 numb에 대입된다→ 오토 박싱
ModelAttribute
로 지정한 모델 속성을 Model 객체에서 찾을 수 없으면,
스프링이 자동으로 메서드 인수 타입에 맞는 새로운 인스턴스를 만들어서
메서드 인수에 대입하고 Model 객체에 넣어준다.
보통 page를 반환하는 ModelAttribute
가 달린 메서드가 같이 있으면,
그 메서드에서는 Model에 page 속성을 추가하게 되고, 거기서 page를 가져오는데 이게 없으면, (ModelAttribute 애너테이션으로 지정한 모델 속성을 Model 객체에서 찾을 수 없으면)
스프링이 자동으로 메서드 인수 타입에 맞는 새로운 인스턴스를 만들어 메서드 인수에 대입하고 Model 객체에 넣어준다.
사용자가 요청 시 전달하는 값을 오브젝트 형태로 매핑하는 어노테이션..
전달받은 파라미터를 강제로 Model에 담아서 전달하도록 할 때 필요한 어노테이션,,
@RequestParam
HttpServletRequest 객체를 컨트롤러 메서드에 전달하는 대신,
메서드 인수에 RequestParam
을 설정해서 요청 파라미터 값을 메서드 인수로 전달할 수 있다.
메서드에 RequestMapping
이나 ModelAttribute
를 설정했을 때만 RequestParam
을 사용할 수 있음.
RequestParam
의 value 속성은 메서드 인수에 값을 대입할 요청 파라미터 이름을 지정한다.
→ 여기서는 RequestParam
을 사용해서 id(요청 파라미터 값)을 exid(메서드 인수)로 전달.
exid가 int이므로 스프링에서 id를 int 타입으로 자동으로 변환한다→ 오토박싱
사용자가 요청 시 전달하는 값을 Handler(Controller)의 매개변수로 1:1 매핑할 때 사용됨
둘의 가장 큰 차이점은 Model과 관련이 있느냐 없느냐의 차이
'#2 > Spring' 카테고리의 다른 글
[Spring] Produces & Consumes (0) | 2022.01.03 |
---|---|
[spring] 코배스.. 댓글 페이징하기 (0) | 2021.11.24 |
[Spring] eclipse tomcat 서버 실행 경로 변경 (0) | 2021.11.05 |
[Spring] 각 계층에서 CRUD 테스트하기 (0) | 2021.11.04 |
[Spring] log4j cannot be resolved to a type (0) | 2021.11.04 |