我有一个带有servlet和jsp的独立的简单Java Web应用程序,它的名称是FileDisplay。我正在通过url- 访问其主页http://localhost:8080/FileDisplay/index.jsp。
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="">
<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工作区中的一个。 我使用的设置是-
file:///D:\ABCD\pdf1.pdf
file:///
href
Context
server.xml
<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的控制器(servlet),读取适当的文件并将其写入响应输出流。
这样,您可以控制对资源的访问,使其安全等。您将能够轻松地修改应用程序(例如,如果更改文件位置)。等等