웹 프로젝트 유형에는 동적 및 정적의 두 가지 유형이 있습니다. 동적 웹 프로젝트에는 정적 자원(예: 이미지 및 HTML 파일) 외에
동적 자바 EE 자원(예: 서블릿, JSP 파일, 필터 및 연관된 메타데이터)이 포함될 수 있습니다. 정적 웹 프로젝트에는 정적 자원만 포함할 수 있습니다. 웹 프로젝트를 작성할 때, 더 풍부한 프로젝트 자원 세트를 사용하여 개발을
시작할 수 있도록 CSS 및 JSP 태그 라이브러리(동적 웹 프로젝트의 경우)를 포함시킬 수 있습니다.
동적 웹 프로젝트는 항상 엔터프라이즈 애플리케이션 프로젝트에 임베드됩니다. 동적 웹 프로젝트를 작성하기 위해 사용하는 마법사로
EAR(엔터프라이즈 애플리케이션) 프로젝트도 작성할 수 있습니다(아직 없을 경우). 마법사는 또한
지정된 엔터프라이즈 애플리케이션 프로젝트의 application.xml
배치 디스크립터를 업데이트하여 웹 프로젝트를 모듈 요소로 정의합니다. 동적 웹 프로젝트를 새로 작성하지 않고
WAR 파일을 가져올 경우, 이미 EAR 프로젝트를 요구하는 WAR 가져오기 마법사에서
사용자가 웹 프로젝트를 지정하도록 요구합니다.
자바 EE 규약은 동적 파일(예: JSP 파일 또는 서블릿)을
포함하지 않는 정적 컨텐츠 기반 웹 애플리케이션을 작성하려는 경우에만
추가 오버헤드를 표시할 수 있습니다. 이 경우 가장 기본적인 웹 프로젝트만 필요하면 정적 웹 프로젝트 유형을 사용할 수 있습니다(정적 웹 프로젝트 참조).
프로젝트 메뉴에서 동적
웹 프로젝트로 변환을 선택하여 정적 웹 프로젝트를 동적 웹 프로젝트로 변환할 수 있습니다.
자바 EE 모델, 즉 Sun Microsystems Java Servlet 2.3 Specification은
웹 컨텐츠 파일, 클래스 파일, 클래스 경로, 배치 디스크립터 및
지원하는 메타데이터의 위치를 지정하는 웹 애플리케이션 디렉토리 구조를
정의합니다. 웹 프로젝트 계층 구조는 프로젝트에서 작성된 웹 애플리케이션의 계층 구조를
이중으로 복사합니다. 워크벤치에서 새 웹 프로젝트 마법사를 사용하여
새 웹 프로젝트를 작성할 수 있습니다.
기본 프로젝트 폴더에는 웹 애플리케이션에 관련되는
모든 개발 오브젝트가 포함됩니다. 웹 컨텐츠 폴더에는 웹 애플리케이션을 작성하는 데 필요한
프로젝트의 요소가 있습니다. 이 폴더 구조는 Sun Microsystems에서 정의한
웹 애플리케이션 아카이브(WAR) 구조에 맵핑합니다. 다음의 기본 요소는
웹 프로젝트 폴더 계층 구조에 있습니다.
주: 프로젝트 탐색기 보기에서,
웹 프로젝트는 개발 중 쉬운 관리를 위해 웹 자원 표시를 사용자 정의하기 위해 폴드 노드별로 필터됩니다. 필터링된 구조에 대한 자세한 정보는
프로젝트 탐색기 보기를 참조하십시오.
- 웹 배치 디스크립터
- 표준 웹 애플리케이션 배치 디스크립터(web.xml 파일)입니다.
- JavaSource
- 클래스, 빈 및 서블릿에 대한 프로젝트의 Java™ 소스 코드를 포함합니다. 해당 자원이 웹 프로젝트에 추가되면 자동으로 컴파일되고 생성된 파일은 WEB-INF/classes 디렉토리에 추가됩니다.
WAR 파일이 작성될 때 옵션을 지정하지 않으면 소스 디렉토리의 컨텐츠는
WAR 파일에서 패키지로 묶이지 않습니다.
주: 폴더에 지정된 기본 이름은 JavaSources이지만 프로젝트 탐색기에서 이름을 마우스 오른쪽 단추로 클릭하고 를 클릭하여 이름을 변경할 수 있습니다.
- imported_classes 폴더
- 이 폴더는 WAR 가져오기 중에 작성될 수 있는,
소스를 동반하지 않는 클래스 파일을 포함하는 폴더입니다. imported_classes 폴더는 자바 클래스
폴더입니다. 자바 클래스 폴더는 웹 프로젝트 자바 빌드 경로
특성 페이지를 사용하여 작성될 수도 있습니다.
- WebContent 폴더
- 모든 웹 자원의 필수 위치(HTML, JSP, 그림 파일 등)입니다. 파일이 이 디렉토리(또는 이 디렉토리의 서브디렉토리 구조)에 없는 경우 애플리케이션이 서버에서 실행될 때 파일을 사용할 수 없습니다.
웹 컨텐츠 폴더는 서버에 배치할 WAR 파일의 컨텐츠를 표시합니다. 웹 컨텐츠 폴더 아래에 없는
파일은 개발 시 자원(예: .java 파일, .sql 파일 및 .mif 파일)으로 간주되어
프로젝트를 유닛 테스트하거나 공개할 때 배치되지 않습니다.
주: 폴더에 지정된 기본 이름은 WebContent이지만 프로젝트 탐색기에서 폴더를 마우스 오른쪽 단추로 클릭하고 리팩터 이름 바꾸기를 선택하거나 프로젝트 특성 대화 상자의 웹 페이지에서 이름을 변경할 수 있습니다.
동적 웹 프로젝트에서 폴더 이름을 변경하면 자바 빌드 출력 디렉토리가
업데이트됩니다.
- META-INF
- 이 디렉토리에는 MANIFEST.MF 파일이 포함되는데, 이 파일은
동일한 엔터프라이즈 애플리케이션 프로젝트의 다른 프로젝트에 존재하는
종속 JAR 파일에 대한 클래스 경로를 맵핑하는 데 사용됩니다. 이 파일에 있는
항목은 참조된 JAR 파일을 포함시키기 위해 런타임 프로젝트 클래스 경로 및
자바 빌드 설정을 업데이트합니다.
- 테마
- CSS 및 기타 스타일 관련 오브젝트용 디렉토리입니다.
- WEB-INF
- Sun Microsystems Java Servlet 2.3 Specification에 따라,
이 디렉토리에는 웹 애플리케이션에 대해 지원되는 웹 자원(web.xml 파일 및
클래스 등)과 lib 디렉토리가 포함됩니다.
- /classes
- 이 디렉토리는 서블릿, 유틸리티 클래스 및 자바 컴파일러
출력 디렉토리용 디렉토리입니다. 이 디렉토리의 클래스는 애플리케이션 클래스 로더가
클래스를 로드하기 위해 사용됩니다. 이 디렉토리의 폴더는
/WEB-INF/classes/com/mycorp/servlets/MyServlet.class처럼 패키지 및 클래스 이름을 맵핑합니다.
.class
파일을 이 디렉토리에 직접 배치하지 마십시오. .class 파일은
자바 컴파일러가 자바 자원 디렉토리에 위치한 자바 소스 파일을 컴파일할 때
자동으로 이 디렉토리에 배치됩니다. 이 디렉토리에 직접 배치한 파일은 자바 컴파일러가 실행될 때 이 컴파일러에 의해 삭제됩니다.
- /lib
- 웹 애플리케이션이 참조하는 지원되는 JAR 파일입니다. 이 디렉토리에 위치한
.jar 파일의 클래스는 웹 애플리케이션에 사용할 수 있습니다.
- 라이브러리
- 웹 애플리케이션이 참조하는 지원되는 JAR 파일입니다. 이 폴더는
lib 폴더의 컨텐츠를 이중으로 복사합니다. 또한 실제로 웹 프로젝트에 상주하지 않지만 작업공간의 다른 위치에서 자바 프로젝트와 연관되는 "가상" JAR 파일인 웹 라이브러리 프로젝트는 이 폴더에 포함됩니다. 애플리케이션의 WAR 파일을 내보낼 때
사용자 프로젝트와 함께 패키지로 묶입니다.
주: WEB-INF/lib 폴더에서 실제 JAR 파일을
삭제하지 않는 한 자바 빌드 경로의 라이브러리 항목은
그대로 남아 있습니다. JAR
파일이 아닌 라이브러리 경로 항목을 제거하면 라이브러리 항목이 경로에
자동으로 다시 추가됩니다.