티스토리 뷰
스프링은 흩어놓은 페이지 같아 이해가 어려웠다.
이참에 하나씩 뜯어 정리해보기로 했다.
web.xml
서버의 시작지점으로 웹 애플리케이션의 기본적인 설정을 작성하는 파일이다.
WAS Tomcat 이 최초로 구성될 때 web.xml 파일을 읽고 그에 해당하는 웹 애플리케이션을 설정한다.
Deployment Descriptor 배포 서술자라고도 한다.
한글처리(encoding)를 여기서 했다.
< xml >
xml 파일이고 버전, UTF-8로 인코딩한다는 설정
<?xml version="1.0" encoding="UTF-8"?>
< web-app >
web.xml 파일의 루트 엘리먼트로 모든 웹 애플리케이션 설정은 이 코드 안에 있어야 한다.
< context-param >
- 객체를 핸들링하기 위한 접근수단 : 이름이나 객체를 바인딩하는 집합의 역할을 담당한다.
- 어플리케이션의 초기화 파라미터(context의 파라미터)를 선언하는 데 사용한다(지역변수 같은 역할)
- 이클립스(STS)에서 제공하는 기본설정 파일 외에 사용자가 직접 컨트롤하는 XML 파일을 지정해주는 역할
- 여기서 root-context.xml은 모든 서블릿과 필터에서 사용되는 root 스프링 컨테이너의 설정이다.
<context-param>
<param-name>contextConfigLocation</param-name> // param-name 파라미터 이름
<param-value>/WEB-INF/spring/root-context.xml</param-value> // param-value 파라미터 값
</context-param>
< listener >
모든 서블릿과 필터에 의해 공유되는 스프링 컨테이너를 생성한다.
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
리스너 태그로 등록된 ContextLoaderListener 클래스가 WebApplicationContext 생성
=> WebApplcationContext는 웹 애플리케이션에서 root 컨텍스트가 되고,
=> 자식은 root가 제공하는 객체(Bean)을 사용할 수 있다.
< servlet >
애플리케이션의 요청을 처리하는 부분
클라이언트가 요청(Request)을 보내면 요청을 처리할 수 있는 곳으로 넘겨주고,
결과를 서버쪽 응답(Response)을 통해 클라이언트에게 넘겨주는 곳을 정한다.
=> DispatcherServlet 가 이 과정을 진행한다.
<!-- Processes application requests -->
<servlet>
// <servlet-name> : 서블릿 중 DispatcherServelt이고
// 이 서블릿이 공유할 수 있는 걸 servlet-context.xml에 정의
<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>
<servlet-mapping> // 상대 URL 경로를 쉽게 다루기 위해 기본 URL을 변경할 때 사용
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern> // 여기에 정의된(/) url이 넘어오면
// 이 요청을 처리할 서블릿 객체를 넘김(appServlet)
</servlet-mapping>
DispatcherServlet => 서블릿을 지정한다.
(서블릿 파일 : /WEB-INF/spring/appServlet/servlet-context.xml))
=> <servlet-mapping> 은 <url-pattern> 에 설정된 값으로 요청이 들어왔을 때,
<servlet-name> 에 지정된 이름의 servlet(appServlet)을 호출하겠다는 의미이다.
Spring에서는 DispatcherServlet 이 모든 요청을 받고, 요청의 URL과 매핑하는 Controller에게 위임한다.
< filter >
웹 애플리케이션 전반에 걸쳐 특정 URL이나 파일 요청 시 미리 로딩되어 사전에 처리할 작업을 수행하고(필터링)
해당 요청을 처리하는 웹 애플리케이션의 유형 중 하나이다.
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping> : 해당 필터를 적용할 name, servlet, url-pattern 등을 지정한다.
출처
https://m.blog.naver.com/zzang9ha/222069787161
'배운 것 기록 > Spring' 카테고리의 다른 글
Controller 예외처리 (0) | 2022.08.21 |
---|---|
스프링 프로젝트 구조 / 흐름 정리 (0) | 2022.08.10 |
Spring 뜯어보기 - servlet-context.xml (0) | 2022.08.09 |
Spring 뜯어보기 - root-context.xml (0) | 2022.08.07 |
스프링 프레임워크 (0) | 2022.08.03 |