스프링 MVC 구조
동작 순서
1. 핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러 조회
2. 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터 조회
3. 핸들러 어댑터 실행
4. 핸들러 실행 : 핸들러 어댑터가 실제 핸들러 실행
5. ModelAndView 반환 : 핸들러 어댑터가 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환
6. viewResolver 호출
7. View 반환 : 뷰의 논리 이름을 물리 이름으로 바꾸고 렌더링 역할을 담당하는 뷰 객체 반환
8. 뷰 렌더링
뷰 리졸버
InternalResourceViewResolver
스프링 부트는 위 이름의 뷰 리졸버를 자동으로 등록하고
>> application.properties에 등록한
>> spring.mvc.view.prefix, spring.mvc.view.suffix 설정 정보 사용해서 등록
동작 순서
1. 핸들러 어댑터 호출
>> 핸들러 어댑터를 통해 new-form이라는 논리 뷰 이름 획득
2. ViewResolver 호출
>> BeanNameViewResolver는 new-form이라는 이름의 스프링 빈으로 등록된 뷰 찾는데 없음
>> InternalResourceViewResolver 호출
3. InternalResourceViewResolver
>> InternalResourceView 반환
4. 뷰 - InternalResourceView
>> JSP처럼 forward()를 호출해서 처리할 수 있는 경우에 사용
5. view.render()
>> view.render()가 호출되고 InternalResourceView는 forward() 사용해서 JSP 실행
@RequestMapping
RequestMappingHandlerMapping, RequestMappingHandlerAdapter
@Controller
>> 스프링이 자동으로 스프링 빈으로 등록(내부에 @Component 애노테이션 있음)
>> 스프링 MVC에서 애노테이션 기반 컨트롤러로 인식
@RequestMapping
>> 요청 정보 매핑, 해당 URL이 호출되면 이 메서드가 호출됨
>> 애노테이션을 기반으로 동작해서 메서드 이름 임의로 지음
ModelAndView : 모델과 뷰 정보를 담아 반환
컨트롤러 통합
메서드 단위의 @RequsetMapping을 클래스 단위로 유연하게 통합
실용적 방식
Model 파라미터
>> save(), members() 보면 Model 파라미터 사용
>> 스프링 MVC에서 이런 편의 기능 제공
ViewName 직접 반환
>> 뷰의 논리 이름을 반환 가능
@RequestParam 사용
>> 스프링은 HTTP 요청 파라미터를 @RequestParam으로 받기 가능
>> GET 쿼리 파라미터, POST Form 방식 모두 지원
@GetMapping, @PostMapping
>> @RequestMapping은 URL만 매칭하는 것이 아니라 HTTP Method도 함께 구분 가능
출처 : 김영한, 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
'Spring' 카테고리의 다른 글
MVC / 웹 페이지 만들기 (0) | 2025.04.06 |
---|---|
MVC / 기본 기능 (0) | 2025.04.04 |
MVC / 프레임워크 만들기 (0) | 2025.04.02 |
MVC / 서블릿, JSP, MVC 패턴 (0) | 2025.04.02 |
MVC / 서블릿 (0) | 2025.04.01 |