我正在使用struts 2.0。我正在設計一個Web應用程序。 我在我的應用程序中使用Jasper Report。我想訪問我的操作類中的*.jrxml
文件。我不想給這些文件提供硬編碼的路徑。所以爲了動態獲取路徑,我使用了搜索方法,並得到了使用getRealPath()
方法獲得路徑的解決方案。但是,我發現了兩個實施這樣做的:實現getRealPath()的最佳方法
使用
HttpSession
得到的ServletContext
對象並使用ServletContext
對象的getRealPath()
方法。 像這樣:HttpSession session = request.getSession(); String realPath = session.getServletContext().getRealPath("/");
第二個辦法做到這一點直接使用靜態方法
ServletActionContext
getServletContext()
。然後我們可以使用getRealPath()
方法獲得應用程序的真實路徑。 像這樣:String realPath = ServletActionContext.getServletContext().getRealPath("/");
請告訴我,有沒有上面的兩個,也請告訴我是否有任何其他方式來獲取路徑之間有什麼區別?
相關:http://stackoverflow.com/questions/12160639/what-does-mean-in-the-function-servletcontext-getrealpath和http://stackoverflow.com/questions/14843615/servlet-failing-to -write-uploaded-image-to-disk – BalusC
你爲什麼不把你的文件放入webapp? –
@AleksandrM這些文件在我的web應用程序中。但是我們有三個地方部署我們的應用程序。 localhost開發和測試應用程序,然後演示我們公司的服務器和現場服務器。如果我給出'/ WebContent/reports /'位置的硬編碼路徑,那麼每次將它部署到服務器時都必須更改它。而且我想要一種方式,所以我不需要每次都改變它。 – Vicky