一尘不染

使用Java Web App在浏览器中打开文件

jsp

我有一个带有servlet和jsp的独立的简单Java Web应用程序,它的名称是FileDisplay。我正在通过url-
访问其主页http://localhost:8080/FileDisplay/index.jsp

应用程序本质上的作用是检索具有完整路径的文件名列表(.xml和.pdf)。这些文件存储在各种外部目录中,例如D:\ ABCD,D:\ XYZ,D:\ PP
\ 2012 \ 08等,但与Web应用程序位于同一台机器上,但位于不同的驱动器上。因此,退货清单类似于-

D:\ABCD\filename1.xml  
D:\ABCD\filename2.xml  
D:\ABCD\pdf1.pdf

如果我<a href="">在jsp中使用简单的话,它将不起作用。在viewsource中看起来像-

<a href="D:\ABCD\pdf1.pdf">file1</a>

我认为是因为这些文件不是webapp的一部分,所以容器不认为它是本地文件,因此无法打开它们。当我将鼠标指针放在链接上时,状态栏显示为file:///D:\ABCD\pdf1.pdf。我也尝试在file:///中添加前缀href,即使这样也不起作用。所以我尝试了其他一些事情。
我尝试过的一件事是Context在Tomcat中设置,server.xml但即使这样似乎也不起作用。我正在使用eclipse构建,部署和运行tomcat,因此server.xml我为此上下文修改的内容是eclipse工作区中的一个。
我使用的设置是-

<Context docBase="D:/ABCD" path="/File-Display/NB" reloadable="true"/>

我为主要应用程序设置了另一种上下文-

<Context docBase="FileDisplay" path="/FileDisplay" reloadable="true" source="org.eclipse.jst.j2ee.server:FileDisplay"/>

我在这里做错了什么?

现在解释得更多了吗?


阅读 461

收藏
2020-06-10

共1个答案

一尘不染

我认为您走错了路。

如果要提供对分布在文件系统中的不同文件的访问,请创建接受URL的控制器(servlet),读取适当的文件并将其写入响应输出流。

这样,您可以控制对资源的访问,使其安全等。您将能够轻松地修改应用程序(例如,如果更改文件位置)。等等

2020-06-10