- SpringBoot에서 web.xml 안 보이는 이유는 boot안에 내부 톰캣이 있기 때문에 안 보이는 거라고 한다.(?)
Web.xml의 첫번째 주석을 보면 DispatcherServlet 등록이라고 써져있을 것이다.
이제부터 DispatcherServlet이 어떻게 구동되는가에 대해서 써보려고 한다.
참고로 SpringMVC의 첫 관문은 바로 DispatcherServlet이다.
dispatcherServlet이란?
Serlvet Container에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 프레젠테이션 계층의 제일 앞에 둬서 중앙집중식으로 처리해주는 프론트 컨트롤러이다.
즉, 클라이언트 요청이나 서버를 구동시킬때 가장 먼저 마주치고 먼저 실행되는 녀석이다.
DispatcherServlet은 이렇게 돌아간다.
DispatcherServlet - 클라이언트의 요청을 받고, 리턴 값을 view에 전달한다.
HandlerMapping - 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지를 결정
HandlerAdapter - DispatcherServlet의 처리 요청을 변환해서 컨트롤러에 전달하고 컨트롤러의 응답 결과를 DispatcherServlet이 요구하는 형식으로 변환한다. 웹 브라우저 캐시 등의 설정도 담당한다.
Controller - 클라이언트의 요청을 처리한 뒤 결과를 리턴한다.
ViewResolver - 컨트롤러의 처리 결과를 보여줄 뷰를 결정한다.
View - 컨트롤러의 처리 결과 화면을 생성한다.
여기서 Controller와 View와 연결되는 JSP는 직접 구현을 해줘야 한다.
일단 DispatcherServlet 설정부터 시작한다.
DispatcherServlet은 spring mvc의 대표적인 서블렛 클래스이다.
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 기본적인 dispatcherServlet설정 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/*.xml</param-value>
</init-param>
<!-- 추가 설정이 필요할 시에는 contextConfigLocation을 더해준다. -->
<load-on-startup>1</load-on-startup>
</servlet>
- xml을 이용하여 dispatcherServlet 등록
기본 서블렛 설정 시 servlet-name, servlet-class만 써주면 된다.
하지만 설정 파일이 많아진다면 init-param 속에 contextConfigLocation을 넣고 param-value에 결로를 설정해주면 된다.
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</init-param>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
<!-- 클래스 이름 -->
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>