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 getResource
yö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ı, context
alan olarak kullanılabilir hale getirir . Bir sunucu uygulamasında, onu ServletConfig
sunucu 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.