2017-04-06 103 views
-1

這是我第二次提出這個問題 - 這次我會提供一些更多的細節來幫助獲得明智的答案。如何從servlet獲取JSP的服務器文件路徑?

我在這裏真正要做的是填充一個下拉菜單,其數據是從一個應該在頁面加載時運行的可執行文件中動態生成的。值得注意的是,可執行文件必須位於服務器上JSP本地的目錄中。我的公司有3到4個這個網站的克隆,我不能將可執行文件放在一些絕對的文件路徑中 - 它必須是相對的(因爲它將與其他團隊一起被JSP頁面一起發送到其他處理器)。

我知道JSP必須與相對路徑運行的可執行文件,因爲我可以運行這個能力:

<form action="./my_executable_that_generates_a_dynamic_page"> 

不過,我需要這從一個servlet運行使用JavaScript來填充保管箱。

<%= new File("./exec_produce_dropdown_list").getPath() %> 

上面的代碼片段給了我一個不同的目錄。

我也試過:

<%= new File(new File(request.getServletContext().getRealPath(request.getRequestURI())).getParent().replace('\\', '/'), "exec_produce_dropdown_list"); %> 

這是非常接近,除非有一個在URI不對應於文件系統(這是我們所擁有的)虛擬路徑,它贏得了」 t指向正確的目錄。

有沒有一種簡單的方法讓我運行可執行文件? 我也想補充說,沒有web.xml供我使用。

+0

什麼是正確的目錄?文件位於何處?如果它在您的Web應用程序的根目錄中,請嘗試使用<%= application.getRealPath(「/ exec_produce_dropdown_list」)%>作爲路徑。 – rickz

+0

真實路徑不對應。我發現我的解決方案,謝謝。 – TLane

回答

0

發現我的答案是:

request.getRealPath(request.getServletPath()) 

應該給我的/path/in/filesystem/to/file.jsp

+0

請求對象的方法已被棄用。您應該使用我發佈的應用程序對象。無論如何,我認爲你正在混合文件路徑和網址。我認爲你需要做的是獲得文件路徑,然後通過類似於http://stackoverflow.com/questions/5604698/java-programming-call-an-exe-from-java-和-passing參數 – rickz

相關問題