2014-04-10 31 views
0

在我的基於Web的應用程序(Tomcat7/JDK 7 - JSP 3.0)中,我構建了一個轉換程序來獲取csv文件,清理並保存文件。第二部分然後解析文件中的某些信息並創建第二個文件(以便它可以加載到另一個系統中進行驗證)。這每天都會發生。這些文件正在寫入$ {ECLIPSE_HOME}(因爲我在Eclipse中運行這個文件)。創建可下載的文件並存儲在Java的Web應用程序子目錄中

我想要做的是在應用程序的根目錄中創建一個文件夾(即[app-root]/toBeDLd},專門用於保存生成的文件並將其下載,使我的前端JSP能夠讀取並顯示文件(如可下載文件的列表,您可以單擊它在網絡瀏覽器中下載的鏈接),並在特定時間刪除該目錄中的所有文件。我不需要保留它們,或者備份它們。

從我看過的文檔中,Sending OutputStream to browser and let browser save it將是一個不錯的起點,但我也讀過一些關於SO的其他評論,這是違反servlet規範將文件保存在web應用程序目錄中的。我不確定這是否是由於它是Web應用程序的根源,或者不是。理想情況下,我希望將其完全包含在Web應用程序中。

這可能嗎?這是做這件事的最好方法嗎?

回答

0

不要把它放在Tomcats的任何地方webapps。這可能是一個非常糟糕的主意。

我的建議是你web.xml中添加一個dataDir初始化參數:

<servlet> 
    <servlet-name>MyServlet</servlet-name> 
    <servlet-class>com.example.MyServlet</servlet-class> 
    <init-param> 
     <param-name>dataDir</param-name> 
     <param-value>/var/data</param-value> 
    </init-param> 
</servlet> 

然後,您可以使用此參數你的servlet中:

getServletConfig().getInitParameter("dataDir"); 

如果你想讓它緊湊的Tomcat可能選擇$CatalinaBase/dataDir

現在部署Servlet的人可以決定將數據放在哪裏。 也許是沒有執行權限的額外分區。也許一個額外的快速分區。

+0

我認爲這是OP在上面的鏈接暗示的,但它不是100%清楚。我同意把任何東西除了webapps放在$ {WEBAPPS_HOME}目錄中是一個非常糟糕的主意。 – ResourceReaper

相關問題