用Java创建可下载文件并存储在web app子目录中
在我的基于web的应用程序(Tomcat7/JDK 7-JSP3.0)中,我构建了一个转换器,用于获取csv文件、清理并保存文件。然后,第二部分解析文件中的某些信息,并创建第二个文件(以便可以将其加载到另一个系统中进行验证)。这每天都在发生。这些文件正在写入${ECLIPSE\u HOME}(因为我在ECLIPSE中运行这个) 我想做的是在应用程序的根目录中创建一个文件夹{即,[app root]/toBeDLd}专门用于将生成的文件保存到并下载它们,让我的前端JSP能够读取和显示文件(如可下载文件的列表,您可以在web浏览器中单击它下载的链接)在特定时间,删除该目录中的所有文件。我不需要保存它们,也不需要备份它们 从我所读的内容来看,这是一个不错的起点,但我也读了一些其他的评论,因此在web应用程序目录中保存文件违反了servlet规范。我不确定这是不是因为它是webapp的根。理想情况下,我希望将其完全包含在web应用程序中用Java创建可下载文件并存储在web app子目录中,java,jsp,tomcat,servlets,file-io,Java,Jsp,Tomcat,Servlets,File Io,在我的基于web的应用程序(Tomcat7/JDK 7-JSP3.0)中,我构建了一个转换器,用于获取csv文件、清理并保存文件。然后,第二部分解析文件中的某些信息,并创建第二个文件(以便可以将其加载到另一个系统中进行验证)。这每天都在发生。这些文件正在写入${ECLIPSE\u HOME}(因为我在ECLIPSE中运行这个) 我想做的是在应用程序的根目录中创建一个文件夹{即,[app root]/toBeDLd}专门用于将生成的文件保存到并下载它们,让我的前端JSP能够读取和显示文件(如可下载
这可能吗?这是最好的方法吗?不要把它放在Tomcats webapps下。这可能是一个非常糟糕的主意 我的建议是在web.xml中添加一个
dataDir
init参数:
<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>
如果您想让它与您的Tomcat紧凑,可以选择$CatalinaBase/dataDir
现在部署Servlet的人可以决定将数据放在何处。
可能是一个没有执行权限的额外分区。也许是一个超快的分区 我想这就是OP在上面的链接中暗示的,但还不是100%清楚。我同意把除了webapps以外的任何东西放在${webapps_HOME}目录是一个非常糟糕的主意。
getServletConfig().getInitParameter("dataDir");