struktur fail perang

Setiap aplikasi web, apabila dimuat naik ke pelayan web, dibungkus ke dalam satu fail .war. WAR kini adalah singkatan dari Web Application Resources, walaupun dahulunya adalah Web ARchive. Sebenarnya, ini adalah arkib zip yang mengandungi aplikasi web berpakej.

Inilah rupa kandungan tipikal fail perang:

/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

Di dalam fail perang terdapat sumber web statik seperti fail .html, .css, .js dan sebagainya. Juga boleh terdapat gambar, video dan secara umum sebarang fail. Mereka boleh berada dalam akar atau dalam subfolder, tidak mengapa. Tomcat hanya akan melayani mereka jika mereka diminta.

Katakan aplikasi web anda dimuatkan pada pelayan web di bawah nama apple, kemudian apabila http://localhost/apple/images/logo.png diminta , Tomcat akan mengembalikan fail /images/logo.png .

Secara berasingan, perlu diperhatikan folder WEB-INF . Ia direka untuk menyimpan kod Java di dalamnya. Tomcat tidak akan memberikan kandungannya.

/WEB-INF/kelas/ direktori untuk kelas Java bukan JAR yang disusun, termasuk kelas servlet dan fail sumber yang diperlukan oleh pemuat sebelum menjalankan aplikasi
/WEB-INF/lib/ tempat menyimpan perpustakaan balang
/WEB-INF/web.xml deskriptor penempatan

struktur fail perang dan projek maven

Sekarang mari kita beralih kepada hierarki direktori projek Maven. Anda boleh melihat susun atur katalog penuh dalam manual rasmi. Di sini kita akan berkenalan dengannya dalam versi yang agak singkatan, tidak termasuk sumber ujian. Jadi, hierarki direktori Maven standard kelihatan seperti ini:

src/main/java kod sumber kelas aplikasi dan perpustakaan mengikut hierarki pakej yang diterima umum
src/utama/sumber fail sumber aplikasi: tetapan pangkalan data, fail penyetempatan, dsb.
src/main/webapp sumber aplikasi web (fail JSP, fail teks, skrip, dll.)

Seperti yang anda lihat, ia berbeza dengan ketara daripada struktur fail WAR yang anda tahu. Tetapi apa yang sebenarnya berlaku apabila menyusun aplikasi web hanyalah memindahkan dan menggabungkan fail ke dalam struktur yang ditakrifkan dalam spesifikasi Java EE.

Direktori src/main/webapp mentakrifkan akar konteks aplikasi web (apabila digunakan ke pelayan, akar konteks adalah sama dengan nama fail WAR) dan sudah mengandungi direktori WEB-INF di dalamnya. Iaitu, kandungan src/main/webapp dipindahkan sepenuhnya ke aplikasi web.

Semua kelas Java anda disusun ke dalam fail kelas dan, mengekalkan struktur pakejnya, dialihkan ke direktori /WEB-INF/classes/ . JAR pustaka yang disertakan, yang ditakrifkan dalam kebergantungan Maven pom.xml seperti yang kami takrifkan di atas, dialihkan ke direktori /WEB-INF/lib/ .

Sumber aplikasi src/main/resources dialihkan ke classpath aplikasi, khususnya ke direktori /WEB-INF/classes/ yang sama .

Untuk menjelaskannya sepenuhnya, lihat rajah ini, yang akan membantu anda memahami cara dan apa yang berlaku semasa membina projek:

peranti fail perang