savaş dosyası yapısı

Her web uygulaması, web sunucusuna yüklendiğinde tek bir .war dosyası halinde paketlenir. WAR, eskiden Web Arşivi olmasına rağmen artık Web Uygulama Kaynakları anlamına gelmektedir. Aslında bu, paketlenmiş bir web uygulaması içeren bir zip arşividir.

Bir savaş dosyasının tipik içeriği şöyle görünür:

/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

Savaş dosyasının içinde .html, .css, .js dosyaları vb. statik web kaynakları bulunur. Ayrıca resimler, videolar ve genel olarak herhangi bir dosya olabilir. Kökte veya alt klasörlerde olabilirler, fark etmez. Tomcat, istenirse onlara hizmet edecektir.

Diyelim ki web uygulamanız web sunucusuna apple adıyla yüklendi, ardından http://localhost/apple/images/logo.png istendiğinde Tomcat /images/logo.png dosyasını döndürecek .

Ayrı olarak, WEB-INF klasörünü de belirtmekte fayda var . Java kodunu içinde depolamak için tasarlanmıştır. Tomcat içeriğini vermeyecektir .

/WEB-INF/sınıflar/ uygulamayı çalıştırmadan önce yükleyici tarafından ihtiyaç duyulan servlet sınıfları ve kaynak dosyaları dahil olmak üzere derlenmiş JAR olmayan Java sınıfları için dizin
/WEB-INF/lib/ kavanoz kitaplıklarını saklamak için yer
/WEB-INF/web.xml dağıtım tanımlayıcısı

savaş dosyası yapısı ve maven projesi

Şimdi Maven projesinin dizin hiyerarşisine geçelim. Tam katalog düzenini resmi kılavuzda görebilirsiniz. Burada, test kaynakları hariç, onu biraz kısaltılmış bir versiyonda tanıyacağız. Yani, standart Maven dizini hiyerarşisi şöyle görünür:

kaynak/ana/java Genel kabul görmüş paket hiyerarşisine göre uygulama sınıflarının ve kitaplıkların kaynak kodları
kaynak/ana/kaynaklar uygulama kaynak dosyaları: veritabanı ayarları, yerelleştirme dosyaları vb.
kaynak/ana/web uygulaması web uygulama kaynakları (JSP dosyaları, metin dosyaları, betikler, vb.)

Gördüğünüz gibi, bildiğiniz WAR dosyasının yapısından önemli ölçüde farklıdır. Ancak bir web uygulamasını derlerken gerçekte olan şey, dosyaları Java EE spesifikasyonunda tanımlanan yapıya taşımak ve birleştirmek.

src/main/webapp dizini , web uygulamasının bağlam kökünü tanımlar (bir sunucuya konuşlandırıldığında, bağlam kökü WAR dosyasının adı ile aynıdır) ve zaten içinde WEB-INF dizinini içerir. Yani src/main/webapp içeriği tamamen web uygulamasına aktarılır.

Tüm Java sınıflarınız sınıf dosyalarında derlenir ve paket yapıları korunarak /WEB-INF/classes/ dizinine taşınır . Yukarıda tanımladığımız gibi Maven pom.xml bağımlılıklarında tanımlanan dahil edilen kitaplıkların JAR'ları /WEB-INF/lib/ dizinine taşınır .

Uygulama kaynakları src/main/resources, uygulamanın sınıf yoluna, özellikle aynı /WEB-INF/classes/ dizinine taşınır .

Tamamen netleştirmek için, bir proje oluştururken nasıl ve neyin nereye gittiğini anlamanıza yardımcı olacak bu şemaya bakın:

savaş dosyası aygıtı