본문 바로가기
SPRING

스프링(Spring) web.xml , pom.xml , Servlet-Context.xml 완벽 정리

by ™ℬℑ 2022. 5. 18.

스프링을 처음 공부하다 보면 초반 항상 의문에 빠지는 파일이 있다. 

그 파일을 예로 들자면 web.xml , pox.xml , servlet-context.xml 이 있다. 사실 root-context.xml 파일도 있지만, 본인 생각에 현재 포스팅에서는 중요도가 높지 않다고 판단해 필요시 추가하겠다.

스프링 레거시 프로젝트(Spring Legacy Project)를 기반으로 프로젝트를 생성하고 자유자재로 사용하려면 반드시 알아야 하는 파일들이다. 이 파일들에 대해서 정확하게 정의를 내리고 설정할 줄 안다면 스프링 구조를 제대로 이해했다고 볼 수 있다. 설명에 앞서 xml 파일은 무엇인지 알아야 한다. 쉽게 말해 xml 파일은 모두 객체(bean)를 정의한다고 보면 된다.

 

Web.xml

web.xml
web.xml파일

web.xml은 Was(ex : Tomcat)가 처음 실행할 때 web.xml 파일을 제일 먼저 읽고 거기에 정의된 구성대로 프로젝트를 설정해준다. 쉽게 말하자면 내 Spring project의 구성을 설정하는 파일이라고 생각하면 된다.

여러 xml 파일을 인식할 수 있도록 각 파일을 가리키는 역할을 한다.

DispatcherServlet을 등록해주면서 Spring 설정 파일을 지정한다. 또한 DispatcherServlet은 초기화 과정에 지정된 파일을 이용해 Spring Container를 초기화 시킨다.

 

예를 들어 사진 6번째와 7번째 줄을 보면 param-name과 param-value가 있다. name을 정의해주고 정의된 경로에 가서 그 값을 정의하고 적용한다고 생각하면 된다. 

또한 servlet-name과 url-pattern을 보자. view폴더 내에 있는 .jsp 파일을 읽어드릴 때 혹은 정의할 때 .html로 표기한다는 뜻이다. 이처럼 web.xml은 프로젝트의 기본 설정을 하는 곳이라고 생각하면 된다.  

 

Pom.xml

pom.xml-lombok
pom.xml

Pom.xml은 내가 생성한 프로젝트에 필요한 환경설정 및 의존성을 정의해주는 파일이라고 생각하면 된다.

dependency 안에 내 프로젝트에 필요한 프로그램을 세팅해주고 사용하기 위해 준비하는 파일이다.

위 사진으로 Spring에 필수적인 Lombok을 예로 들겠다. 윈도우와 리눅스 혹은 맥에 Lombok을 설치한다고 Spring project에서 바로 사용할 수 있는 게 아니다. 그렇듯이 Pom.xml에 들어가 Lombok을 정의하고 버전을 체크한다.

 

중요 : Pom.xml을 설정하고 저장했다면, 프로젝트를 우클릭한 후 maven - update project를 꼭 해주어야 한다. 그래야 내가 정의한 dependency가 적용된다. 처음에 많은 dependency를 추가한다면 상당한 시간이 소요된다.

 

 

Servlet-Context.xml

Servlet-Context.xml
Servlet-Context.xml

Servlet-Context.xml은 DispatcherServlet에 관련한 설정을 설정하는 파일이다.

 

위 사진을 참고하면 Annotation-driven은  @어노테이션(Annotation)을 사용할 때 기본적인 Default 방식을 설정해준다.

여기서 어노테이션은 @Controller @Service @Repository 등 Spring에서 어노테이션을 사용하면 각각의 메소드와 파일이 어떤 역할을 하는지 지정해 줄 수 있고 여러모로 편리하다. 어노테이션을 사용하며 코드가 감소하고 유지보수하기에 좋다. 

 

<beans:bean>에 설정된 코드를 보자. 

Prefix는 렌더링 할때 Handler에서 반환해주는 문자열 앞에 붙여줄 문자열을 의미한다. Suffix는 뒤쪽 문자열을 의미한다. 이렇게 Servlet-context.xml을 설정함으로써 /WEB-INF/view에 있는 파일을 컨트롤러 파일에서 정의할 때 간단하게 "return index.jsp;"를 "return index;"로 정의 할수 있게 되는 것이다.

그리고 맨 처음 web.xml을 설명할때 사용한 사진에 들어있는 코드가 나의 Servlet-Context.xml파일의 경로를 일컬어 주고 사용할수 있게해준 코드였다. 이렇게 xml파일은 서로서로 연결이 되어있다.

 

 

댓글