我有一个带有 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中则不起作用。在 View 源中它看起来像 -
<a href="D:\ABCD\pdf1.pdf">file1</a>
我认为这是因为这些文件不是网络应用程序的一部分,所以容器不认为它是本地的,因此无法打开它们。当我将鼠标指针放在链接上时,状态栏显示为 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"/>
我在这里做错了什么?
现在解释得更清楚了吗?
最佳答案
我认为你走错路了。
如果您想提供对分布在文件系统中的不同文件的访问,请创建接受 URL、读取适当文件并将其写入响应输出流的 Controller (servlet)。
通过这种方式,您可以控制对资源的访问,确保资源的安全等。您将能够轻松修改您的应用程序(例如,如果您更改文件位置)。等等等等
关于java - 使用 Java Web App 在浏览器中打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12181176/