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

时间:2012-08-29 15:14:28

标签: java jsp servlets

我有一个带有servlets和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="">那么它就不起作用了。在viewsource中它看起来像 -

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

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

我在这里做错了什么?

现在解释得多吗?

1 个答案:

答案 0 :(得分:2)

我认为你走错了路。

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

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

相关问题