티스토리 뷰

728x90
반응형

 

쇼핑몰이나 구인구직 사이트 등은 모두 웹 브라우저를 기반으로 하는 웹 애플리케이션이다.

웹 애플리케이션은 정해진 형식이 있기 때문에 서비스를 제공할 때도 이 형식에 맞게 제작해야 한다.

오늘은 이러한 부분에 대해 알아보자.

 


 

웹 애플리케이션이란?

 

말 그대로 기존의 정적인 웹 애플리케이션의 기능을 그대로 사용하면서 서블릿(Servlet), JSP, 자바 클래스 등을 추가하여 사용자에게 동적인 서비스를 제공하는 프로그램이다.

따라서 정적 웹의 기능인 HTML, CSS, 자바스크립트 등도 그대로 사용할 수 있다는 것이다. 

 

그렇다면 톰캣과 같은 웹 컨테이너에서 실행하는 웹 애플리케이션의 기본 디렉터리 구조는 어떻게 되어 있을까?.?

일반적으로 컨테이너에서 실행되는 모든 웹 애플리케이션은 웹 애플리케이션 이름으로 이루어진 루트 디렉터리와 하위 디렉터리 구조를 기본 구조로 가진다.

 

 

웹 애플리케이션 기본 디렉터리 구조

 

 

이러한 구조를 갖추기 않고 컨테이너에서 웹 애플리케이션을 실행하면 오류가 발생한다.

기본 구조 외에 다른 기능이 추가되면 디렉터리(폴더)를 추가해서 사용하면 된다.

 

그럼 이 웹 애플리케이션을 이루는 구성 요소들의 자세한 기능을 알아보자.

 

  • 웹 애플리케이션 루트 디렉터리 : 다른 웹 애플리케이션 이름과 중복을 허용하지 않으며, 여기에는 JSP HTML 파일이 저장된다.
  • WEB-INF : 웹 애플리케이션에 관한 정보가 저장되는 곳이다. 이 디렉터리는 외부에서 접근할 수 없다.
  • classes : 웹 애플리케이션이 수행하는 서블릿과 다른 일반 클래스들이 위치하는 곳이다.
  • lib : 웹 애플리케이션에서 사용되는 여러가지 라이브러리 압축 파일(.jar) 이 저장되는 곳이다. DB 연동 드라이버나 프레임워크 기능 관련 jar 파일이 여기에 저장된다. lib 디렉터리의 jar는 클래스패스가 자동으로 설정된다.
  • web.xml : 배치 지시자(deployment descriptor)로서 일종의 환경설정 파일이다. 웹 애플리케이션에 대한 여러가지 설정을 할 때 사용된다.

 

 

WEB-INF 아래에 여러가지 하위 디렉터리를 생성하여 구성요소들을 추가할 수 있다.

bin, conf, src 등이 이에 해당한다.

 

웹 애플리케이션에 추가적으로 생성할 수 있는 구성요소의 기능은 다음과 같다

 

  • jsp/html : JSP파일과 HTML파일이 저장된 곳이다.
  • css : 스타일시트 파일이 저장된 곳이다.
  • image : 웹 애플리케이션에서 사용되는 이미지가 저장된 곳이다.
  • js : 자바스크립트 파일이 저장된 곳이다.
  • bin : 애플리케이션에서 사용되는 각종 실행파일들이 저장된 곳이다.
  • conf : 프레임워크에서 사용하는 각종 설정파일이 저장된 곳이다.
  • src : 자바 소스파일이 저장된 곳이다.

 


 

이클립스나 VSCode 처럼 내장 톰캣을 가지고 있는 것이 아닌 그냥 폴더만 가지고 있다면 이를 실행시켜줄 방법이 필요하다.

웹 애플리케이션은 톰캣과 같은 웹 컨테이너에서 실행되는 구조이다.

그래서 폴더로 존재하는 웹 애플리케이션을 실행하려면 우선 톰캣에 등록을 해야 한다.

웹 애플리케이션을 톰캣에 등록하는 방법은 두가지 이다.

 

  • %CATALINA_HOME%webApp 디렉터리에 애플리케이션을 저장
  • server.xml 에 직접 웹 애플리케이션을 등록

 

 

기본적인 방법으로 shoppingMall 이라는 프로젝트를 만들었다고 가정해 보자.

이를 실행시키려면 webapps 폴더에 위치시켜 놓은 다음 톰켓을 실행하여 만든 프로젝트를 확인할 수 있다.

이는 개발이 완료되어 배포를 할 때 사용하면 편리한 방법이지만, 

아직 개발중인 항목이라면 수시로 프로젝트를 복사하여 업로드 하는 과정을 반복해야 해서 정말 번거롭다.

 

따라서 실제로 개발할 때는 개발자가 shoppingMall 프로젝트를 위치시킨 경로를 server.xml에 등록해 놓고 톰캣을 실행하는 식으로 개발해야 한다.

그러면 톰캣이 server.xml 에 입력된 정보에 따라 해당 위치로 이동하여 애플리케이션을 실행시키게 된다.

이때 server.xml에 등록하는 웹 애플리케이션을 컨텍스트(Context)라 부른다.

즉, 톰캣 입장에서 인식하는 한 개의 웹 애플리케이션이라고 보면 된다.

 

컨테이너 실행 시 웹 애플리케이션당 하나의 컨텍스트가 생성된다.

컨텍스트의 주요 특징은 다음과 같다.

 

  • 웹 애플리케이션당 하나의 컨텍스트가 등록된다.
  • 일반적으로 웹 애플리케이션 이름과 같지만 다를 수도 있다.
  • 컨텍스트 이름은 중복되면 안된다.
  • 웹 애플리케이션의 의미를 가장 잘 나타낼 수 있는 명사형으로 지정한다.
  • 대소문자를 구분한다.
  • server.xml에 등록한다.

 

server.xml에 등록할 때는 다음과 같이 작성한다.

참고로 Host 태그 안에 추가하면 된다.

 

<Context path="/shoppingMall"
            docBase="C:\\shoppingMall"
            reloadable="true" />

 

 


 

마지막으로 톰캣 컨테이너에서 웹 애플리케이션이 어떻게 동작하는지 알아보고 마무리 해보자.

 

톰캣 컨테이너에 웹 애플리케이션을 등록한 후 브라우저에서 요청할 경우 톰캣이 브라우저에 서비스 하는 과정이다.

실제로 다음과 같이 웹 브라우저에서 컨텍스트 이름으로 요청할 경우 동작 과정은 다음과 같다.

 

http://localhost:8080/shoppingMall/main.html

 

 

 

  1. 웹 브라우저에서 컨텍스트 이름(shoppingMall)으로 요청한다.
  2. 요청을 받은 톰캣 컨테이너는 요청한 컨텍스트 이름이 server.xml에 있는지 확인한다.
  3. 해당 컨텍스트 이름이 있으면 컨텍스트 이름에 대한 실제 웹 애플리케이션이 있는 경로로 가서 요청한 main.html을 클라이언트 웹 브라우저로 전송한다.
  4. 웹 브라우저는 전송된 main.html을 브라우저에 나타낸다.

 

이와 같은과정을 거치게 되고, server.xml에 등록되어 있지 않다면 404 에러가 뜰 것이다.

 

 

 

 

이상!

 

 

 


참고도서

 

  • 자바 웹을 다루는 기술(이병승 저)

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31