1. Spring MVC 프로젝트 구조
파일 구조는 위와 같으며, src/main/webapp/META-INF/context.xml은 직접 생성해야 한다.
없으면 Servers 폴더에 있는 파일이 실행된다.
2. XML 설정 파일
1. pom.xml
- 프로젝트의 개발 환경 설정
ex) java버전, 필요한 library 등록 등
2. server.xml
- Servers폴더 내에 위치
- server의 설정파일
- 실행 시킬 프로젝트가 등록되어 있다.
3. context.xml
- "web project"의 환경 관련 설정 파일
ex) DB Connection Pool
4. web.xml
- "web project"의 실행 관련 설정 파일
- Tomcat이 뜨자마자 web.xml을 실행해서 context(project)를 메모리에 로드한다.
ex) 프로젝트의 설정 파일 등록, Dispatcher servlet 등록 등
1) root-context.xml 등록
listener가 귀를 열어 놓고 있다가 Context(project)가 load되면,
프로젝트의 설정파일로 root-context.xml을 set한다.
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
2) DispatcherServlet 등록
spring에서 제공하는 DispatcherServlet을 servlet으로 등록한 후, servlet-mapping으로 특정 url과 servlet을 맵핑시킨다.
DispatcherServlet을 여러 개 생성해서 url에 따라 나눠서 처리하도록 할 수도 있다.
원래 여기 적힌 건, 클라이언트의 요청이 오면 동작하지만 <load-on-startup>을 1로 설정해서 바로 등록하도록 되어있다.
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
5. root-context.xml
- 웹(jsp)과 관련 없는 설정
ex) model (= service, dao), DB, AOP
6. servlet-context.xml
- 웹(jsp)과 관련된 설정
- DispatcherServlet의 설정파일
- DispatcherServlet과 request & response가 있는 건 모두 이 파일에 설정한다.
2022.04.27 - [웹프로그래밍/Spring] - Spring (4) - Spring MVC 패턴을 보면, DispatcherServlet에 필요한 설정을 확인할 수 있다.
- DispatcherServlet은 처리할 Controller를 부르고, controller의 앞뒤로 Interceptor 설정할 수 있으므로, 이 파일에서 읽을 수 있도록 설정한다.
ex) controller, interceptor, handlerMapping, viewResolver
1) Resource Mapping
Dispatcher Servlet은 "list"와 같이 이름을 받으면, 앞 뒤로 덧붙여 가야할 주소를 만든다.
하지만, img나 file과 같은 파일은 화면이 아니라 자원으로 resource파일로 가라고 알려줘야한다.
Dispatcher Servlet이 "resources/___/___/..."식으로 받으면 location으로 연결하라는 뜻이다.
<resources mapping="/resources/**" location="/resources/" />
+) *과 **의 차이 = *는 '/'를 제외한 모든 문자들, **는 모든 문자들을 의미
2) 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>
3) Component Scan
<context:component-scan base-package="com.test.mvcproject" />
'Programming > Spring' 카테고리의 다른 글
Spring(10) - Mybatis란? (0) | 2022.05.06 |
---|---|
Spring(10) - Mybatis 실습 1 : 기본 세팅 (0) | 2022.05.06 |
Spring (6) - Spring MVC 프로젝트 생성하기 (0) | 2022.04.27 |
Spring (5) - Spring MVC 패턴 (0) | 2022.04.27 |
Spring (4) - MySQL과 연결하기 (0) | 2022.04.25 |