web.xml 설정

web.xml에 대한 개념과 설정방법에 대한 페이지

web.xml?

  • 배포서술자라고 불리며 WAS에 의해 어플리케이션이 구동될때 가장 처음으로 읽는 문서이다. 어플리케이션 구동에 필요한 전반적인 정보를 포함하고 있다.

  • 서블릿설정, 필터설정, 리스너설정, 세션타임아웃설정, 에러페이지 설정등 다양한 설정정보를 기술할 수 있다.

web.xml의 태그들

web.xml

web.xml태그들

web-app태그

  • web.xml의 기본 시작태그. 기본생성시 2.5버전으로 등록되어있으며 호환되는 Servlet을 이용하기 위해서는version정보를 3.0으로 수정해줘야한다.

  • 톰캣에서 servlet 3버전을 구현했다면 3버전을, 톰캣에서 servlet4버전이상(jakarata)를 구현했다면 servlet4버전으로 변경해줘야 한다.

context-param

  • 웹 어플리케이션(context)에서 사용할 변수를 등록하는 영역이다.

  • 이 곳에 등록된 변수는 어플리케이션 전역에서 사용되며 초기 변수인 contextConfigLocation의 경우 스프링의 ContextLoaderListener에 의해 읽혀져 root-context.xml 파일을 읽는다.

listener

  • 어플리케이션에 특정 이벤트가 발생했을때 자동으로 호출되는 클래스. 서블릿이 생성/소멸될때 , 세션이 생성/소멸될때, 컨텍스트가 생성/소멸될때등 다양한 이벤트를 감지하는 리스터가 존재한다.

  • MVC프로젝트 생성시 기본으로 추가되어있는 ContextLoaderListener는 전역객체인 Root ApplicationContext를 생성하는 역할을 한다.

  • Root ApplicationContext는 Spring의 IOC Container의 역할을 하며, contextConfigLocation에 정의된 root-context.xml파일을 읽어서 bean객체들을 생성한다.

  • Root ApplicationContext는 전역 서비스용 Bean객체(DB, Service, Repository)를 저장 및 관리한다.

servlet - DispatcherServlet

  • 스프링 핵심객체인 DispatcherServlet 등록영역.

  • DispatcherServler은 클라이언트의 요청을 모두 첫 번째로 받아내는 Servlet으로 Front Controller라고도 불린다.

  • DispatcherServlet은 Web Application Context를 생성하며 DispacterServlet이 사용하는 단독 IOC Conatiner이다.

    • 웹과 관련된 Bean객체(Controller, ViewResolver)를 저장 및 관리한다.

  • <servlet>

    • <init-param>에서는 Web Application Context에서 사용할 bean객체를 초기화 시키는 servlet-context.xml파일의 경로가 들어가 있다

    • <load-on-startup>속성은 서버 시작과 동시에 초기화 시킬 서블릿의 순서를 지정하는 속성.

  • <servlet-mapping>

    • <url-pattern>/</url-pattern> 는 모든 요청을 서블릿으로 매핑하기 위한 속성으로 "기본 서블릿패턴" 혹은 "기타url 패턴"으로 불린다.

    • /로 설정하게 되면 특정 URL패턴과 일치하지 않는 "나머지" 요청을 해당 서블릿이 처리하게 된다.

circle-info

디폴트 서블릿 패턴( /)은 /*패턴과 다르다.

  • /* 패턴은 와일드카드 패턴으로 불리며, CSS 파일, JPG 파일, JS 파일 등 정적인 리소스 패턴과 동적 리소스 패턴 모두를 포함한다. 예) /spring/resources/test.jpg (정적 리소스패턴) /spring/member/login (동적 리소스패턴)

  • 위 두코드를 분리하여 정적인 자원을 제외하고 동적 리소스패턴만 처리받고 싶다고 할때 /*은 특정부분을 제외 할 수 없다.

  • / 패턴은 별도의 설정을 통해 정적 리소스 패턴을 제외한 "나머지" 동적 리소스 패턴에 대해 처리하겠다고 설정할 수 있다.

  • servlet-context.xml 내부 정적자원에 대한 핸들러코드

Filter

  • 어플리케이션에 적용할 filter등록 영역.

  • Filter는 IOC Container와 별개의 객체로, 컨테이너에 의해 관리되지 않는다.

    • 단, 버전에 따라 Bean객체로 등록도 가능하나, 현재 버전에서는 아님.

    • Spring Container가 관리하는 Bean객체 형태의 Filter 등록은 @WebFilter 혹은 @Configuration + @Bean조합으로 가능하다.

  • Filter는 DispatcherServlet으로 요청이 전달 되기 전 이를 가로채고 특정 코드를 실행할 수 있는 중간처리기(Middleware)의 역할을 수행한다.

  • 보통 웹 어플리케이션에 추가되는 공통로직,공통작업을 정의하기 위해 사용한다

    • 인코딩설정, 로그인체크필터, 권한체크필터, 로깅 , 캐싱 등

  • encodingFilter는 프로젝트에서 사용하는 인코딩작업을 대신 처리해줄 수 있는 필터.

Last updated