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-INF
WEB-INF
WEB-INF
getResource
getResourceAsStream
ServletContext
RequestDispatcher
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-INF
klasö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-INF
açı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/classes
Ve WEB-INF/lib
Wikipedia'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/classes
Klasö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/java
ve src/main/resources
) içerecektir.
Başka bir örnek : WEB-INF/lib
Klasö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/lib
klasöre kopyalar . Bu, lib
bir maven projesinde neden bir klasörünüz olmadığını açıklar .