Jsp 查看本地文件系统的文件夹
我们正在开发一个文件共享站点,其概念是用户和管理员使用Servlet2.5、jsp和jdbc。我们已经通过servlet实现了文件上传/下载部分。用户应在站点中查看其上载的文件和文件夹。但我们仍然停留在通过servlet实现文件夹级视图上。我们在pl/sql中维护了一个add_file db表,并检索了仅由特定用户上传的文件详细信息。但是,我们还必须显示无法显示的文件夹。 我遇到了一个改变ApacheTomcat6.0的web.xml的简单解决方案,但它可以让每个用户看到每个文件夹和文件的内部,而不依赖于数据库。但我们只能在数据库的基础上显示这些数据。有什么办法可以做到这一点Jsp 查看本地文件系统的文件夹,jsp,servlets,Jsp,Servlets,我们正在开发一个文件共享站点,其概念是用户和管理员使用Servlet2.5、jsp和jdbc。我们已经通过servlet实现了文件上传/下载部分。用户应在站点中查看其上载的文件和文件夹。但我们仍然停留在通过servlet实现文件夹级视图上。我们在pl/sql中维护了一个add_file db表,并检索了仅由特定用户上传的文件详细信息。但是,我们还必须显示无法显示的文件夹。 我遇到了一个改变ApacheTomcat6.0的web.xml的简单解决方案,但它可以让每个用户看到每个文件夹和文件的内部,
<c:forEach items="${files}" var="file">``
<c:url value="/DownloadServlet" var="url">
<c:param name="name" value="${file.name }" />
</c:url>
<a href="<c:out value="${url}"/>"><c:out value="${file.name}" />
</a>
<br>
</c:forEach>
错误Stacktrace:(测试是foldername)
D:\Users\projectname\uploads\test(访问被拒绝:Http状态500)
异常
严重:Servlet DownloadServlet的Servlet.service()引发异常
java.io.FileNotFoundException:D:\Users\projectname\uploads\test(访问被拒绝)
在java.io.FileInputStream.open(本机方法)
位于java.io.FileInputStream。(未知源)
位于java.io.FileInputStream。(未知源)
位于com.servlets.DownloadServlet.doGet(DownloadServlet.java:57)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
位于org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
位于java.lang.Thread.run(未知源)
这是一个非常简单的算法,但这里有一个示例可以帮助您开始:
public void displayFileTree(File rootDirectory) {
displayFileTree(rootDirectory, "");
}
private void displayFileTree(File rootDirectory, String indent) {
for (File file : rootDirectory.listFiles()) {
System.out.println(indent + file.getName());
if (file.isDirectory()) {
displayFileTree(file, indent + " ");
}
}
}
从一个简单的控制台程序运行这段代码,然后根据具体的web问题调整它
如果您想要一个可以从JSP中使用的Java bean,它的结构将与文件相同:
public class Node
private boolean directory;
private String name;
private List<Node> children;
// getters omitted for brevity
}
公共类节点
私有布尔目录;
私有字符串名称;
私人名单儿童;
//为简洁起见省略了getter
}
您的具体问题是什么?可以通过UploadedFileView.jsp访问“uploadeLocationBO.UPLOAD\u目录”中的文件。但如果上传目录位置中存在任何文件夹,我将无法浏览该文件夹。这是投掷错误。我想访问UPLOAD_目录中的任何文件夹,并访问该文件夹中的文件。但是我不想修改ApacheTomcat的web.xml并覆盖defaultservlet配置来显示目录结构。在第一篇文章中添加了代码和异常堆栈跟踪。您似乎试图像读取常规文件一样读取目录。无法读取目录。它只有一个名称/路径。我真的不知道您想要实现什么,但是在尝试读取之前测试文件是否是一个目录:file.isDirectory()
。我可以在控制台上轻松获得文件夹名称,但我一直坚持以可点击模式在jsp页面中显示文件夹,即,每当我运行jsp页面时,它都会显示文件夹,如果我点击该文件夹,我可以遍历文件夹中的文件。。我必须将数据加载到XML中,XML的结构必须根据上传位置进行定义。接下来,您可以使用XSL将XML呈现到jsp页面上。我是xml的新手。如何将您提供的示例代码转换为合适的xml文件。由于会定期添加和删除文件,所以每次都需要动态创建xml文件。@DeSmOnd:不,您不必这样做。您似乎完全迷路了,不了解HTML、HTTP和JSP是如何工作的。遵循一些介绍性教程,该教程展示了如何通过servlet从存储在请求属性中的bean生成带有链接的页面。你的问题太令人困惑了,无法回答。我的基本问题是这样的。这个问题已经得到了回答。再看看我编辑过的答案。
public void displayFileTree(File rootDirectory) {
displayFileTree(rootDirectory, "");
}
private void displayFileTree(File rootDirectory, String indent) {
for (File file : rootDirectory.listFiles()) {
System.out.println(indent + file.getName());
if (file.isDirectory()) {
displayFileTree(file, indent + " ");
}
}
}
public class Node
private boolean directory;
private String name;
private List<Node> children;
// getters omitted for brevity
}