Programming/Spring

Spring (7) - Spring MVC 프로젝트 구조

코딩하는 포메라니안 2022. 4. 29. 01:20

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" />