전쟁 파일 구조

각 웹 응용 프로그램은 웹 서버에 업로드될 때 단일 .war 파일로 패키징됩니다. WAR은 Web ARchive였지만 이제 Web Application Resources의 약자입니다. 실제로 이것은 패키지된 웹 애플리케이션을 포함하는 zip 아카이브입니다.

war 파일의 일반적인 내용은 다음과 같습니다.

/index.html
/guestbook.jsp
/images/logo.png
/js/jquery.js
/WEB-INF/web.xml
/WEB-INF/classes/com/codegym/Util.class
/WEB-INF/classes/com/codegym/MainServlet.class
/WEB-INF/classes/application.properties
/WEB-INF/lib/util.jar
/META-INF/MANIFEST.MF

war 파일 내부에는 .html, .css, .js 파일 등과 같은 정적 웹 리소스가 있습니다. 또한 사진, 비디오 및 일반적으로 모든 파일이 있을 수 있습니다. 그들은 루트 또는 하위 폴더에 있을 수 있으며 중요하지 않습니다. Tomcat은 요청이 있는 경우 간단히 제공합니다.

웹 애플리케이션이 웹 서버에 apple이라는 이름으로 로드되었다고 가정하고 http://localhost/apple/images/logo.png가 요청되면 Tomcat은 /images/logo.png 파일을 반환합니다 .

별도로 WEB-INF 폴더에 주목할 가치가 있습니다 . Java 코드를 저장하도록 설계되었습니다. Tomcat은 내용을 공개 하지 않습니다 .

/WEB-INF/클래스/ 애플리케이션을 실행하기 전에 로더가 필요로 하는 서블릿 클래스 및 리소스 파일을 포함하여 컴파일된 비 JAR Java 클래스용 디렉토리
/WEB-INF/lib/ jar 라이브러리를 저장할 장소
/WEB-INF/web.xml 배포 설명자

war 파일 구조 및 maven 프로젝트

이제 Maven 프로젝트의 디렉토리 계층 구조로 이동하겠습니다. 공식 매뉴얼에서 전체 카탈로그 레이아웃을 볼 수 있습니다. 여기서 우리는 테스트 리소스를 제외하고 다소 축약된 버전으로 이에 대해 알게 될 것입니다. 따라서 표준 Maven 디렉토리 계층 구조는 다음과 같습니다.

src/메인/자바 일반적으로 허용되는 패키지 계층 구조에 따른 애플리케이션 클래스 및 라이브러리의 소스 코드
src/메인/리소스 애플리케이션 리소스 파일: 데이터베이스 설정, 현지화 파일 등
src/메인/웹앱 웹 애플리케이션 리소스(JSP 파일, 텍스트 파일, 스크립트 등)

보시다시피, 여러분이 알고 있는 WAR 파일의 구조와 상당히 다릅니다. 그러나 웹 애플리케이션을 컴파일할 때 실제로 발생하는 일은 단순히 파일을 Java EE 사양에 정의된 구조로 이동하고 연결하는 것입니다.

src/main/webapp 디렉토리는 웹 애플리케이션의 컨텍스트 루트를 정의하고(서버에 배치될 때 컨텍스트 루트는 WAR 파일의 이름과 동일함) 이미 그 안에 WEB-INF 디렉토리를 포함하고 있습니다. 즉, src/main/webapp 의 내용이 웹 애플리케이션으로 완전히 전송됩니다.

모든 Java 클래스는 클래스 파일로 컴파일되고 패키지 구조를 유지하면서 /WEB-INF/classes/ 디렉토리로 이동됩니다 . 위에서 정의한 대로 Maven pom.xml 종속성에 정의된 포함된 라이브러리의 JAR은 /WEB-INF/lib/ 디렉토리로 이동됩니다 .

애플리케이션 자원 src/main/resources는 애플리케이션의 클래스 경로, 특히 동일한 /WEB-INF/classes/ 디렉토리로 이동됩니다 .

완전히 명확하게 하려면 프로젝트를 빌드할 때 어떻게 그리고 무엇이 어디로 가는지 이해하는 데 도움이 되는 이 다이어그램을 살펴보십시오.

전쟁 파일 장치