问题描述
给出一个文件夹结构,使用Jsp和JavaServlets列出文件夹以及该文件夹中存在的文件。
提供的文件夹结构为:
- C:\ Users \ abc \ Desktop \ def \ def1 \ text1.txt
- C:\ Users \ abc \ Desktop \ def \ def2 \ text2.txt
应用程序的流程应为:-
第一个index.jsp将显示在具有超链接列表文件和文件夹的屏幕上。单击链接后,它应该转发到Servlet,在该Servlet中将获取详细信息,然后Servlet依次转发到view.jsp。
view.jsp将显示以下带有超链接的文件夹列表:
- def1
- def2
在单击def1时,应显示view.jsp
- def1。\ text1.txt
- def2
在单击def2时,应显示view.jsp
- def1
- def2。\ text2.txt
我可以在view.jsp中显示文件夹列表,但是在单击文件夹超链接后无法显示其中的文本文件。
我想不出一种逻辑来获取文件夹的详细信息以及其中的文件,并在单击文件夹超链接时同时显示它们。 因此,我决定继续前进并在jsp中编写逻辑,然后通过Servlet调度view.jsp。我知道在jsp内编写任何业务逻辑的坏习惯。 但是我什至用jsp代码挣扎,只能显示文件夹列表。
我尝试了以下代码:
我的view.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import="java.io.File,java.io.IOException,java.util.*,java.io.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Contents <br>
<%!
public boolean displayFileContents(String path) {
try {
File currentDirectory = new File("C:\\Users\\abc\\Desktop\\def\\"+path);
System.out.println("Current Directory is :- " + currentDirectory.getCanonicalPath());
File[] files = currentDirectory.listFiles();
for (File file : files) {
if (file.isFile()) {
String filePath=file.getCanonicalPath();
String filePathList[]=filePath.split(path);
String filePathnew="";
for(int i=0;i<filePathList.length;i++)
{
filePathnew=filePathList[i];
}
}
}
//display file contents in list
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
%>
<%
try {
File currentDirectory = new File("C:\\Users\\abc\\Desktop\\def\\");
File[] files = currentDirectory.listFiles();
for (File file : files) {
if (file.isDirectory()) {
String directoryPath=file.getCanonicalPath();
String directoryPathList[]=directoryPath.split("def");
String b="";
for(int i=0;i<directoryPathList.length;i++)
{
directoryPath=directoryPathList[i];
System.out.println(directoryPath);
}
%>
<li>
<a href="./<%=displayFileContents(file.getName())%>"><%=file.getName()%></a>
</li>
<%
}
}
} catch (IOException e) {
e.printStackTrace();
}
%>
</body>
</html>
我的index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Archetype Created Web Application</title>
<link rel="stylesheet" href="resource/css/main.css" />
<script type="text/javascript" src="resource/js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="resource/js/fileupload.js"></script>
</head>
<body>
<div class="panel">
<h1>List Files and Folders</h1>
</div>
<!-- List Files and Folders -->
<div class="panel">
<a id="listFilesFolders" class="hyperLink" href="<%=request.getContextPath()%>/FileXplorerServlet">List Files and Folders</a>
</div>
</body>
</html>
我的Servlet:
@WebServlet(description = "List Files and Folders",urlPatterns = { "/FileXplorerServlet" })
public class FileXplorerServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
RequestDispatcher dispatcher = request.getRequestDispatcher("/view.jsp");
dispatcher.forward(request,response);
}
protected void doPost(HttpServletRequest request,IOException {
// TODO Auto-generated method stub
doGet(request,response);
}
}
任何帮助将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)