利用JSP及Oracle搭建文件管理系统(jsp oracle文件)
利用JSP及Oracle搭建文件管理系统
随着科技的发展,人们对于信息处理的需求也越来越高。文件管理系统是为了方便用户进行文件处理而设计的系统,它能够让用户更加便利地浏览、查找、管理自己的文件。本文将介绍如何利用JSP及Oracle数据库搭建一个文件管理系统。
一、技术简介
JSP(JavaServer Pages)是一种基于Java的服务器端技术,它允许开发人员使用基于HTML的模板语言来创建动态网页。Oracle数据库是一个关系型数据库管理系统,它拥有强大的数据存储、查询和处理能力。
二、系统设计
1.数据库设计
在本系统中,需要设计两个表:一个是用户表(user),用于存储用户的账号和密码等信息;另一个是文件表(file),用于存储用户上传的文件和文件相关的一些信息。如下是表的设计:
User表
字段 类型 长度 描述
userid int 11 ID号
username varchar 50 用户名
password varchar 50 密码
File表
字段 类型 长度 描述
fileid int 11 ID号
filename varchar 100 文件名称
filepath varchar 200 文件路径
uploadtime datetime 上传时间
uploader varchar 50 上传人
2.网页设计
本系统的网页主要分为两个部分:登录页面和文件管理页面。
登录页面设计:
文件管理页面设计:
三、系统实现
1.数据库连接工具类编写
为了方便操作数据库,我们需要编写一个数据库连接工具类。代码如下:
package com.filemanager.util;
import java.sql.Connection;import java.sql.DriverManager;
import java.sql.SQLException;
public class DBHelper {
private static final String DRIVER_CLASS = "oracle.jdbc.OracleDriver"; private static final String DB_URL = "jdbc:oracle:thin:@localhost:1521:orcl";
private static final String USERNAME = "scott"; private static final String PASSWORD = "tiger";
public static Connection getConnection() throws ClassNotFoundException, SQLException { Class.forName(DRIVER_CLASS);
Connection conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD); return conn;
}
}
2.登录验证功能实现
在登录页面中,用户输入账号和密码后,点击登录按钮,系统将从数据库中查询出对应的用户信息,并进行验证。代码如下:
package com.filemanager.controller;
import java.sql.Connection;import java.sql.PreparedStatement;
import java.sql.ResultSet;import java.sql.SQLException;
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 javax.servlet.http.HttpSession;
import com.filemanager.util.DBHelper;
@WebServlet("/login")public class LoginController extends HttpServlet {
private static final long serialVersionUID = 1L;
public LoginController() { super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response); }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8"); String username = request.getParameter("username");
String password = request.getParameter("password");
boolean result = false;
try { Connection conn = DBHelper.getConnection();
String sql = "select username from user where username=? and password=?"; PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, username); ps.setString(2, password);
ResultSet rs = ps.executeQuery(); if (rs.next()) {
result = true; }
rs.close(); ps.close();
conn.close(); } catch (ClassNotFoundException e) {
e.printStackTrace(); } catch (SQLException e) {
e.printStackTrace(); }
if (result) { HttpSession session = request.getSession();
session.setAttribute("username", username); response.sendRedirect("fileList.jsp");
} else { response.sendRedirect("login.jsp?error=1");
} }
}
在这里,我们使用了HttpSession来保存用户登录状态。
3.文件上传功能实现
在文件管理页面中,用户可以上传文件。当用户选择文件并点击提交按钮后,系统将把文件保存到服务器指定的路径,并把文件相关信息保存到数据库中。
package com.filemanager.controller;
import java.io.File;import java.io.IOException;
import java.text.SimpleDateFormat;import java.util.Date;
import java.util.List;import java.util.UUID;
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 javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;import com.filemanager.util.DBHelper;
@WebServlet("/upload")public class FileUploadController extends HttpServlet {
private static final long serialVersionUID = 1L;
public FileUploadController() { super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response); }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8"); HttpSession session = request.getSession();
String uploader = (String) session.getAttribute("username");
String uploadPath = "D:\\upload"; File uploadDir = new File(uploadPath);
if (!uploadDir.exists()) { uploadDir.mkdir();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String uploadTime = sdf.format(new Date());
DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory);
try { List items = upload.parseRequest(request);
for (FileItem item : items) { if (!item.isFormField()) {
String fileName = item.getName(); String fileType = fileName.substring(fileName.lastIndexOf("."));
String saveFileName = UUID.randomUUID().toString() + fileType; String saveFilePath = uploadPath + File.separator + saveFileName;
item.write(new File(saveFilePath));
try { DBHelper db = new DBHelper();
String sql = "insert into file(filename, filepath, uploadtime, uploader) values(?, ?, ?, ?)"; Object[] params = {fileName, saveFilePath, uploadTime, uploader};
db.excuteUpdate(sql, params); } catch (Exception e) {
e.printStackTrace(); }
} }
} catch (Exception e) { e.printStackTrace();
}
response.sendRedirect("fileList.jsp"); }
}
在这里,我们使用了Apache的FileUpload组件来实现文件上传功能。
四、总结
本文介绍了利用JSP及Oracle搭建文件管理系统的方法,通过该系统,用户可以更加方便地管理自己的文件。通过学习本文,读者可以了解到数据库连接、登录验证和文件上传等相关知识,并可以根据需求进行修改和扩展。