项目介绍在线共享网盘采用jsp+servlet搭建项目结构实现共享网盘,项目分为管理员,普通用户和付费用户三种角色,根据不同角色控制不同权限,实现不同用户对个人文件文件,所有文件,共享文件的增删改查操作 。
项目适用人群正在做毕设的学生,或者需要项目实战练习的JAVA学习者
开发环境:
- jdk 8
- intellij idea
- Tomcat 8.5.40
- MySQL 5.7
- jsp+servlet
- js+ajax
- layUi
- jdbc直连
http://localhost:8090
项目结构文章插图
项目截图
- 注册
文章插图
- 我的网盘
文章插图
- 我的共享
文章插图
- 回收站
文章插图
- 会员充值
文章插图
- 管理员-所有文件
文章插图
- 管理员-共享申请
文章插图
关键代码:1.初始化工作
//数据库连接初始化public class DBInfo {String url = null;String username = null;String password = null;String driverClass = null;private static DBInfo db = new DBInfo();public static DBInfo getInstance(){return db;}private DBInfo() {InputStream in = this.getClass().getClassLoader().getResourceAsStream("db.properties");Properties pp = new Properties();try {pp.load(in);url = pp.getProperty("jdbc.url");username = pp.getProperty("jdbc.username");password = pp.getProperty("jdbc.password");driverClass = pp.getProperty("jdbc.driver");Class.forName(driverClass);} catch (Exception e) {e.printStackTrace();}finally{try {in.close();} catch (IOException e) {e.printStackTrace();}}}public Connection getConnection(){Connection conn = null;try {conn = DriverManager.getConnection(url, username, password);} catch (Exception e) {e.printStackTrace();}return conn;}}//上传资源初始化public void init() throws ServletException {super.init();//servlet启动时,读取配置文件中关于上传的信息InputStream in = this.getClass().getClassLoader().getResourceAsStream("ini.properties");Properties pp = new Properties();try {pp.load(in);UPLOAD_ROOT_PATH = pp.getProperty("upload.path");String tmpPath = pp.getProperty("tmp.path");//配置上传临时目录factory = new DiskFileItemFactory(1024*1024*10,new File(tmpPath));stu = new ServletFileUpload(factory);} catch (Exception e) {e.printStackTrace();}finally{try {in.close();} catch (IOException e) {e.printStackTrace();}}}
2.资源上传//前端JSP代码<div class="modal fade" id="uploadModal" tabindex="-1" role="dialog" aria-labelledby="uploadFile" aria-hidden="true"><form action="upload" method="post" enctype="multipart/form-data"><input type="hidden" name="from" value=https://www.isolves.com/it/cxkf/yy/JAVA/2020-12-31/"user">//后端入库处理protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsIOException {User user = (User) request.getSession().getAttribute(Const.SESSION_USER);String from="";try {List fileItemLists = stu.parseRequest(request);for(FileItem fileItem : fileItemLists){if(fileItem.isFormField()){from = fileItem.getString();}else{//上传文件名String fileName = fileItem.getName();String oldfilename = fileItem.getName();int index = fileName.lastIndexOf("\");if(index != -1) {fileName = fileName.substring(index+1);}String root = UPLOAD_ROOT_PATH+user.getUsername();//获取文件大小long size = fileItem.getSize();String sizeString = StringUtil.computeSize(size);Timestamp upTime = new Timestamp(new Date().getTime());File file = new File(root,fileName);//解决文件同名int cnt = 1;while(file.exists()){StringBuffer sb = new StringBuffer(fileName);sb.insert(sb.lastIndexOf("."), "("+cnt+")");file = new File(root,sb.toString());cnt++;}//文件路径是否存在if(!file.getParentFile().exists()){file.getParentFile().mkdirs();}try {fileItem.write(file);//上传成功,数据库保存记录UserFile userFile = new UserFile();userFile.setCreateTime(upTime);userFile.setFilename(file.getName());userFile.setFilename(file.getName());userFile.setFileSize(sizeString);userFile.setIsShared(0);userFile.setOwnerId(user.getId());userFile.setPath(file.getAbsolutePath());userFile.setOldfilename(oldfilename);userFileDao.save(userFile);response.sendRedirect(from+"?action=mydisk");} catch (Exception e) {e.printStackTrace();response.getWriter().print("上传出错");}}}} catch (FileUploadException e) {e.printStackTrace();response.setContentType("text/html; charset=utf8");response.getWriter().print("上传出错!!");}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JavaScript的两大类内建数据类型
- javascript 代码的简单优化
- 在安卓手机搭建kali环境,手机变成便携式渗透神器
- 你不得不知道的七个JavaScript小技巧
- 抖音 Android 性能优化系列:Java 内存优化篇
- 吐血整理!这200道阿里P6必备Java面试题,我简直太爱了
- 在windows下搭建可以外网访问的ftp服务,支持在线播放
- 使用GPU.js改善JavaScript性能
- 阿里Java程序员,常用的10大开发工具
- 2020年12月程序员工资统计,Java地位岌岌可危