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