Spring MVC란?
Model, View, Controller구조인 소프트웨어 디자인 패턴이다. 사용자 인터페이스와 비지니스 로직을 분리하여 각자 개발에 집중 할수 있게 되었다
Model : 데이터를 처리를 담당 하는 영역 (Service와 DAO,DTO)역역으로 나눔.
-> Model 에서는 view와 Controller 어떠한 정보도 가지고 있어서는 안 된다.
View: 사용자 인터페이스를 담당하며 사용자에게 보여지는 부분이다.
-> Model이 가지고 있는 정보를 저장해서는 안되고, Model,Controller 구성 요소를 알아서 안 된다.
Controller: 사용자의 요청을 처리하고 Model과 View를 중개하는 역활을 한다.
Spring MVC는 서블릿 기반으로 동작하고
서블릿 이란 웹페이지를 동적으로 생성하는 서버측 프로그램을 말한다.
더 구체적으로 말하자면 서블릿은 웹서버의 성능향상을 위해 사용되는 자바 클래스의 일종이다.
서블릿은 JSP와 유사하지만, 서블릿은 자바코드 안에 HTML을 포함한다,
반면에 JSP는 HTML안에 자바 코드를 한다.
Spring MVC 프로젝트의 기본 구조
Spring MVC 프로젝트의 실행 순서
DispatcherServlet 란?
디스패처서블릿은 HTTP 요청들을 매핑된 컨트롤러로 배차해주는 역할을 수행하는 중앙 서블릿이다.
Dispacher.Servlet의 소스분석
DispatcherServlet.class 는 spring-webmvc-스프링버전RELEASE.jar에 포함
소스 파일 위치 - org/springframework/web/servlet DispacherServlet.java
기본 전력 - org/springframework/web/servlet/DispatcherServlet.properities .
Dispacher.Servlet.java 주요 메서드
void initStrategies(Application Context context) - 기본 전략을 초기화
🔻
void doService(HttpServletRequest request, HttpServletResponse response) - doDispatch()호출
🔻
void doDispatch(HttpServletRequest request, HttpServletResponse response) - 실제 요청을 처리
🔻
void processDispatchResult( HttpServletRequest request, HttpServletResponse response, HadlerExecutionChain)-
예외가 발생했는지 확인하고 , 발생하지 않았으면 reder() 호출
🔻
void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response) -응답 결과를 생성해서 전송.
DispatcherServlet properities 기본전략
스프링이 기본적으로 사용할 클래스들이 종류별 저장되어있는게 properities파일.
사용자의 요청을 처리하는 과정에서 다음과 같은 특수 Bean들을 사용함.
Bean Type | 역할 |
HandlerMapping | 요청들과 핸들러들을 HandlerMapping 구현체의 기준에 따라 매핑해줍니다. |
HandlerAdapter | 매핑된 핸들러를 호출합니다. 어댑터 패턴을 적용했기 때문에 디스패처서블릿이 핸들러의 어노테이션이나 파라미터에 대해 몰라도 됩니다. |
HandlerExceptionResolver | 예외들을 뷰에게 매핑해주고 다양한 예외처리 코드를 가능하게 해줍니다. |
ViewResolver | 문자열 기반의 논리적 뷰이름을 실제 뷰로 변환해줍니다. |
LocaleResolver | 사용자의 로케일을 기반으로 국제화된 뷰를 제공해줍니다. |
ThemeResolver | 웹 애플리케이션이 사용가능한 theme을 리졸브 해줍니다. |
MultiPartResolver | multi-part 요청들을 파싱하여 파일업로드와 같은 기능들을 지원합니다. |
FlashMapResolver | 입출력데이터를 FlashMap에 저장 및 반환하여 속성들을 한 요청끼리 전달할 수 있게 해줍니다. 주로 리다이렉트 시 사용됩니다. |
출처
https://ala-nueva.tistory.com/195
https://yeo-computerclass.tistory.com/401
https://kchs94.tistory.com/201
https://dev-coco.tistory.com/163
https://yejun-the-developer.tistory.com/4
스프링의 정석 남궁성
'Develop > Spring' 카테고리의 다른 글
[Spring] Bean/component-scan 동작 과정 (0) | 2024.08.29 |
---|---|
[Spring] Spring vs Springboot 차이 (0) | 2024.06.02 |
[Spring] 스프링 xml 설정 파일 - web.xml, root-context.xml, servlet-context.xml 차이 (0) | 2024.05.21 |
[Spring] DAO,DTO,VO 알아보기 (0) | 2024.03.13 |
[Spirng] 스프링 @ExceptionHandler와 @ControllerAdvice 사용해 예외처리 방법 and @ResponseStatus (0) | 2024.02.19 |