2017년 3월 12일 일요일

Spring DispatcherServlet

- DispatcherServlet 설정

: 1개의 WebApplicationContext를 갖는다.
: WEB-INF 밑에 [서블릿이름]-servlet.xml 파일로 부터 설정 정보를 읽어온다.

아래와 같이 web.xml 에 설정 했으면 dispatcher-servlet.xml 에서 정보를 읽는다.

<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 
 <servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>*.do</url-pattern>
 </servlet-mapping>
한 개 이상의 설정 파일을 설정해야 하는경우는 다음과 같이 한다. contextConfigLocation 초기화 파라미터는 설정 파일 목록을 값으로 갖는데 
콤마(,), 공백문자(" "), 탭(\t), 줄바꿈(\n), 세미콜론(";)을 이용하여 구분한다.
경로는 웹 어플리케이션 root 디렉터리를 기준으로 한다.

<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value> 
     /WEB-INF/main.xml 
     /WEB-INF/dev.xml
   </param-value>
  </init-param>
 </servlet>

아래와 같은 경우에는 각각 WebapplicationContext를 생성하기 떄문에
동시에 사용할 수 있는 공통빈 필요한 경우 ContextLoaderListener을 통해 설정이 가능하다. ContextLoaderListener 는 contextConfigLocation를 명시하지 않으면 /WEB-INF/applicationContext.xml을 설정 파일로 사용한다.
classpath에서 정보를 읽어 오고 싶으면 'classpath:' 접두어를 사용하면 된다.

ContextLoaderListener  가 root Context 가 되고 dispatcherServelt 가 생성하는 Context가 자식이 된다.


<servlet>
  <servlet-name>Adispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 

<servlet>
  <servlet-name>Bdispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>2</load-on-startup>
 </servlet>
 


<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
           /WEB-INF/dev.xml 
           /WEB-INF/common.xml 
           classpath:config/conf.xm
     </param-value>
</context-param>

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Share:

0 개의 댓글:

댓글 쓰기