2012-07-12 71 views
0

我有一個名爲msc的子目錄的webapp。我將一個xml文件保存在名爲_etc/xml的msc子目錄中。如何在我的webapp中指定文件路徑?

我的本地機器上的絕對路徑是c:/myproject/tomcat/webapps/javawork/msc/_etc/xml/msc_approval_managers.xml

我想在MSC目錄中的JSP文件才能夠做得到的XML文件,並通過解析搶文本的的HTML中使用jsp頁面。我明白,將java scriptlet代碼放在一個jsp文件中可能不是最好的編程實踐,但這就是我所要做的,所以請不要讓我感到悲傷。我無法控制那部分。最終我的代碼將被放到生產服務器上,所以我需要使用相對路徑來獲取xml文件。在ColdFusion的是非常簡單(我來翻譯一個CF網站的Java),並在三線做像這樣:

<!--- Set path to msc_approval_managers.xml ---> 
<cfset pathToXml = ExpandPath("/msc/_etc/xml/msc_approval_managers.xml")> 

<!--- Read xml file into string variable ---> 
<cffile action="read" file="#pathToXml#" variable="xmlDoc"> 

<!--- Parse xml into an xml object ---> 
<cfset XMLDoc = XmlParse(xmlDoc)> 

我可以再剛剛經歷XMLDoc循環。顯然在Java中並不那麼簡單。我有解析XML並通過它循環的代碼。我只需要找到一種使用相對路徑來獲取文件本身的方法,這樣代碼就可以上傳到生產服務器,並知道文件位於該服務器上的位置(沒有絕對路徑)。這可以在Java中完成,特別是在jsp頁面中?

任何意見,將不勝感激,請不要質疑爲什麼它必須在一個JSP頁面,這只是我必須與手頭的任務合作的要求。謝謝。

回答

2

這對jsp來說真的很奇怪......但是你可以得到真正的路徑,然後用你的代碼加載和解析文件。

<% 
String path = request.getServletContext().getRealPath("/msc/_etc/xml/msc_approval_managers.xml"); 
out.write(path); 
%> 

或獲得的輸入流:

<% 
java.io.InputStream stream = request.getServletContext().getResourceAsStream("/msc/_etc/xml/msc_approval_managers.xml"); 
if (stream != null) out.write("Got input stream ..."); 
%> 
+0

非常感謝。這完全是我在找的東西。 – kei23th 2012-07-12 19:21:01

相關問題