위로
아래
web.xml
- 배포설명자 DD(Deployment Descriptor)
- 웹 애플리케이션 실행 시 메모리에 로드된다.
- 웹 애플리케이션을 실행할 때 함께 올라가야 할 설정을 정의해놓은 설정 파일.
- 크게 세 가지 설정
- DispatcherServlet : 클라이언트의 요청 처리
- ContextLoaderListener : 웹 어플리케이션 컨텍스트 단위의 설정을 로드
- Filter : 필터
DispatcherServlet
- 클라이언트의 요청을 전달받는 객체.
- 서블릿 단위. (요청이 여러 개면 DispatcherServlet도 여러 개다)
순서
- 클라이언트의 요청을 처리해줄 컨트롤러를 찾는다
- 컨트롤러를 실행시킨다 (비즈니스 로직 처리)
- 클라이언트에게 보여질 view를 찾는다
- 응답 데이터와 view를 클라이언트에게 전달한다
Handler Mapping 객체
- 컨트롤러를 찾는 역할
- 클라이언트의 요청 경로를 이용해 컨트롤러를 검색하고, 검색된 객체를 Dispatcher Servlet에게 리턴한다.
- http://~~/test 요청을 받으면 이 중 /test를 처리할 컨트롤러 객체를 리턴하는 것.
Handler Adapter 객체
- 컨트롤러를 실행시키는 역할
- 스프링에서 @Controller 어노테이션을 구현한 컨트롤러, Controller 인터페이스를 구현한 컨트롤러 등이 있다.
- 컨트롤러가 실행되면 비즈니스 로직을 거쳐 응답 데이터를 추출한 후, 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>
- Handler Adapter에게 전달 받은 view의 이름을 이용해 실제로 클라이언트에게 보여질 view를 찾는 역할
- perfix : 접두사
- suffix : 접미사
ContextLoaderListener
- 모든 서블릿이 공통으로 가져야 할 설정을 처리하는 객체
- Servlet Context 단위가 아니라, Application Context 단위다.
- 클라이언트의 요청이 많아지면 Dispatcher Servlet도 많아진다. 서블릿이 많아지면 이들에게 공통적으로 설정을 적용시킬 필요가 있다.
Filter
- 클라이언트에게서 온 요청을 Dispatcher Servlet이 받기 전에 Filter 객체를 거친다.
- 인코딩 필터가 적용되어 있다면, 클라이언트의 요청 데이터를 필터에서 먼저 인코딩 후, Dispatcher Servlet에게 필터링된 데이터가 전달된다.