스프링MVC에 의한 생명주기
스프링 mvc에 의한 생명주기를 정리합니다. 스프링으로 mvc로 간단한 프로젝트를 하고있는데 webwork을 이용했을때보다 몬가 복잡하다는 ㅠㅠ
요청 -> DispatcherServlet -> Handler Mapping -> controller -> modelandview -> viewResolver -> view
A. 클라이언트가 요청합니다.
B. 요청을 받아들이는 첫 번째 컴포넌트는 DispatcherServlet 입니다. 대부분의 자바기반 MVC프레임워크는 프론트 컨트롤러를 통해 요청을 집중시킵니다.
프론트 컨트롤러는 일반적인 웹 어플리케이션 패턴으로서, 하나의 서블릿이 어플리케
이션의 다른 컴포넌트에게 요청에 대한 책임을 위임합니다.
스프링에서는 DispatcherServlet가 프론트 컨트롤러입니다.
C. web.xml DispatcherServlet설정
1. servlet-name 설정
<servlet>
<servlet-name>councilrecord</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
※ servlet-name은 DispatcherServlet가 로드될때 servlet-name에 따른 xml파일로부터 스프링 어플리케이션 컨텍스트를 로드합니다.
ex)councilrecord -> councilrecord-servlet.xml이라는 파일로부터 어플리케션 컨텍스트 로드
2. URL 설정
<servlet-mapping>
<servlet-name>councilrecord</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
※ DispatcherServlet에 의해 다뤄질 URL지정, *.do 로 끝나는 모든 URL을 처리
3. 컨텍스트 로더 설정
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
※ DispatcherServlet는 이미 <servlet-name>을 통한 councilrecord-servlet을 로드한 상태이다. 모든 <bean>정의를 여기에 넣을 수도 있지만
계층에 따른 관리를 용이하게 해주기 위해 계층별로 스프링설정파일(.xml)을 나누는게 좋다.
나눠진 설정파일이 모두 로드되도록 하기 위해서 컨텍스트로더를 설정해줍니다.
4. contextConfigLocation 지정
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/****.xml </param-value>
<context-param>
※ 컨텍스트 로더 사용시 설정파일의 위치를 지정해 주지 않으면 기본적으로 /WEB-INF/applicationContext.xml을 찾습니다.