본문 바로가기

개발/Spring

[Spring] Spring 구조와 특징

Spring MVC 구조

 

https://server-engineer.tistory.com/253

동작 과정

  1. URL로 접근하여 정보를 요청한다.
  2. DispatcherServlet이 해당 요청을 매핑한 컨트롤러가 있는지 검색한다.
  3. 요청한 컨트롤러가 있다면, HandlerMapping이 Controller에 처리를 요청한다.
  4. Controller - Service - DAO - DB 계층 구조로 요청에 대한 Response와 결과를 출력할 View이름을 리턴한다.
  5. DispatcherServlet이 Response, View이름을 받아, ViewResolver를 통해 해당 View이름이 있는지 검색한 후 처리 결과 View를 반환한다.
  6. 최종 결과를 받은 DispatcherServlet이 최종 결과를 Client에게 최종 반환해준다.

 

 

 

DispatcherServlet이란?

스프링 MVC는 DispatcherServlet 등장으로 web.xml의 역할이 엄청나게 축소되었다.

예전에는 서블릿을 URL로 활용하기 위해서는 반드시 web.xml에 등록해야 했지만, DispatcherServlet이 해당 어플리케이션으로 들어오는 요청을 모두 핸들링 해준다.

위 그림과 같이 DispatcherServlet이 URL요청을 받아 다른 계층에게 요청을 할 수 있는 이유는 web.xml에 등록이 되어있기 때문이다.

하지만 모든 요청을 DispatcherServlet이 처리하다 보면 문제가 발생할 수 있다. HTML파일이나 이미지 파일 같은 경우는 DispatcherSerlvet이 처리할 수 없다. 만약 DistpatcherServlet가 요청에 대한 컨트롤러를 찾을 수 없다면 2차적으로 servlet-context.xml에서 설정된 경로를 검색하여 해당 자원을 찾게 된다. (ex. resources폴더가 될 수 있다.)

 

+ web.xml이란?
웹 어플리케이션의 환경파일로서 XML형식의 파일이다.
모든 웹 어플리케이션은 하나의 web.xml파일을 가져야한다.
위치는 WEB-INF폴더 아래에 있으며 웹 어플리케이션 시작시 메모리에 로딩된다.
작성 내용은 ServletContext의 초기 파라미터, Session의 유효시간 성정, Servlet/JSP에 대한 정의, 리스너/필터 설정 등등이 있다.

+ HandlerMapping이란?
이 인터페이스는 해당 요청 정보를 기준으로 어떤 컨트롤러를 사용할 것 인가를 결정하는 인터페이스다. url로 해당 컨트롤러를 선택하는 기준이 되는 인터페이스다. 

+ HandlerAdapter란?
핸들러를 실행하는 인터페이스이다.

 

 

 

 

 

 

 

 

 

 

 

 

'개발 > Spring' 카테고리의 다른 글

스프링 컨테이너와 스프링 빈  (0) 2021.04.29
의존성 + ( IoC / DI 란 )  (0) 2021.04.28
Servlet이란  (0) 2021.04.27
[Spring] Spring 터미널에서 백그라운드 실행하는 방법  (0) 2021.04.23
[Spring] lombok 어노테이션  (0) 2020.12.30