简单中级项目Servlet/JSP实现web版windows资源管理器

您所在的位置:网站首页 windows资源管理器的功能是 简单中级项目Servlet/JSP实现web版windows资源管理器

简单中级项目Servlet/JSP实现web版windows资源管理器

2024-06-30 19:40| 来源: 网络整理| 查看: 265

java中级学完之后就可以自己写一些小项目,比如一些博客、商城。用到的技术也只是Servlet+JSP,练习才是最好的老师。下面介绍一个最简单的练手项目,模仿windows的文件管理,功能比较单一。就是输入地址http://localhost:8080/file/index会进入写好的首页,然后有C,E,F盘,点击每个磁盘会去读取磁盘下的文件展示在右边的空白处,显示的内容也是一个个超链接,可以继续点击,如果是文件夹继续展示,如果是文件就会进行下载。其中会进行日志记录,每一次点击操作(查看文件夹、下载文件)都会记录在数据库中。效果图如下,前台就是简单的JSP页面,一个主页面包含左右两个JSP。

项目目录结构如下图

整个实现流程是:首先输入http://localhost:8080/file/index网址进入IndexController直接转发到file.jsp页面,就是我们的首页。当继续点击C、E、F盘时,都是一个超链接

   系统保留(C:)

   点击后转到FileController进行处理,拿到请求参数act(也就是需要查询的盘符C:/),调用FileService类中的处理方法,判断该文件是目录还是文件,如果是目录就查出所有文件并返回,返回的是一个Map,key值放入文件名,value放入文件路径作为下次点击请求的act参数。如果是文件就进行下载。下面是每个类的源码:

package gtja.controller; import gtja.service.FileService; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(urlPatterns = "/index") public class IndexController extends HttpServlet { FileService fileService = new FileService(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.getRequestDispatcher("jsp/file.jsp").forward(req,resp); } }

package gtja.controller; import gtja.service.FileService; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Map; @WebServlet(urlPatterns = "/file") public class FileController extends HttpServlet { FileService fileService = new FileService(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String act = req.getParameter("act"); Map fileList = fileService.queryFile(act,resp,req); req.setAttribute("fileList",fileList); //resp.sendRedirect("right.jsp"); req.getRequestDispatcher("jsp/right.jsp").forward(req,resp); } } package gtja.service; import gtja.util.MyUtil; import gtja.vo.FileLog; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; public class FileService { static FileLog fileLog = new FileLog(); //private static Logger logger = Logger.getLogger(FileService.class); public Map queryFile(String act,HttpServletResponse resp,HttpServletRequest req) { Map map = new HashMap(); File file = new File(act); if(file.isDirectory()){ File[] files = file.listFiles(); for(int i = 0; i0){ out.write(buffer,0,len); } in.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } myJDBC(req,"下载文件"); } return map; } public static void myJDBC(HttpServletRequest req ,String a){ fileLog.setIp(FileService.getIpAddress(req)); fileLog.setAction(a); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); fileLog.setTime(df.format(new Date())); String sql = "insert into db_log(ip,action,time) values(?,?,?) "; Connection conn = MyUtil.getConnection(); PreparedStatement ps = null; try { ps= conn.prepareStatement(sql); ps.setString(1,fileLog.getIp()); ps.setString(2,fileLog.getAction()); ps.setString(3,fileLog.getTime()); ps.execute(); } catch (SQLException e) { e.printStackTrace(); } MyUtil.closeResouce(conn); } public static String getIpAddress(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } } package gtja.util; import java.sql.*; public class MyUtil { public static Connection getConnection(){ Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "1874"); } catch (Exception e) { e.printStackTrace(); } return conn; } public static void closeResouce(Connection conn){ try { if(conn!=null){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } public static boolean isEmpty(String str){ boolean flag = false; if(null==str||"".equals(str)){ flag = true; } return flag; } } file.jsp

File Action *{ font-size:10pt; } body{ text-align:center; } .table{ width:1024px; height:100%; border:1px solid gray;/*固定边框,1像素*/ border-collapse: collapse;/*单线的列表边框*/ } .table td{ border:1px solid gray;/*固定边框,1像素*/ } iframe { width: 100%; height: 100%; } left.jsp

Title 系统保留(C:) 新加卷(E:) 新加卷(F:) body.jsp

Title 请选择文件夹 right.jsp

Title ${list.key}



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3