Bunu yapmanın birkaç yolu var. WAR dosyası genişletildiği sürece (bir .war dosyası yerine bir dizi dosya), bu API'yi kullanabilirsiniz:
ServletContext context = getContext();
String fullPath = context.getRealPath("/WEB-INF/test/foo.txt");
http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getRealPath(java.lang.String)
Bu, aradığınız kaynağa giden tam sistem yolunu size verecektir. Ancak, Servlet Container WAR dosyasını (Tomcat gibi) hiçbir zaman genişletmezse bu işe yaramaz. İşe yarayacak olan şey ServletContext'in getResourceyöntemlerini kullanmaktır.
ServletContext context = getContext();
URL resourceUrl = context.getResource("/WEB-INF/test/foo.txt");
veya alternatif olarak, yalnızca giriş akışını istiyorsanız:
InputStream resourceContent = context.getResourceAsStream("/WEB-INF/test/foo.txt");
http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getResource(java.lang.String)
İkinci yaklaşım, hangi Servlet Konteynırını kullanırsanız kullanın ve uygulamanın nereye kurulduğundan bağımsız olarak çalışacaktır. Önceki yaklaşım yalnızca, WAR dosyası konuşlandırılmadan önce sıkıştırılmışsa işe yarar.
DÜZENLEME:
getContext () yöntemi açıkça uygulamanız gereken bir şeydir. JSP sayfaları, contextalan olarak kullanılabilir hale getirir . Bir sunucu uygulamasında, onu ServletConfigsunucu uygulamasının init()yöntemine geçirilen sizden alırsınız . O anda saklarsanız, ServletContext'inizi bundan sonra istediğiniz zaman alabilirsiniz.