2013-10-29 469 views
0

我在推進jee編程。如果我想在擴展HttpServlet的類中讀取我的應用程序目錄,請使用getServletContext()。getRealPath(relativePath)。但在我的情況下,我使用澤西進行序列化的目的。 Servlet不能擴展HttpServlet,請看圖像enter image description here。我主要是前面的程序員,所以也許這是一個愚蠢的問題,但我想要簡單的靜態/ util方法來解決在我的webapp中不同的靜態資源。我在Tomcat上運行它。一個和唯一的servlet在圖像上。訪問澤西島的ServletContext

回答

0

webApp/WEB-INF/classes目錄的絕對路徑可以如下訪問:

URL resource = getClass().getResource("/"); 
String path = resource.getPath(); 

這將返回一個像這樣的絕對路徑:

/C:/SERVERS/x/y/x/yourApp/WEB-INF/classes 

而從這個你可以得到的路徑webapp的目錄:

path = path.replace("WEB-INF/classes/", ""); 

現在,如果你的靜態資源是直銷TLY webapp下,您可以訪問的資源與此:

path = path + "resource_name"; 
+0

看起來簡單,正確的。我會在稍後嘗試。現在我發現我的資源必須在webapp direcoty之外。 – RobertW

2

按規範(JAX-RS 1.1,CH。 6.1),在資源類補充一點:

@Context 
private ServletContext application; 

完全quallified名稱:

import javax.servlet.ServletContext; 
import javax.ws.rs.core.Context; 
+0

上下文綁定由容器管理,所以如果我嘗試使用它,servlet構造函數或靜態方法上下文爲null。 – RobertW