본문 바로가기

Java dev/spring

스프링MVC에 의한 생명주기


스프링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을 찾습니다.