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

标签 java jsp servlets

我有一个带有 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/

相关文章:

java - 将一个 PDF 页面拆分为两个

java - 文本文件的信息增益计算?

javascript不显示在jsp页面中

java - 我想将 html 表数据转换为 pdf 并使用 jquery 下载它,代码如下

java - 如何显示弹出pdf文件而不是使用java内部保存?

javascript - 动态改变tr背景颜色

java - 函数的输出总是等于初始值

java - spring DAO层返回数据到spring Service层

java - Cookie 在同一请求/响应中可用

java - 有没有办法在从文件系统中提取的 JSP 中动态嵌入 PDF 文件?