inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

Model과 @ModelAttribute에 대해 헷갈립니다

245

스빈스빈별

작성한 질문수 5

0

안녕하세요! 너무 좋은 강의를 수강중입니다 ㅎㅎ 

다름이 아니라, MVC1까지만 수강한 상태에서 혼동이 생겨 질문합니다. 

@RequestMapping("/response-view-v2")
    public String responseViewV2(Model model){
        model.addAttribute("data","hello!");
        return "response/hello";
    }

Http 응답에서,  view를 리턴하는 과정에서 질문이 생겼습니다. 

이전의 controller method들의 경우, argument부분에 premitive type이 오면 @RequestParam이 생략된 것으로 인식되고, 객체가 있는 경우 @ModelAttribute가 생략된것으로 인식된다고 하셨습니다. 

그래서 MessageBody를 직접 가져오는 경우에서도, @ResponseBody를 생략하는 경우 @ModelAttribute가 생략된것으로 인식이 될 수 있으니 조심해야한다는 말이 있었습니다. 

1. 그런데 위의 코드의 경우, Model model이 들어오는데, 그럼 이것은 @ModelAttribute가 생략된 것으로 보는 것인가요?? 

2.  그런데 @ModelAttribute가 Method argument로 오는 경우에는, model로부터 argument를 받아와야 한다는 것을 명시하는 것으로 알고 있습니다.여기서 말하는 model이 위의 코드의 Argument로 오는org.springframework.ui.Model과 같은 것인가요? 

3. 

제가 찾아본 내용에의하면, @ModelAttribute가 method argument에 있는 경우, argument는 model로부터 얻어와야 하기 때문에, 만약 그것이 model에 존재하지 않았다면 먼저 인스턴스화하여 model에 추가하고, model에 존재한 때 부터는, argument의 필드를 매칭 네임에 따라 요청 parameters로부터 받아와야 한다고 했습니다. 

그런데 이 경우, 만약 Model model부분이 @ModelAttribute가 생략된 것으로 본다면, 어떻게 생각해야 할 지를 모르겠습니다. 

method argument에 Model이 온 경우에는 특별하게 @ModelAttribute가 생략된 것으로 보지 않아도 되는 걸까요? 

단순히, 렌더링할 때  Model에서 데이터를 가져와햐 하기 때문에, @ModelAttribute를 사용하는게 아닌 org.springframework.ui.Model 자체를 가져와서 , 뷰 렌더링에 필요한 데이터를 model에 세팅해 놓기 위함이라고 생각한다면 @ModelAttribute가 생략된 것으로 보지 않는게 나을 것만 같은데, 왜 그런것이 가능하게 해 두는 것인지도 잘 모르겠습니다. 

MVC spring

답변 1

1

김영한

안녕하세요. 스빈스빈별님

Model model은 @ModelAttribute, @RequestBody 등과는 관계없는 객체입니다.

Model model은 특별하게 사용되는 파라미터입니다.

MVC에서 컨트롤러의 데이터를 View에 전달하기 위한 용도로 사용됩니다.

강의 앞에서 학습했듯이 원래는 ModelAndView 객체에 View에 넘길 데이터를 추가해야 합니다.

스프링에서는 이것을 좀 편리하게 파라미터로 받을 수 있게 지원해준다 생각하시면 됩니다.

감사합니다.

mvc 패턴 - 적용 강의에서 회원가입할 때 redirect가 아닌 forward인 이유가 궁금합니다.

0

29

1

servlet과 container에 대한 질문입니다

0

54

1

api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?

0

84

1

jsp 의존성 수정 요청

0

123

2

요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?

0

158

1

save() 메서드 문의

0

78

1

절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상

0

114

1

request-body-json

0

94

2

MVC 패턴의 적용 단위

0

103

1

RequestMapping을 이용한 핸들러, 어댑터

0

124

2

save 후 결과화면

0

101

2

jsp를 이용한 view

0

102

1

application.properties에 debug 추가해도 결과가 똑같습니다.

0

190

1

수업 코드 제공 관련 문의

0

107

2

RequestMappingHandlerAdapter의 Controller 호출 과정

0

109

3

파일 오픈 시

0

75

1

스프링 배치 관련

0

81

1

@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부

0

115

1

postman으로 /request-body-json-v1 호출시 500 error

0

106

1

프론트엔드와 백엔드의 mvc, rest api에 대한 질문

0

90

1

모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문

0

119

1

console log 출력 관련 질문입니다.

0

79

1

애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ

0

146

1

html 변경하는 부분 적용 문제

0

108

1