웹 애플리케이션은 정적인 웹 애플리케이션의 기능을 그대로 사용하면서 서블릿(Servlet : 자바로 만든 CGI 프로그램), JSP, 자바 클래스들을 추가하여 동적인 서비스를 제공하는 프로그램을 의미한다.
정적인 웹 애플리케이션은 기본적으로 웹을 구성하는 html, css, js로 구성된 것으로 내용을 바꾸기 위해서는 개발자가 계속해서 값을 바꿔줘야 한다.
하지만 동적 웹 애플리케이션은 서버와 연결해 자동으로 바뀌게 된다.
웹 애플리케이션의 기본 구조는 아래와 같다.
$ tree testWeb
testWeb
|-- build
| `-- classes
`-- src
`-- main
|-- java
`-- webapp
|-- META-INF
| `-- MANIFEST.MF
`-- WEB-INF
|-- lib
`-- web.xml
testWeb이라는 프로젝트(웹 애플리케이션)아래로 구조를 갖추고 있는 모습이다.
위 구조는 이클립스를 사용해 다이나믹 웹 프로젝트(Dynamic Web Project)를 만들면 자동으로 생성된다.
과거에는 이 디렉토리 구조를 직접 만들어야 했다고 하는데 좀 많이 귀찮을 것 같다.
웹 애플리케이션 구조를 구성하고 있는 요소들의 기능을 하나씩 확인해보자.
구성 요소 | 기능 |
---|---|
testWeb | 웹 애플리케이션의 루트 디렉터리로 프로젝트 이름이기도 하다. 중복은 불가능하다. |
classes | 웹 애플리케이션이 수행하는 서블릿과 일반 클래스들이 위치하는 곳, build 디렉터리 하부에 위치한다. |
java | 자바 소스 파일이 저장된 곳 |
WEB-INF | 웹 애플리케이션에 관현 정보가 저장되는 곳, 외부에서 접근할 수 없다. |
lib | 웹 애플리케이션에 사용되는 여러 가지 라이브러리 압축 파일(jar 파일)이 저장되는 곳, DB 연동 드라이버(JDBC)나 프레임워크 기능 관련 jar 파일이 lib에 저장된다. (lib 디렉터리의 jar 파일은 클래스패스가 자동으로 설정된다) |
web.xml | 배치 지시자(deployment descriptor)로서 웹 애플리케이션의 환경 설정 파일이다. 웹 애플리케이션에 대한 여러 가지 설정을 할 때 사용된다. |
추가할 수 있는 구성 요소들의 기능
구성 요소 | 기능 |
---|---|
jsp/html | jsp파일과 html파일이 저장되는 곳 |
css | 스타일시트 파일이 저장되는 곳 |
image | 웹 애플리케이션에서 사용되는 이미지가 저장되는 곳 |
js | 자바 스크립트 파일이 저장되는 곳 |
bin | 애플리케이션에서 사용되는 각종 실행 파일이 저장되는 곳 |
conf | 프레임워크에서 사용하는 각종 설정 파일이 저장된 곳 |
위 추가할 구성 요소들은 webapp
디렉터리 하부에 담기게 된다.