스프링 MVC를 실행하는데 필요한 최소 설정
- 스프링 MVC의 주요 설정 (HandlerMapping, ViewResolver 등)
- 스프링의 DispatcherServlet 설정
스프링 MVC 설정
package config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer{
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/view",".jsp");
}
}
@EnableWebMvc : 스프링 MVC를 설정합니다. 스프링 MVC를 사용하는데 필요한 다양한 설정을 생성한다.
위 설정 소스는 DispatcherServlet 매핑 경로를 '/'로 주었을 때, JSP/HTML/CSS 등을 올바르게 처리하기 위한 설정을 추가합니다.
그리고 JSP를 이용해서 컨트롤러의 실행결과를 보여주기 위한 설정을 추가합니다.
@EnableWebMvc 어노테이션을 사용하면 내부적으로 다양한 빈 설정을 추가해 줍니다. (해당 설정을 직접 하려면 수십 줄에 가까운 코드를 작성해야 합니다.)
@EnableWebMvc 어노테이션이 스프링 MVC를 사용하는데 필요한 기본적인 구성을 설정해 준다면, WebMvcConfigurer 인터페이스는 스프링 MVC의 개별 설정을 조정할 때 사용합니다.
WebMvcConfigurer 인터페이스에 정의된 메서드
- configureDefaultServletHandling() : 디폴트 서블릿과 관련된 설정
- configureViewResolvers() : ViewResolver 관련된 설정
web.xml 파일에 DispatcherServlet 설정
스프링 MVC가 웹 요청을 처리하려면 DispatcherServlet을 통해서 웹 요청을 받아야 하는데 이를 위해 web.xml 파일에 DispatcherServlet을 등록합니다. /src/main/webapp/WEB-INF 폴더에 web.xml 파일 작성하시면 됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>dispatcher</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>
config.MvcConfig
config.ControllerConfig
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
DispatcherServlet을 dispatcher라는 이름으로 등록합니다.
<init-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</init-param>
contextClass 초기화 파라미터를 설정합니다. 자바 설정을 사용하는 경우 AnnotationCOnfigWebApplicationContext 클래스를 사용합니다. 이 클래스는 자바 설정을 이용하는 웹 어플리케이션 용 스프링 컨테이너 클래스입니다.
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
config.MvcConfig
config.ControllerConfig
</param-value>
</init-param>
contextConfiguration 초기화 파라미터의 값을 지정합니다. 이 파라미터에는 스프링 설정 클래스 목록을 지정합니다. 각 설정 파일의 경로는 줄 바꿈이나 콤마로 구분합니다.
<load-on-startup>1</load-on-startup>
톰캣과 같은 컨테이너가 웹 어플리케이션을 구동할 때 이 서블릿을 함께 실행하도록 설정합니다.
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
모든 요청을 DispatcherServlet이 처리하도록 서블릿 매핑을 설정합니다.
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
HTTP 요청 파라미터의 인코딩 처리를 위한 서블릿 필터를 등록합니다. 스프링은 인코딩 처리를 위한 필터인 CharacterEncodigFilter 클래스를 제공합니다. 위 코드처럼 encoding 초기화 파라미터를 설정해서 HTTP 요청 파라미터를 읽어올 때 사용할 인코딩을 지정합니다.
DispatcherServlet은 초기화 과정에서 contextConfiguration 초기화 파라미터에 지정한 설정 파일을 이용해서 스플이 컨테이너를 초기화합니다. 즉 web.xml 설정은 MvcConfig 자바 크래스와 ControllerConfig 클래스를 이용해서 스프링 컨테이너를 생성합니다.
ControllerConfig클래스는 컨트롤러 구현 부분에서 작성하면 됩니다.
'Spring' 카테고리의 다른 글
[Spring] Spring MVC - 컨트롤러와 JSP (0) | 2024.03.26 |
---|---|
[Spring] 스프링 MVC - 컨트롤러 구현 해보기 (0) | 2024.03.25 |
[Spring] Spring MVC (0) | 2024.03.20 |
[Spring] @EnableTransactionManagement 주요속성과 트랜잭션 전파 (0) | 2024.03.06 |
[Spring] @Transactional 속성 (0) | 2024.03.04 |