struktur file perang
Setiap aplikasi web, saat diunggah ke server web, dikemas ke dalam satu file .war. WAR sekarang adalah singkatan dari Web Application Resources, meskipun dulunya adalah Web ARchive. Sebenarnya, ini adalah arsip zip yang berisi paket aplikasi web.
Berikut adalah tampilan khas dari file 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 file perang terdapat sumber daya web statis seperti file .html, .css, .js, dan sebagainya. Juga bisa ada gambar, video, dan file apa pun secara umum. Mereka bisa di root atau di subfolder, tidak masalah. Tomcat hanya akan menyajikannya jika diminta.
Katakanlah aplikasi web Anda dimuat di server web dengan nama apple, lalu ketika http://localhost/apple/images/logo.png diminta , Tomcat akan mengembalikan file /images/logo.png .
Secara terpisah, perlu diperhatikan folder WEB-INF . Ini dirancang untuk menyimpan kode Java di dalamnya. Tomcat tidak akan memberikan isinya.
/WEB-INF/kelas/ | direktori untuk mengkompilasi kelas Java non-JAR, termasuk kelas servlet dan file sumber daya yang dibutuhkan oleh loader sebelum menjalankan aplikasi |
/WEB-INF/lib/ | tempat untuk menyimpan perpustakaan jar |
/WEB-INF/web.xml | deskriptor penerapan |
struktur file perang dan proyek maven
Sekarang mari beralih ke hierarki direktori proyek Maven. Anda dapat melihat tata letak katalog lengkap di manual resmi. Di sini kita akan mengenalnya dalam versi yang agak disingkat, tidak termasuk sumber daya pengujian. Jadi, hierarki direktori standar Maven terlihat seperti ini:
src/main/java | kode sumber kelas aplikasi dan perpustakaan sesuai dengan hierarki paket yang diterima secara umum |
src/main/sumber daya | file sumber daya aplikasi: pengaturan database, file lokalisasi, dll. |
src/main/webapp | sumber daya aplikasi web (file JSP, file teks, skrip, dll.) |
Seperti yang Anda lihat, ini sangat berbeda dari struktur file WAR yang Anda ketahui. Namun yang sebenarnya terjadi saat mengompilasi aplikasi web hanyalah memindahkan dan menggabungkan file ke dalam struktur yang ditentukan dalam spesifikasi Java EE.
Direktori src/main/webapp mendefinisikan root konteks aplikasi web (ketika diterapkan ke server, root konteks sama dengan nama file WAR) dan sudah berisi direktori WEB-INF di dalamnya. Artinya, konten src/main/webapp sepenuhnya ditransfer ke aplikasi web.
Semua kelas Java Anda dikompilasi ke dalam file kelas dan, mempertahankan struktur paketnya, dipindahkan ke direktori /WEB-INF/classes/ . JAR dari pustaka yang disertakan, yang didefinisikan dalam dependensi pom.xml Maven seperti yang kita definisikan di atas, dipindahkan ke direktori /WEB-INF/lib/ .
Sumber daya aplikasi src/main/resources dipindahkan ke classpath aplikasi, khususnya ke direktori /WEB-INF/classes/ yang sama .
Untuk memperjelasnya, lihat diagram ini, yang akan membantu Anda memahami bagaimana dan apa yang terjadi saat membangun proyek:
GO TO FULL VERSION