Tomcat 서버에 하나의 프로젝트를 올리는 경우와 여러 개의 프로젝트를 올리는 경우, Context Root의 의미와 역할은 조금 다르게 나타난다. 두 상황을 비교해보자 !
/ (루트 경로)http://example.com이라면, 해당 URL로 접근하면 바로 배포된 애플리케이션의 첫 페이지가 보인다.http://example.com/servlet1이나 http://example.com/page.jsp처럼 모든 리소스가 서버의 최상위 경로 아래에서 제공된다.⇒ Context Root는 기본적으로 /로 설정되며, 필요에 따라 개발자가 다른 경로로 명시적으로 설정할 수도 있다.
ex) 두 개의 프로젝트가 각각 app1과 app2라는 이름으로 배포되었다고 가정하자.
http://example.com/app1http://example.com/app2각 프로젝트의 서블릿이나 JSP 페이지는 자신들의 Context Root 하위 경로에서 제공된다.
- 첫 번째 애플리케이션의 서블릿: http://example.com/app1/servlet1
- 두 번째 애플리케이션의 JSP 페이지: http://example.com/app2/page.jsp
이 경우 Context Root는 각각의 애플리케이션을 식별하는 역할을 한다. Tomcat은 각 Context Root에 따라 요청을 해당 애플리케이션으로 라우팅한다. 이러한 방식은 프로젝트 간 URL 경로의 혼동을 방지하고, 관리 및 유지보수를 용이하게 한다.
| 상황 | Context Root | 접근 URL | 설명 |
|---|---|---|---|
| 하나의 프로젝트를 올리는 경우 | / (별도로 지정 가능) | http://example.com/ | 애플리케이션이 서버의 최상위 경로에서 동작. Context Root는 기본적으로 /로 설정되며, 필요에 따라 다른 경로로 변경 가능 |
| 여러 프로젝트를 올리는 경우 | 각 프로젝트별로 지정됨 | http://example.com/app1 또는 http://example.com/app2 | 각 프로젝트가 서로 다른 Context Root를 가짐. 각각 고유의 경로로 접근 가능 |
결론적으로, 하나의 프로젝트를 올리는 경우에는 Context Root가 /로 설정되어 전체 서버가 그 애플리케이션의 리소스를 제공하지만, 여러 개의 프로젝트를 올리는 경우에는 각 프로젝트마다 다른 Context Root를 지정해 프로젝트 간 URL 경로를 분리한다.
Maven은 프로젝트 구조에서 소스 코드와 웹 리소스를 명확하게 구분하기 위해 표준 디렉터리 구조를 제공한다. 이를 통해 웹 애플리케이션 파일과 Java 소스 파일을 효과적으로 분리하여 관리할 수 있도록 도와준다.

src/main/java 폴더src/main/webapp 폴더WEB-INF 폴더가 있으며, 이 폴더는 웹 애플리케이션의 보안 영역으로 외부에서 직접 접근할 수 없는 리소스들이 저장된다.WEB-INF 폴더에 있는 리소스는 클라이언트가 직접 접근할 수 없으며, 서버 측에서만 접근 가능하다는 점에서 보안이 강화된다.Maven의 표준 디렉터리 구조를 사용함으로써, 소스 코드와 웹 리소스를 명확하게 구분할 수 있다.
이를 통해 애플리케이션의 유지 보수성과 확장성을 높일 수 있으며, 팀원 간의 협업에도 도움이 된다. 이러한 구조적 접근은 복잡한 웹 애플리케이션 개발 시 매우 중요한 요소로 작용한다.