위로 아래

web.xml

  1. 배포설명자 DD(Deployment Descriptor)
  2. 웹 애플리케이션 실행 시 메모리에 로드된다.
  3. 웹 애플리케이션을 실행할 때 함께 올라가야 할 설정을 정의해놓은 설정 파일.
  4. 크게 세 가지 설정
    1. DispatcherServlet : 클라이언트의 요청 처리
    2. ContextLoaderListener : 웹 어플리케이션 컨텍스트 단위의 설정을 로드
    3. Filter : 필터

 

 


DispatcherServlet

  1. 클라이언트의 요청을 전달받는 객체.
  2. 서블릿 단위. (요청이 여러 개면 DispatcherServlet도 여러 개다)

 

순서

  1. 클라이언트의 요청을 처리해줄 컨트롤러를 찾는다
  2. 컨트롤러를 실행시킨다 (비즈니스 로직 처리)
  3. 클라이언트에게 보여질 view를 찾는다
  4. 응답 데이터와 view를 클라이언트에게 전달한다

 

Handler Mapping 객체

  1. 컨트롤러를 찾는 역할
  2. 클라이언트의 요청 경로를 이용해 컨트롤러를 검색하고, 검색된 객체를 Dispatcher Servlet에게 리턴한다.
  3. http://~~/test 요청을 받으면 이 중 /test를 처리할 컨트롤러 객체를 리턴하는 것.

 

Handler Adapter 객체

  1. 컨트롤러를 실행시키는 역할
  2. 스프링에서 @Controller 어노테이션을 구현한 컨트롤러, Controller 인터페이스를 구현한 컨트롤러 등이 있다.
  3. 컨트롤러가 실행되면 비즈니스 로직을 거쳐 응답 데이터를 추출한 후, Handler Adapter에게 리턴한다. Handler Adpater는 전달 받은 데이터와 응답할 view의 이름을 ModelAndView 형태로 DispatcherServlet에게 리턴한다.

 

ViewResolver 객체

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>
  1. Handler Adapter에게 전달 받은 view의 이름을 이용해 실제로 클라이언트에게 보여질 view를 찾는 역할
  2. perfix : 접두사
  3. suffix : 접미사

 

 

 


ContextLoaderListener

  1. 모든 서블릿이 공통으로 가져야 할 설정을 처리하는 객체
  2. Servlet Context 단위가 아니라, Application Context 단위다.
  3. 클라이언트의 요청이 많아지면 Dispatcher Servlet도 많아진다. 서블릿이 많아지면 이들에게 공통적으로 설정을 적용시킬 필요가 있다.

 

 


Filter

  1. 클라이언트에게서 온 요청을 Dispatcher Servlet이 받기 전에 Filter 객체를 거친다.
  2. 인코딩 필터가 적용되어 있다면, 클라이언트의 요청 데이터를 필터에서 먼저 인코딩 후, Dispatcher Servlet에게 필터링된 데이터가 전달된다.