我在Windows系统上开发了Java WebApp。 它是一个分析程序,其结果集通过导出按钮导出到csv File for Excel。
现在的事实是:我已经将要导出的文件的路径硬编码为:
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;
}
在我的本地系统上工作正常。
现在我已经在Linux系统上的tomcat6上部署了.war
文件。 现在这条路已经不再适用了。 有人能帮助我吗? 我不知道如何解决这个问题。
该程序适用于我公司的其他用户,他们应该能够在服务器上的个人驱动器/空间/数量上导出csv文件。 每个人都有自己的驱动器在这个服务器上的驱动器号(h :)。
代替
h:/VR-Analyse-Tool_Excel Output
采用
/home/VR-Analyse-Tool_Excel Output
创建一个
h:/home
本地计算机上的目录,它应该在两个环境中都有效。
在Windows file(h:your_filepath) , Unix (home/your_filepath)
部署时,在web.xml中添加文件路径
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;
}
我强烈建议不要在相对路径中编写文件,因为在不同的系统(OS)中会有不同的解释。你想要的最后一件事是调试创建文件的位置
您可以选择以下任何一种方法
1)在.properties文件中声明值并从java程序中读取值。 这种方式当环境发生变化时,只需要编辑属性文件。 所以重新编译是必要的
2)或者更好的是你可以拥有这个Db表并使用它。
3)您可以在Web.xml中对Application上下文变量进行delare并使用它
<?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>