Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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 如何使用运行在Tomcat上的servlet进行文件I/O_Java_Tomcat_Servlets_File Io - Fatal编程技术网

Java 如何使用运行在Tomcat上的servlet进行文件I/O

Java 如何使用运行在Tomcat上的servlet进行文件I/O,java,tomcat,servlets,file-io,Java,Tomcat,Servlets,File Io,我正在编写一个Javaservlet,使用Tomcat作为容器,它创建PDF文件并将其提供给最终用户。目前,PDF文件是在内存中创建的,并作为对帖子的响应写出 我想对此进行一些更改,以便将PDF文件写入磁盘(以便以后可以再次提供它们)。我很难找到合适的“操作方法”来进行此操作 我如何配置我的servlet,以便在目录服务器端写入和读取文件?根据我所读的内容,出于安全原因,我认为我需要在我的“爆炸式Web应用程序”位于$CATALINA_BASE之外的某个地方找到该目录,我需要使用上下文或类似的东

我正在编写一个Javaservlet,使用Tomcat作为容器,它创建PDF文件并将其提供给最终用户。目前,PDF文件是在内存中创建的,并作为对帖子的响应写出

我想对此进行一些更改,以便将PDF文件写入磁盘(以便以后可以再次提供它们)。我很难找到合适的“操作方法”来进行此操作


我如何配置我的servlet,以便在目录服务器端写入和读取文件?根据我所读的内容,出于安全原因,我认为我需要在我的“爆炸式Web应用程序”位于
$CATALINA_BASE
之外的某个地方找到该目录,我需要使用
上下文
或类似的东西。

您可以使用常用的和类分别向磁盘进行写入和读取。将PDF生成器更改为写入
FileOutputStream
,并将文件servlet更改为从
FileInputStream
读取

而且,实际上,您希望将这些文件存储在webapp之外,否则每当您重新部署webapp时,这些文件都会丢失。您不需要,它只对绝对磁盘文件系统路径的相对web路径有用。当您将其存储在webapp之外时,您不需要它,即您已经知道绝对磁盘文件系统路径

另见

我现在就来看看您的FileServlet示例代码。快速跟进问题:我应该将文件服务方面实现为一个单独的servlet吗?(我不确定这里的Servlet最佳实践是什么,但我有点喜欢这个想法,因为它似乎与创建PDF的代码有很好的分离。)您可以这样做。它使代码可重用用于生成/提供PDF文件以外的其他目的。反过来,最好修改PDF servlet以检查PDF文件是否已经生成,如果已经生成,则转发到fileservlet。如果没有,则生成一个,然后转发给fileservlet。迟来的谢谢。您的Web站点是Java精华的宝库。