Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- java #문법
- sql #부트캠프 #내일배움캠프 #웹관리자 #도전 #학습
- java
- html #css #부트스트랩 #웹사이트 #개발 #초보 #til #내일배움캠프 #스파르타코딩클럽
- sql #내일배움캠프 #스파르타코딩클럽
Archives
- Today
- Total
Hyeok의 웹 개발 블로그
<2025.03.21> MVC 패턴 본문
📌Spring MVC
Spring 은 MVC 패턴에 프론트 컨트롤러 패턴, 어댑터 패턴이 적용된 구조를 가지고 있다.


- 실행순서
- Client로 부터 HTTP 요청(Request)을 받는다.
- Handler 조회
- Handler Mapping을 통해 요청 URL에 Mapping된 Handler(Controller)를 조회
- Handler를 처리할 Adapter 조회
- Handler를 처리할 수 있는 Handler Adapter를 조회
- Handler Adapter 실행(handle)
- 알맞은 ****어댑터가 존재한다면 ****Handler Adapter에게 요청을 위임한다.
- Handler 실행(호출)
- Handler Adapter가 실제 Handler(Controller)를 호출하여 실행 및 결과 반환
- Model And View 반환(return)
- Handler Adapter는 Handler가 반환 하는 정보를 ModelAndView 객체로 변환하여 반환
- viewResolver 호출(알맞은 View 요청)
- View Resolver를 찾고 실행
- View 반환
- View Resolver는 View의 논리 이름을 물리 이름으로 전환하는 역할을 수행하고 Rendering 역할을 담당하는 View 객체를 반환
- View Rendering
- View를 통해서 View를 Rendering
📌 Dispatcher Servlet
Spring MVC의 프론트 컨트롤러는 Dispatcher Servlet이다.
- Dispatcher Servlet은 HttpServlet을 상속 받아서 사용하고 Servlet의 한 종류이다.
- Spring Boot는 Dispatcher Servlet을 서블릿으로 자동으로 등록(내장 Tomcat WAS를 실행하면서 등록한다)하고 모든 URL 경로에 대해서 Mapping 한다. → (urlPatterns=”/”)
- 더 자세한 URL 경로가 높은 우선순위를 가진다.
- 개발자가 만들 Servlet이 항상 우선순위가 높아서 실행된다.

💡 Spring MVC의 주요 Interface
- org.springframework.web.servlet
- HandlerMapping
- HandlerAdapter
- ViewResolver
- View
💡 @Component
Spring Bean에 등록하는 역할
- Spring Bean은 애플리케이션의 구성 요소를 정의하는 객체
- Servlet 이 Servlet Container에 등록되는 것과 같다
💡 Handler Mapping 과 Handler Adapter
Handler Mapping
핸들러 매핑에서 ExampleController를 찾을 수 있어야 한다.
→ Spring Bean의 이름으로 핸들러를 찾을 수 있는 핸들러 매핑이 필요하다.
- 우선순위 순서
- RequestMappingHandlerMapping
- 우선순위가 가장 높다
- Annotation 기반 Controller의 @RequestMapping에 사용
- BeanNameUrlHandlerMapping(위 예시코드에 사용)
- Spring Bean Name으로 HandlerMapping
Handler Adapter
Handler Mapping을 통해 찾은 핸들러를 실행할 수 있는 Handler Adapter가 필요
→ Controller Interface를 실행할 수 있는 Handler Adapter를 찾고 실행한다.
- 우선순위 순서
- RequestMappingHandlerAdapter
- Annotation 기반 Controller의 @RequestMapping에서 사용
- HttpRequestHandlerAdapter
- HttpRequestHandler 처리
- SimpleControllerHandlerAdapter(위 예시코드에 사용)
- Controller Interface 처리
📌 Spring Boot에 이미 두 가지 모두 구현되어있어서 개발자가 직접 구현할 일은 거의 없음!
🔎 Spring MVC 동작 순서

1️⃣ Handler Adapter 호출
- HandlerAdapter를 통해 "test" 논리 View Name 얻음
2️⃣ ViewResolver 호출
- "test" 라는 View Name으로 viewResolver를 우선순위 대로 호출
- BeanNameViewResolver는 View를 찾지 못한다.
- InternalResourceViewResolver 호출
3️⃣ InternalResourceViewResolver
- nternalResourceViewResolver.buildView(String viewName)
→ InternalResourceView 반환
4️⃣ InternalResourceView
- JSP와 같이 서버에서 이동하는 forward()를 호출하는 경우와 같을 때 사용

5️⃣ view.render()
- 외부에서 vier.render()를 호출 후 RequestDispatcher를 가져와 forward() 한다.
'TIL > Spring' 카테고리의 다른 글
| <2025.03.31> IOC / DI (0) | 2025.03.31 |
|---|---|
| <2025.03.28> 객체 지향 설계 (SOLID 원칙) (0) | 2025.03.28 |
| <2025.03.20> Spring 입문 2주차 (0) | 2025.03.20 |
| <2025.03.19> Spring 입문 - Web Application (0) | 2025.03.20 |
| <2025.03.18> HTTP 기초 (0) | 2025.03.18 |