Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java创建可下载文件并存储在web app子目录中_Java_Jsp_Tomcat_Servlets_File Io - Fatal编程技术网

用Java创建可下载文件并存储在web app子目录中

用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能够读取和显示文件(如可下载

在我的基于web的应用程序(Tomcat7/JDK 7-JSP3.0)中,我构建了一个转换器,用于获取csv文件、清理并保存文件。然后,第二部分解析文件中的某些信息,并创建第二个文件(以便可以将其加载到另一个系统中进行验证)。这每天都在发生。这些文件正在写入${ECLIPSE\u HOME}(因为我在ECLIPSE中运行这个)

我想做的是在应用程序的根目录中创建一个文件夹{即,[app root]/toBeDLd}专门用于将生成的文件保存到并下载它们,让我的前端JSP能够读取和显示文件(如可下载文件的列表,您可以在web浏览器中单击它下载的链接)在特定时间,删除该目录中的所有文件。我不需要保存它们,也不需要备份它们

从我所读的内容来看,这是一个不错的起点,但我也读了一些其他的评论,因此在web应用程序目录中保存文件违反了servlet规范。我不确定这是不是因为它是webapp的根。理想情况下,我希望将其完全包含在web应用程序中


这可能吗?这是最好的方法吗?

不要把它放在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");