Tomcat의 Context Root와 Maven 디렉터리 구조

홍나연·2024년 10월 12일

Backend

목록 보기
4/8
post-thumbnail

(1) Tomcat의 Context Root

Tomcat 서버에 하나의 프로젝트를 올리는 경우와 여러 개의 프로젝트를 올리는 경우, Context Root의 의미와 역할은 조금 다르게 나타난다. 두 상황을 비교해보자 !

1. 하나의 프로젝트를 Tomcat에 올리는 경우

  • Context Root: / (루트 경로)
  • 이 경우 Tomcat 서버에 하나의 웹 애플리케이션만 배포되므로 그 애플리케이션이 기본 경로에 배치된다. 즉, 사용자가 서버의 기본 URL을 입력하면 그 애플리케이션에 바로 접속할 수 있다.
    • ex) 서버 주소가 http://example.com이라면, 해당 URL로 접근하면 바로 배포된 애플리케이션의 첫 페이지가 보인다.
    • http://example.com/servlet1이나 http://example.com/page.jsp처럼 모든 리소스가 서버의 최상위 경로 아래에서 제공된다.

⇒ Context Root는 기본적으로 /로 설정되며, 필요에 따라 개발자가 다른 경로로 명시적으로 설정할 수도 있다.

2. 여러 개의 프로젝트를 Tomcat에 올리는 경우

  • Context Root: 각 프로젝트마다 고유한 경로
  • 여러 애플리케이션을 하나의 Tomcat 서버에 배포하는 경우, 각 애플리케이션은 서로 다른 Context Root를 갖게 되어 고유의 경로에서 접근할 수 있다.
    • ex) 두 개의 프로젝트가 각각 app1app2라는 이름으로 배포되었다고 가정하자.

      • 첫 번째 애플리케이션: http://example.com/app1
      • 두 번째 애플리케이션: http://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 경로를 분리한다.


(2) Maven 디렉터리 구조

Maven은 프로젝트 구조에서 소스 코드웹 리소스를 명확하게 구분하기 위해 표준 디렉터리 구조를 제공한다. 이를 통해 웹 애플리케이션 파일Java 소스 파일을 효과적으로 분리하여 관리할 수 있도록 도와준다.

1. src/main/java 폴더

  • Java 소스 코드가 위치하는 디렉터리이다.
  • 이곳에 들어가는 파일들은 실제 애플리케이션의 비즈니스 로직, 서블릿 클래스, 데이터 처리 클래스 등 순수 Java 코드로 구성된다.
  • 이를 통해 코드의 재사용성과 유지 보수성을 높일 수 있으며, 구조적으로 잘 조직된 프로젝트를 만들 수 있다.

2. src/main/webapp 폴더

  • 웹 애플리케이션에서 제공하는 웹 리소스들이 위치하는 디렉터리이다.
    • HTML, JSP, CSS, JavaScript, 이미지 파일 등 다양한 웹 리소스가 포함된다.
  • 이 디렉터리 하위에는 WEB-INF 폴더가 있으며, 이 폴더는 웹 애플리케이션의 보안 영역으로 외부에서 직접 접근할 수 없는 리소스들이 저장된다.
    • 주로 서블릿 설정, 배포 설명 파일(web.xml), JSP 파일 등이 포함된다.
    • WEB-INF 폴더에 있는 리소스는 클라이언트가 직접 접근할 수 없으며, 서버 측에서만 접근 가능하다는 점에서 보안이 강화된다.

요약

Maven의 표준 디렉터리 구조를 사용함으로써, 소스 코드와 웹 리소스를 명확하게 구분할 수 있다.
이를 통해 애플리케이션의 유지 보수성과 확장성을 높일 수 있으며, 팀원 간의 협업에도 도움이 된다. 이러한 구조적 접근은 복잡한 웹 애플리케이션 개발 시 매우 중요한 요소로 작용한다.

0개의 댓글