일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Oracle
- Spring
- jsp 프로젝트
- json
- Spring MVC
- 오라클
- jquery
- jakarta.mail
- 고객센터 구현
- ajax
- 세션
- SESSION
- 교보문고 따라하기
- 코딩
- 자바
- 일단_해보는거야
- jsp
- 프로그래머스
- java
- 대분류/중분류/소분류
- Sts
- 스프링
- 다중 카테고리 구현
- Level 1
- 인증코드로 비밀번호 변경 구현
- 이메일로 인증코드 전송 구현
- 로그인과 장바구니 구현
- js
- MySQL
- MVC
감 잃지말고 개발하기
[Spring][STS][Spring MVC] #2. 스프링 MVC의 기본 구조 본문
[Spring][STS][Spring MVC] #2. 스프링 MVC의 기본 구조
persii 2023. 8. 17. 18:04목표
♠ 스프링 MVC 프로젝트의 내부 구조를 이해할 수 있다.
스프링 MVC과 Servlet
아래 그림처럼 스프링 MVC는 개발자 코드 영역과 Servlet/JSP 영역 사이에 존재하여 중간자 역할을 수행한다.
즉, Spring MVC를 이용하게 되면 Spring MVC가 내부적으로 Servlet/JSP를 처리하기 때문에
개발자들은 직접적으로 Servlet/JSP API에 신경쓰지 않고 개발이 가능해진다.
다시 말해,
Servlet을 이용한 개발자들은 HttpServletRequest / HttpServletResponse 등과 같은 Servlet API를 이용해 요청 및 응답을 처리하지만,
Spring MVC은 내부에서 이러한 처리를 대신 수행하고, 개발자들은 Spring MVC의 API를 이용해서 코드를 작성한다.
스프링 MVC의 기본 구조
스프링 MVC의 기본 구조는 아래 그림과 같이 표현할 수 있다.
① 사용자의 Request 처리
사용자의 요청은 Front-Controller인 DispatcherServlet을 통해 처리된다.
생성된 프로젝트의 web.xml에서 '/'로 들어오는 모든 Request를 DispatcherServlet이 받도록 처리해 두었다.
② ③ 해당 컨트롤러 Find & Activate
HandlerMapping은 Request의 처리를 담당하는 컨트롤러를 찾는다.
HandlerMapping 인터페이스를 구현한 여러 객체 중 RequestMappingHandlerMapping의 경우, 개발자가 @RequestMapping 어노테이션이 적용된 것을 기준으로 판단한다.
HandlerMapping을 통해 적절한 컨트롤러가 찾아졌다면 HandlerAdapter를 이용해 해당 컨트롤러를 동작시킨다.
④ Controller
개발자가 직접 작성하는 클래스로 실제 Request를 처리하는 로직이 작성된다.
이때, View에 전달해야 하는 데이터는 주로 Model이라는 객체에 담아 전달된다.
Controller는 다양한 타입의 결과를 리턴하는데, 이에 대한 처리는 ViewResolver를 이용한다.
⑤ View 페이지 설정
ViewResolver는 Controller가 리턴한 결과를 어떤 뷰를 통해 처리하는 것이 좋을지 해석한다.
가장 흔하게 사용하는 설정은 servlet-context.xml에 정의된 InternalResourceViewResolver 객체이다.
⑥ ⑦ 응답
View는 실제로 응답 보내야 하는 데이터를 JSP 등을 이용하여 생성하는 역할을 한다.
만들어진 응답은 DispatcherServlet을 통해 전송된다.
정리
1. 스프링 MVC : 개발자와 Servlet 사이의 중간자 역할
Spring MVC를 사용하면 Spring 내부적으로 Servlet/JSP를 처리하기 때문에 개발자들은 Servlet/JSP API에 신경쓰지 않고 편리하게 개발할 수 있다.
'코드로 배우는 스프링 웹 프로젝트(개정판) > Part 2 스프링 MVC 설정' 카테고리의 다른 글
[Spring][STS][Spring MVC] #4. Controller에서 Exception 처리 (0) | 2023.08.22 |
---|---|
[Spring][STS][Spring MVC] #3. 스프링 MVC의 Controller (0) | 2023.08.18 |
[Spring][STS][Spring MVC] #1. 스프링 MVC의 기본 구조 (0) | 2023.08.17 |