티스토리 뷰

1. web.xml


1) DispathcerServlet Controller 등록 

-서버 시작 시 로드 되도록 load-on-startup을 1로 세팅 

-contextConfigLocation을 따로 지정하지 않으면 WEB-INF 밑에 있는 [servlet-name]-servlet.xml 파일로부터 설정 정보를 읽어옴 

-즉, 아래와 같은 경우에는 /WEB-INF/dispatcher-servlet.xml 파일이 있어야함

-.do 로 끝나는 모든 url에 대해서 해당 dispatcher controller가 호출됨


[web.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>


-이 때, /WEB-INF/[servlet-name]-servlet.xml 설정 파일을 개발자 임의로 설정할 수 있는데 이 때 사용하는 param이 contextConfigLocation

<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/[개발자 임의 설정 파일 경로]</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>


2) ContextLoaderListener

-계층 별로 나눈 xml 설정 파일들이 있을 때, web.xml에서 해당 xml 설정 파일들을 모두 load 되도록 등록하려고 할 때 사용할 수 있음


[web.xml]

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>

/WEB-INF/applicationContext.xml

/WEB-INF/applicationContext_dao.xml

</param-value>

</context-param>


<listener>

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

</listener>


=> ContextLoaderListener가 contextConfigLocation의 설정 정보 파일에 따라 root context 생성

     만약 contextConfigLocation을 따로 설정하지 않으면 default로 /WEB-INF/applicationContext.xml을 사용

3)

[web.xml] 

<servlet>

<servlet-name>aController</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/aController-servlet.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>


<servlet>

<servlet-name>bController</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/bController-servlet.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>


=> 위와 같은 경우 DispatcherServlet은 각 각 별도의 webapplicationcontext를 생성

 두 context는 독립적이므로 각 각의 설정파일에서 생성한 빈을 공유해서 사용할 수 없음

 만약, 동시에 필요한 의존성이 있는 공통빈이 있는 경우 ContextLoaderListener를 사용하여 공통으로 사용할 빈을 설정할 수 있음


[web.xml]

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>

/WEB-INF/applicationContext.xml

/WEB-INF/application_dao.xml

</param-value>

</context-param>


<listener>

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

</listener>


<servlet>

<servlet-name>aController</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/aController-servlet.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>


<servlet>

<servlet-name>bController</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/bController-servlet.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>


=>ConextLoaderListener 와 DispatcherServlet은 각 각 webapplicationcontext를 생성

   ContextLoaderListener가 생성한 컨텍스트가 root 컨텍스트가 되고 

   DispatcherServlet이 생성한 컨텍스트가 자식 컨텍스트가 됨

  즉, root 컨텍스트의 설정 빈을 aController-servlet.xml에서 생성한 빈과 bController-servlet.xml에서 생성한 빈이 사용할 수 있음 

 


 






'Spring' 카테고리의 다른 글

myBatis와 Spring 연동하기  (0) 2017.02.10
MultipartFile  (0) 2017.02.09
유효성 검사(Validator)  (0) 2017.02.09
@ModelAttribute  (0) 2017.02.09
Spring 어노테이션 정리  (0) 2017.02.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함