Java项目:111SpringBoot在线论坛

博主主页:Java旅途
简介:分享计算机知识、学习路线、系统源码及教程
文末获取源码

一、项目介绍

在线论坛是由SpringBoot+Mybatis开发的,论坛提供用户注册,整体分为管理员和普通用户两种角色。管理员端可以生产邀请码,用户注册时提供邀请码进行注册,不输入邀请码也可以注册。

管理员功能如下:

  • 邀请码管理
  • 用户查询
  • 用户禁言
  • 用户解禁
  • 网盘管理
  • 发帖
  • 看帖
  • 删帖
  • 回复贴

普通用户功能如下:

  • 注册登录
  • 发帖
  • 回复贴
  • 删除自己的贴子
  • 看帖
  • 网盘管理

二、技术框架

  • 后端:SpringBoot,Mybatis
  • 前端:bootstrap,jquery

三、安装教程

  1. 用idea打开项目
  2. 在idea中配置jdk环境
  3. 配置maven环境并下载依赖
  4. 新建数据库,导入数据库文件
  5. 在application.yml文件中将数据库账号密码改成自己本地的
  6. 网盘上传的资源存储在E盘,如果你的电脑没有E盘,则需要改成其他盘,具体位置在application.yml文件,将文件里面的E:\\file改成你本地的即可。
  7. 启动运行, 管理员账号密码 admin/123456

四、项目截图

image-20230712094509345

image-20230712094552408

image-20230712094607590

image-20230712094617860

五、相关代码

IndexController

package com.zzx.controller;import com.zzx.service.PostService;
import com.zzx.service.UserService;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;import javax.servlet.http.HttpSession;
import java.util.HashMap;import java.util.Map;@Controller
public class IndexController {@Autowiredprivate PostService postService;@Autowiredprivate UserService userService;@RequestMapping(value = "/", method = RequestMethod.GET)public String index(HttpSession session, Model model, @RequestParam(value = "page", required = false) Long page) {Map<String, Long> map = new HashMap<>();map.put("startPage", page == null ? 0 : page - 1);model.addAttribute("page", postService.findPostByPage(map));return "index";}}

NetdiskController

package com.zzx.controller;import com.zzx.config.FileUploadProperteis;
import com.zzx.config.NetdiskConfig;
import com.zzx.model.File;
import com.zzx.model.User;
import com.zzx.service.FileService;
import com.zzx.utils.UUIDUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.*;
import java.net.URLEncoder;
import java.util.Date;@Controller
public class NetdiskController {@Autowiredprivate FileService fileService;@Autowiredprivate FileUploadProperteis fileUploadProperteis;/*** 页面跳转** @return*/@RequestMapping(value = "/netdisk.do", method = RequestMethod.GET)public String netdisk(Model model, HttpSession session) {User user = (User)session.getAttribute("user");if (user != null) {model.addAttribute("fileList", fileService.findFileByUid(user.getUid()));model.addAttribute("size", fileService.getAvailableSizeByUid(user.getUid()) * 1.0 / NetdiskConfig.GB_1);return "netdisk";} elsereturn "redirect:/";}/*** 删除自己上传的文件** @param fileId* @param session* @return*/@RequestMapping(value = "/deletefile/{fileId}", method = RequestMethod.GET)public String deleteFile(@PathVariable Integer fileId, HttpSession session) {User user = (User)session.getAttribute("user");com.zzx.model.File file = fileService.findFileById(fileId);if (user != null && user.getUid() == file.getUser().getUid()) {fileService.delete(fileId);return "redirect:/netdisk.do";}return "redirect:/";}/*** 处理文件上传** @param file* @param session* @return*/@PostMapping(value = "/upload.do")public String upload(MultipartFile file, HttpSession session, Model model) {User user = (User)session.getAttribute("user");if (user == null) {  //未登录return "redirect:/";}if (file.getSize() > fileService.getAvailableSizeByUid(user.getUid())) {model.addAttribute("message", "你的剩余容量不足,充钱才能变得更强");return "error";}if (file.getSize() <= 0 || file.getSize() > NetdiskConfig.GB_1) //文件大小不符合范围{return "redirect:/netdisk.do";}String fileName = file.getOriginalFilename();   //获取文件名if (!fileName.contains("."))          //源文件无格式,避免后续处理出错fileName = fileName + ".unknow";String[] formatNames = fileName.split("\\.");//获取文件格式String formatName = "." + formatNames[formatNames.length - 1];String filePath = fileUploadProperteis.getUploadFolder();// 获取配置E:\\filejava.io.File folder = new java.io.File(filePath);       //检测文件夹是否存在if (!folder.exists())folder.mkdirs();String uuid = UUIDUtils.generateUUID();java.io.File dest = new java.io.File(filePath + "/" + uuid + formatName);try {file.transferTo(dest);File fileInfo = new com.zzx.model.File();fileInfo.setFileName(fileName);fileInfo.setFilePath(fileUploadProperteis.getStaticAccessPath().replaceAll("\\*", "") + uuid + formatName);fileInfo.setFileSize(file.getSize());fileInfo.setUploadTime(new Date());fileInfo.setState(1);fileInfo.setUser(user);fileService.saveFileInfo(fileInfo);return "redirect:/netdisk.do";} catch (IOException e) {e.printStackTrace();return "error";}}@RequestMapping(value = "/download")public void download(Integer fileId, HttpServletResponse response, HttpSession session) throws IOException {Object obj = session.getAttribute("user");if (null == obj)response.sendRedirect("/");User user = (User)obj;try {File file = fileService.findFileById(fileId);if (file.getState() == 0 || file.getUser().getUid() != user.getUid())response.sendRedirect("/error");response.reset();response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getFileName(), "UTF-8"));response.setHeader("Connection", "close");response.setHeader("Content-Type", "application/octet-stream");OutputStream os = response.getOutputStream();java.io.File diskFile = new java.io.File(fileUploadProperteis.getUploadFolder() + "/" + file.getFilePath().split("/")[2]);FileInputStream fis = new FileInputStream(diskFile);response.setHeader("Content-Length", String.valueOf(diskFile.length()));byte[] buf = new byte[(int)diskFile.length()];fis.read(buf);os.write(buf);} catch (IOException e) {e.printStackTrace();response.sendRedirect("/error");}}}

大家点赞、收藏、关注、评论啦 、👇🏻点开下方卡片👇🏻关注后回复 102

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IntelliJ IDEA远程查看修改Ubuntu上AOSP源码

IntelliJ IDEA远程查看修改Ubuntu上的源码 本人操作环境windows10,软件版本IntelliJ IDEA 2023.2.3&#xff0c;虚拟机Ubuntu 22.04.3 LTS 1、Ubuntu系统安装openssh 查看是否安装&#xff1a; ssh -V 如果未安装&#xff1a; sudo apt install openssh-server # 开机自启…

太牛了!微信批量自动加好友你还不知道吗?

你还在一个一个地输入号码或微信号&#xff0c;再手动进行搜索添加好友吗&#xff1f;这样不仅费时费力&#xff0c;还可能会出现错误或是漏加的情况。 今天给大家分享一个支持多个微信号自动批量添加好友的宝藏工具&#xff0c;解放你的双手&#xff0c;帮你节省大量的时间和…

静态网页设计——宠物狗狗网(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; https://www.bilibili.com/video/BV1nk4y1X74M/?vd_source5f425e0074a7f92921f53ab87712357b 使用技术&#xff1a;HTMLCSSJS&#xff08;…

微信小程序使用mqtt开发可以,真机不行

以下可以解决我的问题&#xff0c;请一步一步跟着做&#xff0c;有可能版本不一样就失败了 一、下载mqtt.js 前往蓝奏云 https://wwue.lanzouo.com/iQPdc1k50hpe 下载好后将.txt改为.js 然后放入项目里 二、连接mqtt const mqtt require(../../utils/mqtt.min); let cli…

后端开发——JDBC的学习(三)

本篇继续对JDBC进行总结&#xff1a; ①通过Service层与Dao层实现转账的练习&#xff1b; ②重点&#xff1a;由于每次使用连接就手动创建连接&#xff0c;用完后就销毁&#xff0c;这样会导致资源浪费&#xff0c;因此引入连接池&#xff0c;练习连接池的使用&#xff1b; …

又一券商被点名,网络安全问题不容忽视

12月25日&#xff0c;黑龙江证监局发布公告表示&#xff0c;江海证券存在关于IT治理、网络安全管理的内部决策、执行机制不健全&#xff1b;公司App个人信息保护合规性检测不充分&#xff0c;App强制、频繁、过度索取权限等问题。因此&#xff0c;黑龙江证监局决定对江海证券采…

理解二叉树的遍历(算法村第七关白银挑战)

二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3]解 LeetCode以及面试中提供的方法可能…

windows安装kafka以及kafka管理工具推荐

windows安装 1.下载地址 下载地址 下载最新版本的.tgz文件解压 2.修改配置 修改config目录下的zookeeper.properties中的dataDir属性 server.properties文件中的log.dir属性 3.启动zookeeper 进入到bin\windows\下的用cmd输入zookeeper-server-start.bat ..\..\config\zo…

java发送邮件到qq邮箱

自己的授权码自己记好 引入依赖 <dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version> </dependency> <dependency><groupId>javax.mail</groupId>&…

计算机视觉与美颜SDK:详解人脸美型功能的实现过程

众所周知。人脸美型功能作为美颜技术的一项关键特性&#xff0c;对于用户塑造理想形象具有重要意义。本文将深入探讨计算机视觉与美颜SDK中人脸美型功能的实现过程。 一、关键点定位 关键点定位是人脸美型的关键步骤之一。深度学习方法在关键点定位方面取得了巨大的成功&…

Existing installation is up to date

这个报错是之前安装的docker没有删除干净 解决方法&#xff1a; 打开注册表编辑器 然后再搜索栏&#xff1a;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Docker Desktop 回车 找到Docker Desktop文件夹后&#xff0c;右键删除 重新安装Docker…

ChatGPT到底可以做什么?

1、熟练掌握ChatGPT提示词技巧及各种应用方法&#xff0c;并成为工作中的助手。 2、通过案例掌握ChatGPT撰写、修改论文及工作报告&#xff0c;提供写作能力及优化工作 3、熟练掌握ChatGPT融合相关插件的应用&#xff0c;完成数据分析、编程以及深度学习等相关科研项目。 4、…