SSM+Mysql实现的仿网盘系统(功能包含注册登录,文件上传、所有文件、分类资源查看、用户管理、分享资源等)

news2024/12/22 19:54:11

博客目录

  • SSM+Mysql实现的仿网盘系统
    • 实现功能截图
    • 系统功能
    • 使用技术
    • 代码
    • 完整源码

SSM+Mysql实现的仿网盘系统

本系统是一个模拟百度网盘的系统,通过实现了图片/文本文件/视频等资源上传,并且分类管理、资源分享,实现了资源的在线管理。
(文末查看完整源码)

实现功能截图

预登录
请添加图片描述
登录
请添加图片描述
用户管理
请添加图片描述
文件管理
请添加图片描述
网盘首页
请添加图片描述
文件夹
请添加图片描述
视频
请添加图片描述
文本文件
请添加图片描述
资源分享
请添加图片描述

系统功能

本系统实现了以下功能:
1、注册登录
2、文件管理
3、资源管理
4、资源分类查看
5、创建文件夹
6、资源分享
7、用户管理

使用技术

数据库:mysql
开发工具:Idea(Myeclispe、Eclipse也可以)
知识点:Spring+Mybatis+springmvc+Maven

项目结构
在这里插入图片描述

代码

java端
实体类
Files.java

package com.cloud.pojo;

public class Files {
	
	private int file_id;//文件id
	
	private String file_name;//文件名
	
	private String file_path;//文件路径
	
	private int user_id;//上传文件用户id

	public int getFile_id() {
		return file_id;
	}

	public void setFile_id(int file_id) {
		this.file_id = file_id;
	}

	public String getFile_name() {
		return file_name;
	}

	public void setFile_name(String file_name) {
		this.file_name = file_name;
	}

	public String getFile_path() {
		return file_path;
	}

	public void setFile_path(String file_path) {
		this.file_path = file_path;
	}
	
	public int getUser_id() {
		return user_id;
	}

	public void setUser_id(int user_id) {
		this.user_id = user_id;
	}

	@Override
	public String toString() {
		return "Files [file_id=" + file_id + ", file_name=" + file_name + ", file_path=" + file_path + ", user_id="
				+ user_id + "]";
	}

	
	
	
}

dao层
FileDao.java

package com.cloud.dao;

import java.util.List;

import com.cloud.pojo.Files;

public interface FileDao {
	
	/*
	 * 2019-2-23 csh
	 * 文件添加到数据库
	 */
	public void insertFile(Files files);
	
	/* 2019-2-24 csh
	 * 查询所有文件名
	 */
	public List<Files> selectFileName(Integer user_id);
	//查询images下的文件名
	public List<Files> selectImagesFileName(Integer user_id);
	//查询video下的文件名
	public List<Files> selectVideoFileName(Integer user_id);
	//查询txt下的文件名
	public List<Files> selectTxtFileName(Integer user_id);
	//查询music下的文件名
	public List<Files> selectMusicFileName(Integer user_id);
	//删除文件
	public int deleteFile(Integer file_id);
	//查询文件所在路径
	public String selectFilePath(Integer file_id);
	//修改文件路径
	public int updateFilePath(Files files);
	//文件查询
	public List<Files> selectFileById(Integer file_id);
}

mapper
FileDaoMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cloud.dao.FileDao">

	<!-- 添加上传文件到数据库 -->
	<insert id="insertFile" parameterType="Files">
		insert into cloud_file (file_name,file_path,user_id)
		values(#{file_name},#{file_path},#{user_id})
	</insert>
	<!-- 查询文件名 -->
	<select id="selectFileName" resultType="Files">
		select * from cloud_file where user_id=#{user_id}
	</select>
	<!-- 查询当前用户所有图片 -->
	<select id="selectImagesFileName" resultType="Files">
		select * from cloud_file
		where file_path like '%images%' and user_id=#{user_id}
	</select>
	<!-- 查询当前用户所有视频 -->
	<select id="selectVideoFileName" resultType="Files">
		select * from cloud_file
		where file_path like '%video%' and user_id=#{user_id}
	</select>
	<!-- 查询当前用户所有文本文档 -->
	<select id="selectTxtFileName" resultType="Files">
		select * from cloud_file
		where file_path like '%txt%' and user_id=#{user_id}
	</select>
	<!-- 查询当前用户所有音频 -->
	<select id="selectMusicFileName" resultType="Files">
		select * from cloud_file
		where file_path like '%music%' and user_id=#{user_id}
	</select>
	<!-- 删除当前用户指定文件 -->
	<delete id="deleteFile" parameterType="Integer">
		delete from cloud_file 
		where file_id=#{file_id}
	</delete>
	<!-- 查询文件所在路径 -->
	<select id="selectFilePath" resultType="String">
		select file_path from cloud_file
		where file_id=#{file_id}
	</select>
	<!-- 修改文件路径 -->
	<update id="updateFilePath" parameterType="Files">
		update cloud_file set file_path=#{file_path} 
		where file_id=#{file_id}
	</update>
	<!-- 文件查询 -->
	<select id="selectFileById" resultType="Files">
		select * from cloud_file 
		where file_id=#{file_id}
	</select>
</mapper>

service层
FileServiceImpl.java

package com.cloud.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.cloud.dao.FileDao;
import com.cloud.pojo.Files;
import com.cloud.service.FileService;
@Service
public class FileServiceImpl implements FileService {

	@Autowired
	private FileDao fileDao;
	@Override
	public void insertFile(Files files) {
		
		fileDao.insertFile(files);	
	}
	
	@Override
	public List<Files> selectFileName(Integer user_id) {
		
		return fileDao.selectFileName(user_id);
	}
	@Override
	public List<Files> selectImagesFileName(Integer user_id) {
		List<Files> imagesFileName =fileDao.selectImagesFileName(user_id);
		return imagesFileName;
	}
	@Override
	public List<Files> selectVideoFileName(Integer user_id) {
		List<Files> videoFileName = fileDao.selectVideoFileName(user_id);
		return videoFileName;
	}
	@Override
	public List<Files> selectTxtFileName(Integer user_id) {
		List<Files> txtFileName = fileDao.selectTxtFileName(user_id);
		return txtFileName;
	}
	@Override
	public List<Files> selectMusicFileName(Integer user_id) {
		List<Files> musicFileName = fileDao.selectMusicFileName(user_id);
		return musicFileName;
	}

	@Override
	public int deleteFile(Integer file_id) {
		int i = fileDao.deleteFile(file_id);
		return i;
	}

	@Override
	public String selectFilePath(Integer file_id) {
		String filePath = fileDao.selectFilePath(file_id);
		return filePath;
	}

	@Override
	public int updateFilePath(Files files) {
		int i = fileDao.updateFilePath(files);
		return i;
	}

	@Override
	public List<Files> selectFileById(Integer file_id) {
		List<Files> files = fileDao.selectFileById(file_id);
		return files;
	}




}

controller层
FolderController.java

package com.cloud.controller;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.cloud.pojo.Files;
import com.cloud.pojo.Folder;
import com.cloud.pojo.User;
import com.cloud.service.FolderService;

@Controller
public class FolderController {
	
	@Autowired
	private FolderService folderService;
	/*
	 * 2019/2/22
	 * 在用户目录下新建文件夹
	 */
	@RequestMapping("/createDir")
	public String creatDir(Folder folder, User user,HttpServletRequest request,HttpServletResponse response) throws IOException {
		String user_id = request.getParameter("user_id");
		String folderName = request.getParameter("folderName");
		String userPath = "D:\\cloud"+File.separator+user_id+File.separator+folderName;
		
		File userdir=new File(userPath);
		
		if(!userdir.exists()){//如果文件夹不存在
			
			userdir.mkdirs();//创建文件夹
		}
		int userid = Integer.parseInt(user_id);
		folder.setDir_name(folderName);
		folder.setDir_path(userPath);
		folder.setUser_id(userid);
		folderService.addFolder(folder);
		System.out.println(folderName+"创建成功");

		response.setContentType("text/html; charset=utf-8");
		PrintWriter out;
		out = response.getWriter();
		out.flush();
	    out.println("<script>");
	    out.println("alert('文件夹创建成功!');");
	    out.println("history.back();");
	    out.println("</script>");
		return "main";
	}
	/*
	 * 2019-2-26
	 * 文件夹展示
	 */
	@RequestMapping("/showFolder")
	public String showFolder(Folder folder,Map<String,Object> map,@RequestParam("user_id") Integer user_id) {
		List<Folder> folders =  folderService.showFolder(user_id);
		map.put("folders", folders);
		return "showFolder";
	}
	/*
	 * 2019-2-27
	 * 文件夹内文件展示
	 */
	@RequestMapping("/showFiles")
	public String showFiles(@RequestParam("dir_id") Integer dir_id,Map<String,Object> map) {
		List<Files> files =  folderService.selectFiles(dir_id);
		map.put("files", files);
		
		return "files";
	}
	/*
	 *
	 * 查询一个文件夹
	 */
	@RequestMapping("/selectOne/{dir_id}")
	public String selectOne(@RequestParam("dir_id") Integer dir_id,Map<String,Object> map) {
		
		Folder folder = folderService.selectOne(dir_id);
		map.put("folder", folder);
		return null;
	}
	/*
	 * 删除文件夹
	 */
	@RequestMapping("/deleteFolder/{dir_id}")
	public String deleteFolder(Folder folder,@RequestParam("dir_id") Integer dir_id,HttpServletResponse response) throws IOException{
		System.out.println(dir_id);
		String dir_path = folderService.selectDirPath(dir_id);
        try{
       	 FileUtils.deleteDirectory(new File(dir_path));
       	 System.out.println("ok");
        }catch(IOException e) {
       	 e.printStackTrace();
       	 System.out.println(e.getMessage());
        }
        
        int i = folderService.deleteFolder(dir_id);
		System.out.println("成功删除"+ i +"个文件夹");

		response.setContentType("text/html; charset=utf-8");
		PrintWriter out;
		out = response.getWriter();
		out.flush();
	    out.println("<script>");
	    out.println("alert('文件夹删除成功!');");
	    out.println("history.back();");
	    out.println("</script>");
		return "main";
	}
	
}

完整源码

觉得有用,记得一键三连哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue2.0开发之——Vue组件-组件属性(34)

一 概述 为Count组件添加自定义属性为自定义属性添加v-bind自定义属性props是只读的自定义属性default默认值自定义属性type值类型自定义属性required必填值 二 为Count组件添加自定义属性 2.1 组件的props props 是组件的自定义属性&#xff0c;在封装通用组件的时候&#…

【Vue核心】6.数据代理

1.回顾Object.defineProperty方法 Object.defineproperty Object.defineproperty 的作用就是直接在一个对象上定义一个新属性&#xff0c;或者修改一个已经存在的属性。Object.defineproperty方法需要传递3个参数&#xff0c;1.属性所在的对象 2.属性的名字 3.一个描述符对象…

Wireshark TS | PMTU 问题实例

前言 PMTU&#xff0c;说到网络上的 PMTU 所能实现的功能&#xff0c;网工对它的原理自然是如数家珍&#xff0c;不熟悉的可能就感觉高大上了&#xff0c;觉得路径 MTU 能自动发现了&#xff0c;自然端到端数据包传输就能避免数据包分片了。可是理想很丰满&#xff0c;现实很骨…

防火墙NAT综合实验——nat控制,豁免,远程,DMZ区域(带命令)

作者简介&#xff1a;一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.实验 实验要求 实验命令 前言 本章将会进行NAT的综合配置…

编程零基础转行Python,往这个方向走,绝对没有错

近几年Python的受欢迎程度可谓是扶摇直上&#xff0c;当然了学习的人也是愈来愈多。一些学习Python的小白在学习初期&#xff0c;总希望能够得到一份Python学习路线图&#xff0c;小编经过多方汇总为大家汇总了一份Python学习路线图。 对于一个零基础的想学习python的朋友来说…

对造轮子Say NO!如何移植并使用Linux内核的通用链表?(附源代码)

1. 什么是链表 链表是一种常用的组织有序数据的数据结构&#xff0c;它通过指针将一系列数据节点连接成一条数据链&#xff0c;是线性表的一种重要实现方式。 相对于数组&#xff0c;链表具有更好的动态性&#xff0c;建立链表时无需预先知道数据总量&#xff0c;可以随机分配…

字节跳动技术总监整理的这份MySQL学习文档,看完才发现要学的可太多了!

对于程序员来说&#xff0c;去任何一家公司面试&#xff0c;数据库是避不开的。开发人员对MySQL掌握的越深入&#xff0c;你能做的事情就越多。 完成业务功能&#xff0c;要懂基本的Sql语句。做性能优化&#xff0c;要懂索引&#xff0c;懂引擎。做分库分表&#xff0c;要懂主从…

Head First设计模式(阅读笔记)-13.代理模式

监控糖果机 假设现在需要一台监视器去生成报告&#xff0c;报告中包括糖果机的位置、库存等信息 // 糖果机 public class GumballMachine{String loc;public GumballMachine(String loc, int count){this.loc loc;}public String getLoc(){return loc;}// 其他方法省略 } // 监…

详解Pytorch中的torch.nn.MSELoss函数(包括每个参数的分析)

一、函数介绍 Pytorch中MSELoss函数的接口声明如下&#xff0c;具体网址可以点这里。 torch.nn.MSELoss(size_averageNone, reduceNone, reduction‘mean’) 该函数默认用于计算两个输入对应元素差值平方和的均值。具体地&#xff0c;在深度学习中&#xff0c;可以使用该函数用…

玩转webpack(03):webpack进阶使用

一、自动清理构建目录 避免构建前每次都要手动删除dist 使用 clean-webpack-plugin&#xff08;默认删除output指定的输出目录&#xff09; &#xff08;1&#xff09;依赖安装 npm i clean-webpack-plugin -D &#xff08;2&#xff09;使用 --- webpack.prod.js const Cl…

基于java学生签到考勤系统

开发工具eclipse,jdk1.8 技术&#xff1a;java swing 数据库&#xff1a;mysql5.7 学生选课系统功能&#xff1a;管理员、教师、学生三个角色 一、管理员功能&#xff1a; 1.登录、修改密码、退出系统 2.学生管理&#xff1a;添加、修改、删除、查询 3.班级管理&#x…

YOLOV1算法学习记录

前言 R-CNN系列算法&#xff08;R-CNN、SPPNet、Fast R-CNN、Faster R-CNN&#xff09;均是采用two-stage的方法&#xff08;1.提取region proposal 2.分类边框回归&#xff09;&#xff0c;主要是对region proposal进行识别定位。虽然这类方法检测精度很高&#xff0c;但由于…

Leetcode番外篇——滑动窗口的应用

各位好&#xff0c;博主新建了个公众号《自学编程村》&#xff0c;拉到底部即可看到&#xff0c;有情趣可以关注看看哈哈&#xff0c;关注后还可以加博主wx呦~~~&#xff08;公众号拉到底部就能看到呦&#xff09; 我们刚刚在上一节讲述了TCP的滑动窗口。殊不知&#xff0c;它…

基于RISC-V的Copy-On-Write

为什么需要写时拷贝呢&#xff1f; 当 shell执行指令的时候会 fork()&#xff0c;而这个 fork()出来的进程首先会调用的就是 exec来执行对应的命令&#xff0c;如果我们将 fork()创建的进程对地址空间进行了完整的拷贝,那将是一个巨大的消耗 因为在实际应用中&#xff0c;for…

微信小程序框架-全面详解(学习总结---从入门到深化)

小程序与普通网页开发的区别 小程序的主要开发语言是 JavaScript &#xff0c;小程序的开发同普通的网页 开发相比有很大的相似性。对于前端开发者而言&#xff0c;从网页开发迁移 到小程序的开发成本并不高&#xff0c;但是二者还是多少有些许区别的&#xff0c;例如&#xff…

HCIP实验 4-1:路由引入与路由控制

实验 4-1 路由引入与路由控制 学习目的 掌握OSPF与ISIS相互路由引入的配置方法掌握通过地址前缀列表过滤路由信息的配置方法掌握通过Route-policy过滤路由信息的配置方法 拓扑图 场景 你是你们公司的网络管理员。公司网络中有两部分路由区域&#xff0c;一部分运行OSPF,另外…

【Proteus仿真】【51单片机】厨房天然气泄漏检测报警系统

文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用LCD1602、按键、天然气、烟雾传感器、ADC&#xff0c;报警模块等。 系统运行后&#xff0c;LCD1602显示传感器检测的天然气浓度和烟雾浓度值。 可通…

中国土地交易数据库:300w数据中国土地高频交易数据2000-2022

土地交易是土地在流通过程中多方发生的经济关系&#xff0c;土地交易的行为主要是交换的土地所有权、使用权、租赁权、抵押权等。在我国&#xff0c;土地作为一种重要资源&#xff0c;其收购储备和交易行为都由国家进行统一管理。经过改革开放几十年的探索和实践&#xff0c;土…

手机投影到电脑显示 此设备不支持miracast,因此不能以无线投影到它

在家里使用手机的体感游戏,发现手机屏幕比较小,想要将其投影到自己的笔记本电脑上,这样看得就比较大了。然后我就打开笔记本电脑,操作如下: 如下图: 原文地址:手机投影到电脑显示 此设备不支持miracast&#xff0c;因此不能以无线投影到它 - 廖强的博客 但是结果我们就看到了…

Mysql安装配置和Mysql使用六千字详解!!

目录 课前导读 一、Mysql的安装和配置 二、数据库简介&#xff1a; 1、数据库中典型代表&#xff1a; 2、数据库类型&#xff1a; 3、Mysql简介&#xff1a; 4、客户端和服务器简介&#xff1a; 三、初始MySQL 四、数据库操作 五、表的基本操作 六、表的基础增删查改…