모든 HTTP 요청을 받아서 적절한 컨트롤러로 전달하고,
실행 결과를 클라이언트에게 반환하는 역할을 합니다.
클라이언트가 http 요청을 서버에 보내면,
DispatcherServlet이 요청을 가로챕니다.
HandlerMapping이 URL에 맞는 컨트롤러를 색인합니다.
찾은 컨트롤러가 실행되고 ModelAndView 객체를 반환합니다.
컨트롤러가 반환한 데이터를 ModelAndView에 담고, 설정된 ViewResolver를 사용하여 JSP, Thymeleaf 등의 View를 색인합니다.
해당 View에서 HTML을 생성하여 클라이언트에게 반환합니다.
1) web.xml에 DispatcherServlet 등록
<!-- Spring MVC의 핵심 컨트롤러 DispatcherServlet 등록 -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 설정 파일들 위치 -->
<param-value>
/WEB-INF/springConfig/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 모든 요청(/*)을 Spring MVC의 DispatcherServlet이 처리하도록 설정 -->
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
servlet
DispatcherServlet을 서블릿으로 등록하는 설정,
사용할 Spring 설정 파일의 위치를 지정하는 설정 옵션입니다.
servlet-mapping
위에서 등록한 dispatcher라는 이름의 DispatcherServlet을
특정 매핑에 연결하는 설정,
모든 요청(/)을 DispatcherServlet이 처리하도록 설정 옵션입니다.
2) Spring 설정 파일 (servlet-context.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- Component Scan (Spring Bean 자동 등록) -->
<context:component-scan base-package="co.kr"/>
<!-- Spring MVC 활성화 -->
<mvc:annotation-driven/>
<!-- View Resolver (JSP 경로 설정) -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
<property name="cache" value="false" />
<property name="exposeContextBeansAsAttributes" value="true"/>
</bean>
</beans>
context:component-scan
base-package속성에 설정된 패키지의 컴포넌트를 자동으로 스캔하는 설정
MVC 관련 어노테이션을 사용 가능하도록 활성화하는 설정
.jsp 뷰 파일을 /WEB-INF/views/ 경로에서 찾도록 설정
package co.kr;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HomeController {
@GetMapping("/")
public String home(Model model) {
model.addAttribute("message", "Controller-Message");
return "index";
}
}
이제 해당 요청이 들어오면 "message" Model 데이터(Request Scope 속성)과 함께
.JSP 파일을 html로 생성하여 사용자에게 반환합니다.