티스토리 뷰

728x90

@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과 관련이 있느냐 없느냐의 차이

728x90
댓글
250x250
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함