웹 애플리케이션
웹 서버에 서블릿이 어떤 구조로 있어야하고, 클라이언트가 서블릿에 접근하는 방법을 알아보자
웹 애플리케이션 접근
- 서블릿은 웹 서버에서 서비스되는 페이지이다.
따라서 서블릿을 개발하였으면 해당 서블릿 실행 파일을 웹서버에 올려두어야한다. - 클라이언트는 웹 서버에 서비스를 요청할 때 URL 정보를 보낸다.
URL 정보는 다음과 같은 용도로 사용한다
웹 애플리케이션 위치
- 서비스는 서버에서 애플리케이션 단위로 이루어진다.
- 웹 서버 마다 시작될 때 자동으로 애플리케이션으로 인식하여 서비스를 올리는 디렉터리가 있다.
- 톰캣(Tomcat)은 설치한 디렉터리 하위의 webapps 디렉터리에 애플리케이션들이 있다
webapps 디렉터리에 있는 하위 디렉터리 또는 디렉터리가 압축된 war 파일은 하나의 애플리케이션으로 인식한다.
(WAS의 종류에 따라 애플리케이션이 위차하는 디레거리 이름이 다를 수 있다.)
톰켓 설치 후 webapps 디랙터리의 모습이다.
webapps에는 톸맥에서 예제로 제공하는 5개의 애플리케이션 디렉터리가 있고,
현재 톰캣 서버는 5개의 애플리케이션을 서비스하고 있다.
- 이클립스에서 애플리케이션 위치
- 정확하게는 이클립스에서 만든 웹 프로젝트 디렉터리 이며, 각자 지정한 workspace 디렉터리 하위에 있다.
'ncs09_web_work-1' workspace 하위에 위치한 웹프로젝트들.
'ncs09_web_work-1'는 workspace 안에 만든 웹 프로젝트 이름이고, 실제 애플리케이션의 루트 디렉터리는 'WebContent' 이다. 이 디렉터리가 톰캣의 webapps의 하위 디렉터리에 해당한다.
웹 애플리케이션 구조
- 웹 애플리케이션은 하나의 디렉터리이다.
이 데렉터리 안에 서비스 하려는 문서를 만들어 놓으면 웹에서 서비스 되는 것이다. - 반드시 모든 웹 애플리케이션이 공통으로 가져야하는 디렉터리와 파일이 있다.
- 웹 애플리케이션 루트 디렉터리 바로 하위에 WEB-INF 디렉터리
- WEB-INF 디렉터리에는 web.xml 파일이 있어야한다.
- 현재 웹 애플리케이션에서 서비스하려는 클래스 파일이 있다면 WEB-INF/classes 디렉터리 안에 있어야한다.
(WAS를 구성하는 애플리케이션 서버들이 자동으로 인식 할 수 있도록하기 위해) - 클래스 파일들이 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 폴더가 있는 것을 확인할 수 있다.
'Servlet&JSP' 카테고리의 다른 글
응답정보 처리 HttpServletResponse / 요청 정보 처리HttpServletRequest (0) | 2020.01.06 |
---|---|
서블릿(Servlet) 구현 / 실행 (0) | 2020.01.06 |
JAVA와 Web (0) | 2020.01.02 |
서비스 중인 서버 확인 / 서버 주소 분석 (0) | 2020.01.02 |
이클립스에서 HTML 문서작성 편하게 하기 (0) | 2020.01.02 |