Servlet 2.4 spesifikasyonu diyor bu WEB-INF (sayfa 70) hakkında:
Adlı uygulama hiyerarşisinde özel bir dizin var
WEB-INF. Bu dizin, uygulamanın belge kökünde bulunmayan uygulama ile ilgili her şeyi içerir. Düğüm uygulamasının kamu belge ağacının bir parçası değildir . Dizinde bulunan hiçbir dosya, kapsayıcı tarafından doğrudan bir istemciye sunulamaz. Ancak, dizinin içeriği
,
ve yöntem çağrıları kullanılarak sunucu uygulaması koduna görünür ve çağrılar kullanılarak açığa çıkarılabilir .WEB-INFWEB-INFWEB-INFgetResourcegetResourceAsStreamServletContextRequestDispatcher
Bu WEB-INF, kaynakların Web Uygulamanızın kaynak yükleyicisi tarafından erişilebilir olduğu ve doğrudan herkes tarafından görülemediği anlamına gelir .
Bu nedenle birçok proje JSP dosyaları, JAR'lar / kütüphaneler ve kendi sınıf dosyaları veya özellik dosyaları veya diğer hassas bilgileri WEB-INFklasöre koyar . Aksi takdirde, bunlara basit bir statik URL (örneğin CSS veya Javascript yüklemek için yararlı) kullanılarak erişilebilir.
JSP dosyalarınız teknik açıdan bakıldığında her yerde olabilir. Örneğin, Bahar aylarında bunları WEB-INFaçık olarak yapılandırabilirsiniz :
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" >
</bean>
WEB-INF/classesVe WEB-INF/libWikipedia'nın belirtilen klasörler SAVAŞ dosyaları makale zamanında Servlet şartname gereği klasörlerin örnekleridir.
Bir projenin yapısı ile ortaya çıkan WAR dosyasının yapısı arasında fark yaratmak önemlidir.
Projenin yapısı bazı durumlarda WAR dosyasının yapısını kısmen yansıtacaktır (JSP dosyaları veya HTML ve JavaScript dosyaları gibi statik kaynaklar için, ancak bu her zaman böyle değildir.
Proje yapısından sonuçta ortaya çıkan WAR dosyasına geçiş bir derleme işlemi ile yapılır.
Genellikle kendi oluşturma sürecinizi tasarlamakta özgür olsanız da, günümüzde çoğu insan Apache Maven gibi standart bir yaklaşım kullanacaktır . Diğer şeylerin yanı sıra Maven, proje yapısındaki hangi kaynakların sonuçta ortaya çıkan eserde hangi kaynaklarla eşleştiğini varsayılan olarak tanımlar (sonuçta ortaya çıkan eser, bu durumda WAR dosyasıdır). Bazı durumlarda haritalama, düz bir kopyalama işleminden oluşur, diğer durumlarda haritalama işlemi, filtreleme veya derleme ve diğerleri gibi bir dönüşüm içerir.
Bir örnek : WEB-INF/classesKlasör daha sonra uygulamayı başlatmak için Classloader tarafından yüklenmesi gereken derlenmiş tüm java sınıflarını ve kaynaklarını ( src/main/javave src/main/resources) içerecektir.
Başka bir örnek : WEB-INF/libKlasör daha sonra uygulamanın ihtiyaç duyduğu tüm jar dosyalarını içerecektir. Bir maven projesinde bağımlılıklar sizin için yönetilir ve maven gerekli jar dosyalarını sizin için otomatik olarak WEB-INF/libklasöre kopyalar . Bu, libbir maven projesinde neden bir klasörünüz olmadığını açıklar .