본문 바로가기
프로그래밍

spring 웹 어플리케이션 기반의 web.xml 설정 정리

by 탁구치는 개발자 2012. 12. 5.



spring 기반으로 되어 잇는 웹 어플리케이션의 web.xml에 대한 정리

정리의 목적은 곧 있을 스프링 3.1 교육을 위해 머리로 알고 있는 것들을 기록으로 남겨 좀더 자세하게 정보를 전달하기 위함이다.


일단 web.xml은 서블릿 배포 서술자 (DD) 라고 부른다.

영어로는 Deployment Descriptor


DD의 용도는 WAS 구동 시 /WEB-INF 디렉토리에 존재하는 web.xml 파일을 읽어 들여 웹 어플리케이션 설정을 구성하기 위함이다.


가령 스프링, 스트럿츠 등 다양한 프레임워크를 사용하여 웹 어플리케이션을 구성하거나 로그, 인코딩 설정 등 초기 셋팅을 위한 설정 파일이라고 생각하면 된다.

결국 설정을 위한 설정 파일이라고 정리되는 것인가? ㅋ


<display-name>

DD 파일의 title 정도라고 생각하면 좋겠다.

우리는 project name을 추가하여 사용하고 있다.


<description>

어떤 프로젝트를 위한 배포 서술자인지 상세하게 기록한다.

incross spring3.1 sample project


주석 log4j setting 아래 xml element

listener-class에 등록되어 있는 Log4jConfigListener는 log4j라는 로깅 프레임워크를 초기화 하는 클래스이다.

이 클래스를 초기화 할 때 log4jConfigLocation, webAppRootkey context-param을 넘겨준다.


log4jConfigLocation은 log4j 설정 파일의 위치를 지정하는 param이고, webAppRootKey는 다음과 같은 환경에서는 꼭 값을 지정해 줘야 한다.

tomcat 

 - context1 (log4j 설정 추가)

 - context2 (log4j 설정 추가)


즉, 하나의 tomcat에 context가 두 개 이상 적재되어 있고, 각 context가 log4j 프레임워크를 사용하고 있다면 webAppRootKey param에 값을 꼭 지정해 줘야 한다.

만약 지정하지 않았을 경우 default 값인 webapp.root 중복 에러가 발생한다.


주석 root application context 아래 xml element

본격적으로 스프링 웹 어플리케이션을 위한 설정 부분이다.


ContextLoaderListener 초기화를 통해 스프링의 root context를 얻을 수 있다.

여기서 말하는 context는 contextConfigLocation param을 이용하여 찾은 bean 설정 메타 파일을 로드하여 세부 설정에 맞게 bean 객체를 생성 또는 관리하는 주체를 말한다.

이게 맞나? 

토비 스프링3.1 한번 더 정독하면 확실히 개념이 잡힐 것 같으니 나중에 책 읽고 부족한 내용이다 싶으면 보충하도록 하자.


주석 spring dispatcher servlet 아래 xml element

DispatcherServlet 클래스를 초기화하여 spring의 servlet context를 생성한다.

초기화 param으로 bean 메타 설정 파일의 위치를 넘겨 준다.


load-on-startup 은 servlet 구동 순서를 의미하며 빠른 순서부터 로딩한다.

아래와 같이 3개의 서블릿이 DD에 등록되어 있고 load-on-startup이 각각 지정되어 있다면 순번이 빠른 것부터 초기화를 진행한다는 의미다.

initServlet1 (load-on-startup = 1)

initServlet2 (load-on-startup = 2)

dispatherServlet (load-on-startup = 3)


servlet-mapping은 url pattern으로 지정된 값으로 웹 요청이 들어왔을 때 servlet-name에 지정되어 있는 이름의 servlet을 호출하겠다는 의미이다.

spring에서는 DispatcherServlet이 모든 요청을 받고, 요청의 URL과 맵핑하는 Controller에 위임한다.

가령 Controller class에 @RequestMapping("/list") 애노테이션으로 지정되어 잇는 메소드가 존재하면 http://localhost:8080/list.do 요청 시 DispatcherServlet이 해당하는 URL과 매핑되는 정보를 찾은 후 연결되는 메소드에 요청을 위임한다.


<welcome-file-list>

/ 웹 요청 시 지정되어 있는 리소스 call

즉, http://localhost:8080 요청 시 index.jsp의 content를 보여준다.


아직은 spring 3.1 샘플 프로젝트를 만드는 중이라 완전하지 않은 DD 파일이므로 샘플 프로젝트 구성을 완료하면 추가적으로 다시 작성하도록 하자.