본문으로 바로가기

웹 애플리케이션


웹 서버에 서블릿이 어떤 구조로 있어야하고, 클라이언트가 서블릿에 접근하는 방법을 알아보자

 

웹 애플리케이션 접근

  • 서블릿은 웹 서버에서 서비스되는 페이지이다.
    따라서 서블릿을 개발하였으면 해당 서블릿 실행 파일을 웹서버에 올려두어야한다.
  • 클라이언트는 웹 서버에 서비스를 요청할 때 URL 정보를 보낸다.
    URL 정보는 다음과 같은 용도로 사용한다

 

 

 

웹 애플리케이션 위치

  • 서비스는 서버에서 애플리케이션 단위로 이루어진다.
  • 웹 서버 마다 시작될 때 자동으로 애플리케이션으로 인식하여 서비스를 올리는 디렉터리가 있다.

 

  • 톰캣(Tomcat)은 설치한 디렉터리 하위의 webapps 디렉터리에 애플리케이션들이 있다
    webapps 디렉터리에 있는 하위 디렉터리 또는 디렉터리가 압축된 war 파일은 하나의 애플리케이션으로 인식한다.
    (WAS의 종류에 따라 애플리케이션이 위차하는 디레거리 이름이 다를 수 있다.)

톰켓 설치 후 webapps 디랙터리의 모습이다.

webapps에는 톸맥에서 예제로 제공하는 5개의 애플리케이션 디렉터리가 있고,

현재 톰캣 서버는 5개의 애플리케이션을 서비스하고 있다.

 

  • 이클립스에서 애플리케이션 위치 
  • 정확하게는 이클립스에서 만든 웹 프로젝트 디렉터리 이며, 각자 지정한 workspace 디렉터리 하위에 있다.

'ncs09_web_work-1' workspace 하위에 위치한 웹프로젝트들.

'ncs09_web_work-1'는 workspace 안에 만든 웹 프로젝트 이름이고, 실제 애플리케이션의 루트 디렉터리는 'WebContent' 이다. 이 디렉터리가 톰캣의 webapps의 하위 디렉터리에 해당한다.

 

 

웹 애플리케이션 구조

  • 웹 애플리케이션은 하나의 디렉터리이다.
    이 데렉터리 안에 서비스 하려는 문서를 만들어 놓으면 웹에서 서비스 되는 것이다.
  • 반드시 모든 웹 애플리케이션이 공통으로 가져야하는 디렉터리와 파일이 있다.
    1. 웹 애플리케이션 루트 디렉터리 바로 하위에 WEB-INF 디렉터리
    2. WEB-INF 디렉터리에는 web.xml 파일이 있어야한다.
    3.  현재 웹 애플리케이션에서 서비스하려는 클래스 파일이 있다면 WEB-INF/classes 디렉터리 안에 있어야한다.
      (WAS를 구성하는 애플리케이션 서버들이 자동으로 인식 할 수 있도록하기 위해)
    4. 클래스 파일들이 jar로 압축되어 있다면 WEB-INF/lib 디렉터리에 있어야한다.
      (WAS를 구성하는 애플리케이션 서버들이 자동으로 인식 할 수 있도록하기 위해)
  • 그 외의 파일 들은 루트 디렉터리 하위의 어느 곳에 있어도 상관 없음.

 

 

 

환경설정 파일 : web.xml

  • 웹 애플리케이션 서비스 시작시 web.xml 파일을 읽는다.
  • web.xml 은 웹 애플리케이션의 서비스 처리에 관한 내용이 정의된 환경설정 파일이다.
  • 웹서버는 web.xml에 정의된 내용대로 웹 애플리케이션을 실행하기 위한 설정을 수행한다.
  • web.xml 파일에 정의한 내용이 논리적, 문법적으로 잘 못되었다면 웹애플리케이션 안에 있는 모든 파일은서비스 되지 않는다.

 

 

서블릿 디렉터리 

  • 서블릿 디렉터리 : 서블릿이 공식적으로 존재하는 디렉터리(서블릿 컨테이너를 내장한) 모든 WAS의 구조가 같다.
  • 서블릿 프로그램 실행에 관련된 클래스 파일들은 이 디렉터리에 있어야만 서블릿 컨테이너가 인식하여 실행한다.
  • 서블릿 디렉터리는 웹 애플리케이션의 루트 디렉터리 하위의 WEB-INF/classes 이다.
    (자바는 대소문자를 구분하므로 주의해야함)

 

이클립스에서 서블릿을 개발할 때는 소스 폴더에 자바 소스를 작성하면 자동으로 컴파일되어 클래스 파일이 생성된다.

 

이때 클래스 파일의 위치를 서블릿 디레터리인 WEB-INF/classes로 지정하려면 프로젝트에서 다음과 같이 한번만 설정해주면된다.

 

1. 프로젝트 탐색창에서 프로젝트이름을 [마우스 오른쪽 버튼 클릭 - Build Path - Configure Bulid Path]

2. java build path 설정 화면에서 [source]탭 선택 후 [browse] 클릭

3. [webcontent-WEB-INF]선택한 뒤 [Create new folder]선택한다.

folder name에 "classes"로 입력후 ok 
(대소문자 주의!)

4. 자바 소스의 컴파일 후 출력위치(default output folde)가 "...WEB-INF/classes"로 지정된 것 확인

 

* 이클립스 탐색창에서 classes 폴더가 사라지는 것은 클래스 파일을 직접 편집할 일이 없기 때문이다.
윈도우 탐색기에서 workspace로 지정한 폴더에 해당 웹 애플리케이션의 하위 폴더에 classes 폴더가 있는 것을 확인할 수 있다.