War-fayl tuzilishi
Har bir web-ilova serverga joylashtirilganda, yagona war-faylga o'raladi. WAR hozirda Web Application Resources (Web Ilova Resurslari) deb o'qiladi, lekin avvalgi Web ARchive edi. Aslida bu zip-arxiv bo'lib, u o'ralgan web-ilovani saqlaydi.
War-faylning odatiy tarkibi qanday ko'rinishda:
/index.html /guestbook.jsp /images/logo.png /js/jquery.js
/WEB-INF/web.xml
/WEB-INF/classes/com/javarush/Util.class /WEB-INF/classes/com/javarush/MainServlet.class /WEB-INF/classes/application.properties /WEB-INF/lib/util.jar
/META-INF/MANIFEST.MF
War-fayl ichida statik web-resurslar, masalan .html, .css, .js fayllar va boshqalar bo'ladi. Shuningdek, rasm, video va umuman istalgan fayllar ham bo'lishi mumkin. Ular ildiz yoki kichik papkalarda bo'lishi mumkin, bu muhim emas. Tomcat ularga so'rov kelsa, ularni qaytaradi.
Faraz qilaylik, web-ilovangiz serverda apple nomi bilan yuklangan, keyin http://localhost/apple/images/logo.png so'rovi yuborilganda Tomcat /images/logo.png faylni qaytaradi.
WEB-INF papkasini alohida ta'kidlash kerak. U Java-kodni saqlash uchun mo'ljallangan. Tomcat tashqariga bu papka tarkibini chiqarmaydi.
| /WEB-INF/classes/ | JAR-arxivlarga kiritilmagan kompilyatsiyalangan Java-klasslar katalogi, shu jumladan servlet klasslari va ilovani bajarishdan oldin vositachi yuklovchiga kerak bo'ladigan resurs fayllari |
| /WEB-INF/lib/ | jar-kutubxonalar uchun saqlash joyi |
| /WEB-INF/web.xml | deploy descriptor (joylashtirish deskriptori) |
War-fayl tuzilishi va Maven-loyiha
Endi Maven loyiha kataloglarining ierarxiyasiga o'tamiz. Rasmiy qo'llanmada to'liq katalogni ko'rish mumkin. Biz bu yerda uni qisqartirilgan ko'rinishda, test resurslarini chiqarib tashlab, ko'rib chiqamiz. Demak, Maven kataloglari standart ierarxiyasi quyidagicha:
| src/main/java | ilova klasslarining va kutubxonalarining umumqabul qilingan paket ierarxiyasiga muvofiq manba kodlari |
| src/main/resources | ilova resurs fayllari: ma'lumotlar bazasi sozlamalari, lokalizatsiya fayllari va boshqalar |
| src/main/webapp | web-ilova resurslari (JSP fayllari, matn fayllari, skriptlar va boshqalar) |
Ko'rib turganingizdek, bu sizga ma'lum bo'lgan WAR-fayl tarkibidan ancha farq qiladi. Ammo aslida web-ilovani kompilyatsiya qilishda, Java EE spetsifikatsiyasida belgilangan tuzilma bo'yicha fayllarni oddiy o'zgartirish va birlashtirish amalga oshiriladi.
src/main/webapp katalogi web-ilovani ildiz konteksti aniqlaydi (serverga joylashtirilganda ildiz kontekst WAR fayl nomiga mos keladi) va allaqachon WEB-INF katalogini o'z ichiga oladi. Ya'ni, src/main/webapp tarkibi to'liq web-ilovaga ko'chiriladi.
Barcha Java klasslaring class-fayllarga kompilyatsiya qilinadi va paket strukturasi saqlanib /WEB-INF/classes/ katalogiga ko'chiriladi. Maven pom.xml faylida aniqlangan bog'liqlikdagi JAR-arxivlar, yuqorida belgilanganidek, /WEB-INF/lib/ katalogiga ko'chiriladi.
src/main/resources ilova resurslari ilovaning classpath qismiga, ya'ni aynan /WEB-INF/classes/ katalogiga ko'chiriladi.
Hammasi tushunarli bo'lishi uchun, bu sxemani ko'ring, bu loyiha yig'ilishida nima qayerga joylashtirilishini yaxshiroq tushunishga yordam beradi:

GO TO FULL VERSION