동적 웹 프로젝트 및 응용프로그램

웹 프로젝트 유형에는 동적 및 정적의 두 가지 유형이 있습니다. 동적 웹 프로젝트에는 정적 자원(예: 이미지 및 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 파일이 아닌 라이브러리 경로 항목을 제거하면 라이브러리 항목이 경로에 자동으로 다시 추가됩니다.
관련 개념
웹 자원
WAR(Web Archive) 파일
관련 태스크
동적 웹 프로젝트 작성
JSP(JavaServer Page) 파일 작성