티스토리 뷰

스프링은 흩어놓은 페이지 같아 이해가 어려웠다.

이참에 하나씩 뜯어 정리해보기로 했다.

 

web.xml


webapp/WEB-INF 위치확인

 

서버의 시작지점으로 웹 애플리케이션의 기본적인 설정을 작성하는 파일이다.

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/스프링] - DispatcherServlet(Front-Controller패턴), web.xml, root-context.xml, servlet-context.xml

Spring 프로젝트에서 DispatcherServlet(Front-Controller 패턴) 과 web.xml , root-context.xml , se...

blog.naver.com

 

 

댓글
최근에 올라온 글
«   2025/02   »
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
글 보관함