servlet-context.xml
servlet-context.xml은 DispatcherServlet에서 참조할 내용들을 선언한다.
파일 전체 내용 보기
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- 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>
<context:component-scan base-package="com.hakademy.spring06" />
</beans:beans>
파일 내용 상세 설명
xml 헤더
xml 문서임을 명시하는 xml 헤더 코드이다. 모든 xml 문서의 첫 번째 줄에 위치한다.
<?xml version="1.0" encoding="UTF-8"?>
기본 영역 설정
servlet-context.xml의 기본 설정 영역이다.
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
</beans:beans>
xmlns : 기본 XML Namespace 선언. 이 주소의 내용을 기본 태그로 사용 가능
xmlns:beans : beans XML Namespace 선언. beans: 형태의 태그 사용 가능
xmlns:context : context XML Namespace 선언. context: 형태의 태그 사용 가능
xmlns:xsi : XML Schema Instance 스펙 정보 선언
xsi:schemaLocation : 실제 선언된 정보들의 위치를 알려주는 역할
즉, 이 문서에서는 위의 내용에 의해 다음과 같은 규칙이 적용된다.
아무런 표시 없이 태그를 사용하면 spring-mvc 모듈의 내용을 사용할 수 있다.
beans:로 시작하는 태그를 사용하면 spring-beans 모듈의 내용을 사용할 수 있다.
context:로 시작하는 태그를 사용하면 spring-context 모듈의 내용을 사용할 수 있다.
MVC Annotation 활성화
아래 코드를 통해 @Controller와 같은 mvc annotation을 활성화한다.
<annotation-driven />
정적 자원 설정
DispatcherServlet에서 알아야 할 정적 자원들의 위치와 주소를 설정한다.
이외에도 다양한 형태의 정적 자원들이 프로젝트 내에 존재할 수 있으므로 연결 설정을 해주면 DispatcherServlet에서 이 설정을 제외한 나머지(/)를 처리한다.
<resources mapping="/resources/**" location="/resources/" />
View Resolver 설정
다음은 View Resolver 설정 코드이다.
<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>
View Resolver는 컨트롤러에서 일을 좀 더 쉽게 처리할 수 있도록 도와주는 도구이다. 아직 컨트롤러를 배우지 않았기 때문에 간략하게 설명한다면 View Resolver의 역할은 다음과 같다.
"은평구" 라고 말하면 자동으로 "서울시"를 앞에 붙여준다.
"갤럭시" 라고 말하면 자동으로 "삼성"을 앞에 붙이고 "휴대폰"을 뒤에 붙여준다.
View Resolver는 앞/뒤에 자동으로 JSP 경로에 필요한 값들을 붙여주는 역할을 수행하며, 앞에 붙이는 것을 접두사(Prefix), 뒤에 붙이는 것을 접미사(Suffix)라 부른다.
만약 컨트롤러에서 "test"를 반환한다면, 설정에 의해 접두사/접미사가 추가되어 다음 형태가 된다.
/WEB-INF/views/test.jsp
Component Scan 설정
Spring MVC Project에서는 자동화를 위해 기본적으로 base-package가 component-scan 설정이 되어 있다.
<context:component-scan base-package="com.hacademy.spring01" />
위의 설정은 com.hacademy.spring01
패키지를 기준으로 이하 모든 패키지에서 annotation으로 설정된 객체들을 탐색하겠다는 의미이며 이로 인해 좀 더 편리하게 스프링 객체들을 관리할 수 있게 된다.
필요하다면 기본 제공되는 component-scan 필터를 사용하지 않고 수동으로 원하는 항목들을 불러오도록 세부 설정을 할 수 있다.