3

我在 Windows 系统上开发了一个 Java WebApp。这是一个分析程序,通过导出按钮将结果集导出到 Excel 的 csv 文件。

现在事实是:我已经硬编码了要导出到的文件的路径:

public String button1_action() {
   GenerateCSV  generateCSV = new GenerateCSV();

   Date zeitstempel = new Date();
   SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("_dd.MM.yyyy_HH.mm.ss");

   generateCSV.generateCsvFile("h:/VR-Analyse-Tool_Excel Output" +simpleDateFormat.format(zeitstempel) +".csv", getSessionBean1().getExistingRightsList()); 

   return null;
}

这在我的本地系统上运行良好。

现在我已经将.war文件部署在 Linux 系统上的 tomcat6 上。现在这条路已经行不通了。有人可以帮助我吗?我不明白如何解决这个问题。

该程序适用于我公司的其他用户,他们应该能够在服务器上的个人驱动器/空间/数量上导出 csv 文件。每个人在此服务器上都有自己的驱动器,驱动器号为 (h:)。

4

3 回答 3

0

代替

h:/VR-Analyse-Tool_Excel Output

采用

/home/VR-Analyse-Tool_Excel Output

创建一个

h:/home

本地计算机上的目录,它应该在两种环境中都可以工作。

于 2013-03-05T08:46:10.820 回答
0

部署时在 web.xml 中添加文件路径Windows file(h:your_filepath) , Unix (home/your_filepath)

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
  <context-param>
    <param-name>downloadFilePath</param-name>
    <param-value>h:your_filepath</param-value>
  </context-param>
.
.
.
.
</web-app>

Java 代码

public String button1_action() {
   GenerateCSV  generateCSV = new GenerateCSV();
   String filepath =  getServletContext().getInitParameter("downloadFilePath");
   Date zeitstempel = new Date();
   SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("_dd.MM.yyyy_HH.mm.ss");

   generateCSV.generateCsvFile(filepath  +simpleDateFormat.format(zeitstempel) +".csv", getSessionBean1().getExistingRightsList()); 

   return null;
}
于 2013-03-05T08:54:02.080 回答
0

我强烈建议不要在相对路径中编写文件,因为这在不同的系统(OS)中会有不同的解释你想要的最后一件事是调试文件的创建位置

您可以选择以下任何一种方法

1) 在 .properties 文件中声明值并从 java 程序中读取值。这样当环境发生变化时,只需要编辑属性文件即可。所以需要重新编译

2)或者更好的是你可以拥有这个 Db 表并使用它。

3) 您可以在 Web.xml 中 delara 应用程序上下文变量并使用它

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <web-app>
   <context-param>
     <param-name>csv_file_path</param-name>
     <param-value>h:/your_file_path</param-value>
   </context-param>
 .
 .
 .
 .
</web-app>
于 2013-03-05T09:05:53.180 回答