【问题标题】:Opening files in the browser with Java Web App使用 Java Web App 在浏览器中打开文件
【发布时间】:2012-08-29 15:14:27
【问题描述】:

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

如果我在 jsp 中使用简单的<a href="">,那么它就不起作用。在视图中它看起来像 -

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

我认为这是因为这些文件不是 webapp 的一部分,所以容器不认为它是本地的,因此无法打开它们。当我将鼠标指针放在链接上时,状态栏显示为file:///D:\ABCD\pdf1.pdf。我还尝试在href 中添加前缀file:///,即使那样它也不起作用。所以我尝试了其他一些方法。
我尝试过的一件事是在 Tomcat 的server.xml 中设置Context,但即使这样似乎也不起作用。我正在使用 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"/>  

我在这里做错了什么?

现在解释得更多了吗?

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    我认为你走错路了。

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

    通过这种方式,您可以控制对资源的访问,确保资源安全等。您将能够轻松修改您的应用程序(例如,如果您更改文件位置)。等等等等。

    【讨论】:

    • 谢谢。我的想法是使用流,但我真的不想过多地使用流。但如果没有其他选择,则可以使用流。
    猜你喜欢
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2014-10-02
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多