일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CSS
- HTML
- Spring Boot가 해결하려고 했던 문제
- 오라클통계
- 세션
- 스프링과 스프링부트 차이점
- 스프링 구글차트로 기간별 현황 조회하기
- 스프링 부트가 해결하려고 했던 문제
- 오라클주별데이터
- 제이쿼리
- 스프링 에러
- 오라클클라우드에 젠킨스 설치하기
- 자바기초
- 오라클일별데이터
- jsp
- 스프링 Ioc
- 자바 왕기초
- maven
- 자바왕초보
- 스프링
- 스프링 구글차트
- 스프링 Ioc Container
- 스프링 제어역전
- 자바 기초
- java
- 오라클
- 자바왕기초
- 오라클월별데이터
- 썸머노트
- 자바
- Today
- Total
Just Do it
[스프링] root-context.xml / servlet-context.xml / web.xml 역할과 차이 본문
[스프링] root-context.xml / servlet-context.xml / web.xml 역할과 차이
Seojoo21 2022. 3. 11. 18:241. Web.xml
웹 어플리케이션 서버 (WAS)가 최초로 구동될 때 (보통 톰캣을 많이 쓰니까 톰캣이 최초로 구동될 때) 각종 설정을 정의한다.
이때 파일 내에서 여러 xml파일을 인식 할 수 있도록 설정되어 있다. 쉽게 말해 root-context.xml과 servlet-context.xml과 같은 설정 파일을 어디서 가져올 것인지를 설정해주는, 설정을 위한 설정파일이라고 보면 된다.
<!-- 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>
<!-- 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>
context-param 태그 내에 root-context로 모든 서블릿과 필터들이 공유함으로써 root-context.xml이 정의되었다.
또한 listener 태그로 모든 서블릿과 필터들에 공유되는 스프링 컨테이너를 생성한다.
다시 말해 root-context에 정의되어있는 것들을 모든 서블릿과 필터가 공유할 수 있게 해준다
2. servlet-context.xml
MVC Model의 View와 관련된 객체를 정의한다. URL과 관련된 Controller나, 어노테이션, ViewResolver(컨트롤러에서 view 정보에 대해 설정하는 것), Interceptor, MultipartResolver 등의 설정이 이 파일에 포함된다.
쉽게 말해 Front-End 설정 파일이라고 생각하면 된다.
*서블릿이란? Controller 같은 클라이언트의 요청을 처리해주고, 다시 결과를 클라이언트에게 전송해주는 프로그래밍 기술
*ViewResolver란? Controller에서 view 정보와 model을 주면 알아서 그 정보를 이용해서 view 파일을 찾아 준다.
웹 어플리케이션에서 클라이언트의 요청을 받기 위한 컨텍스트 설정이며, 요청과 관련된 객체를 정의한다.
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
servlet-context 파일을 보면 위처럼 주석을 볼 수 있는데, "DispatcherServlet Context: 이 서블릿의 요청 처리 인프라를 정의한다"고 해석할 수 있다. 이것은 DispactcherServlet과 관련된 설정을 하는 것임을 의미한다.
3. root-context.xml
MVC Model의 Model과 관련된 객체를 정의한다. 데이터와 관련된 Service, DAO, Database 등 비즈니스 로직과 관련된 설정이 이 파일에 포함된다. 쉽게 말해 Back-End의 설정 파일이라고 생각하면 된다.
위의 자료에서 다수의 서블릿을 가지게 되는 경우 다수의 servlet-context가 root-context의 bean 정보들을 참조하는 구조가 될 수 있다.
web.xml, servlet-context.xml, root-context.xml을 통해 웹 어플리케이션으로 들어오는 모든 요청에 대한 핸들링이 가능해진다.
출처:
https://nancording.tistory.com/86
https://cluster-taek.tistory.com/entry/webxml-과-servlet-contextxml-과-root-contextxml
'신입 개발자가 되기 위해 공부했던 독학 자료들 > 자꾸 까먹는 기본 개념 모음' 카테고리의 다른 글
[스프링] Spring Interceptor란 무엇인가? 필터와 인터셉터의 차이 (0) | 2022.03.11 |
---|---|
[스프링] 필터(Filter)란 무엇인가 (0) | 2022.03.11 |
[스프링 기초 개념] pom.xml과 Maven이 무엇일까? (0) | 2022.02.16 |
세션(session)을 시작할까? (0) | 2022.02.08 |
세션(Session)이란? (0) | 2022.02.08 |