当前位置: 首页 > news >正文

一个简单并完整的springboot项目

一个简单并完整的springboot项目

项目地址1:https://download.csdn.net/download/qq_38234785/89398614
项目地址2:https://mbd.pub/o/buranxin/work

一、接口

curl --location --request POST 'http://localhost:8080/api/test' \
--header 'Cookie: USER_INFO=123' \
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
--header 'Accept: */*' \
--header 'Host: localhost:8080' \
--header 'Connection: keep-alive' \
--header 'Content-Type: multipart/form-data; boundary=--------------------------939904328035848353273608' \
--form 'file=@"C:\\Users\\slh\\Downloads\\123.py"'

二、项目概述

2.0 项目结构

│  pom.xml
│  README.md
├─src
│  ├─main
│  │  ├─java
│  │  │  └─org
│  │  │      └─example
│  │  │          │  AdminApplication.java
│  │  │          │
│  │  │          ├─bean
│  │  │          │  ├─dto
│  │  │          │  │      FileCheckResult.java
│  │  │          │  │
│  │  │          │  ├─model
│  │  │          │  │      UserInfo.java
│  │  │          │  │
│  │  │          │  └─req
│  │  │          │          Result.java
│  │  │          │
│  │  │          ├─checkTask
│  │  │          │      CheckTask.java
│  │  │          │      LouDongCheckTask.java
│  │  │          │      YuFaCheckTask.java
│  │  │          │
│  │  │          ├─config
│  │  │          │      AllConfig.java
│  │  │          │      WebMvcConfig.java
│  │  │          │
│  │  │          ├─constant
│  │  │          │      CommonConstant.java
│  │  │          │
│  │  │          ├─context
│  │  │          │      Context.java
│  │  │          │
│  │  │          ├─contoller
│  │  │          │      PythonController.java
│  │  │          │
│  │  │          ├─dao
│  │  │          │  ├─bean
│  │  │          │  │      FileCheck.java
│  │  │          │  │
│  │  │          │  └─mapper
│  │  │          │          FileCheckMapper.java
│  │  │          │
│  │  │          ├─enums
│  │  │          │      CheckStasusEnum.java
│  │  │          │      DeleteEnum.java
│  │  │          │      ErrorEnums.java
│  │  │          │      ResultCodeEnum.java
│  │  │          │
│  │  │          ├─exception
│  │  │          │      PythonException.java
│  │  │          │      PythonExceptionHandler.java
│  │  │          │
│  │  │          ├─interceptor
│  │  │          │      RequestInterceptor.java
│  │  │          │
│  │  │          ├─service
│  │  │          │  │  FileCheckService.java
│  │  │          │  │  PythonCheckService.java
│  │  │          │  │
│  │  │          │  └─Impl
│  │  │          │          FileCkeckServiceImpl.java
│  │  │          │          PythonCheckServiceImpl.java
│  │  │          │
│  │  │          └─utils
│  │  │                  AesUtil.java
│  │  │                  CookieUtils.java
│  │  │                  MyFileUtil.java
│  │  │
│  │  └─resources
│  │          application-dev.yml
│  │          application.yml
│  │          db.sql
根目录
  • pom.xml: Maven项目的配置文件,用于管理项目的依赖、插件和构建配置。
  • README.md: 项目的说明文件,通常包含项目的简介、安装指南、使用说明等。
src/main/java/org/example
  • AdminApplication.java: Spring Boot应用的启动类,包含main方法,用于启动Spring Boot应用。
src/main/java/org/example/bean
  • dto/FileCheckResult.java: 数据传输对象(DTO),用于封装文件检测结果。
  • model/UserInfo.java: 用户信息的模型类。
  • req/Result.java: 通用的响应结果类,可能包含状态码、消息和数据等信息。
src/main/java/org/example/checkTask
  • 包含不同的文件检测任务类,如CheckTask.java(基类)、LouDongCheckTask.javaYuFaCheckTask.java等,这些类负责执行具体的文件检测逻辑。
src/main/java/org/example/config
  • AllConfig.java: 可能包含项目的全局配置或自定义配置。
  • WebMvcConfig.java: Spring MVC的配置类,用于配置拦截器、视图解析器、静态资源处理等。
src/main/java/org/example/constant
  • CommonConstant.java: 包含项目中使用的常量定义。
src/main/java/org/example/context
  • Context.java: 可能是用于存储和管理上下文信息的类,如用户登录信息等。
src/main/java/org/example/controller
  • PythonController.java: 控制器类,负责处理与文件上传、检测等相关的HTTP请求。
src/main/java/org/example/dao
  • bean/FileCheck.java: 与文件检测相关的数据模型。
  • mapper/FileCheckMapper.java: MyBatis的Mapper接口,用于数据库操作。
src/main/java/org/example/enums
  • 包含多个枚举类,如CheckStasusEnum.java(检测状态枚举)、DeleteEnum.java(删除状态枚举)、ErrorEnums.java(错误类型枚举)和ResultCodeEnum.java(响应结果代码枚举)等。
src/main/java/org/example/exception
  • PythonException.java: 自定义异常类。
  • PythonExceptionHandler.java: 全局异常处理器,用于处理项目中抛出的自定义异常。
src/main/java/org/example/interceptor
  • RequestInterceptor.java: 请求拦截器,用于在请求处理之前或之后执行特定的逻辑,如从请求中获取cookie中的用户登录信息并存储在ThreadLocal中。
src/main/java/org/example/service
  • FileCheckService.javaPythonCheckService.java: 服务接口,定义文件检测相关的业务逻辑。
  • Impl/FileCkeckServiceImpl.javaImpl/PythonCheckServiceImpl.java: 服务接口的实现类。
src/main/java/org/example/utils
  • 包含多个工具类,如AesUtil.java(AES加密工具类)、CookieUtils.java(Cookie处理工具类)和MyFileUtil.java(文件操作工具类)等。
src/main/resources
  • application-dev.ymlapplication.yml: Spring Boot的配置文件,分别用于开发环境和默认环境的配置。
  • db.sql: 可能包含数据库的初始化脚本或数据迁移脚本。

角色和功能总结

  • controller: 负责接收和处理HTTP请求,调用服务层进行业务处理,并返回响应结果。
  • service: 实现具体的业务逻辑,如文件检测、异常处理等。
  • dao: 数据访问层,使用MyBatis等ORM框架与数据库进行交互。
  • utils: 提供通用的工具方法,如加密、文件操作等。
  • config: 配置Spring Boot应用和MVC的相关设置。
  • interceptor: 实现请求拦截器,用于在请求处理前后执行特定逻辑。
  • exception: 定义和处理项目中可能出现的自定义异常。

2.1 技术架构

springboot + mysql + mybatisplus

2.2 数据库设计

需要考虑数据表的通用结构,主键索引合组合索引的设计

CREATE TABLE `file_check` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增索引',`user_id` bigint unsigned DEFAULT '0' COMMENT '用户ID',`file_name` varchar(64) NOT NULL DEFAULT '' COMMENT '文件名',`result` text NOT NULL COMMENT '校验结果',`status` tinyint NOT NULL DEFAULT '0' COMMENT '0-正常;1-异常',`is_delete` bigint unsigned NOT NULL DEFAULT '0' COMMENT '逻辑删除',`create_time` bigint NOT NULL DEFAULT '0' COMMENT '创建时间',`update_time` bigint NOT NULL DEFAULT '0' COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_user_id_file_name` (`user_id`,`file_name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='文件校验表';

2.3 架构

  1. 从请求中获取cookie中的用户登录信息,在拦截器中存储在Threadlocal中;
  2. 设计接口,对接口上传文件检验(大小、文件名称);
  3. 建立不同task对文件进行检测,将检测结果整理为Object类型;
  4. 如果返回结构中是异常的情况则删除文件并且存储数据库,否则返回正常;
  5. dao层是处理与数据库存储的接口;

2.4 注意

  1. 设置全局配置;
  2. 全局异常枚举、全局异常处理;
  3. 拦截器处理用户信息;
  4. 抽象出静态单元utills;
  5. 设置不同环境的启动yml;

相关文章:

一个简单并完整的springboot项目

一个简单并完整的springboot项目 项目地址1:https://download.csdn.net/download/qq_38234785/89398614 项目地址2:https://mbd.pub/o/buranxin/work 一、接口 curl --location --request POST http://localhost:8080/api/test \ --header Cookie: USER…...

SASS基础知识

什么是SASS 1. SASS与CSS的关系 SASS(Syntactically Awesome Stylesheets)是一种强大的CSS扩展语言,它允许开发者使用变量、嵌套规则、混合宏和更多功能,这些在纯CSS中是不可能做到的。SASS旨在简化CSS代码的维护,并…...

基于C#开发web网页管理系统模板流程-主界面管理员入库和出库功能完善

前言 紧接上篇->基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善-CSDN博客 本篇将完善主界面的管理员入库和出库功能,同样的,管理员入库和出库的设计套路适用于动态表的录入和编辑 首先还是介绍一下本项目将要实现的功能 &#xf…...

【MATLAB】概述1

非 ~ 注释 % 定义 >> 数组 赋值 赋值:>> x1 函数 数组 x[x1,x2] 行向量(,or ) x[x1;x2] 列向量 x. 转置等间隔向量 1-10 向量:>>xlinspace(1,10,10) 矩阵 矩阵:>>A[1,2,3;4,5,6;7,8,9] …...

容器中运行ip addr提示bash: ip: command not found【笔记】

容器中运行ip addr提示bash: ip: command not found 原因没有安装ip命令。 rootdocker-desktop:/# ip addr bash: ip: command not found rootdocker-desktop:/# apt-get install -y iproute2...

香橙派OrangePi AIpro,助力国产AIoT迈向新的台阶!

前言:很高兴受邀CSDN与OrangePi官方组织的测评活动,本次测评是一块基于AI边缘计算的香橙派开发板OrangePi AIpro。这是 香橙派 联合 华为昇腾 合作精心打造的新一代边缘AI计算产品,于2023年12月初发布,提供 8/20TOPS澎湃算力[1]&a…...

VSCode界面Outline只显示类名和函数名,隐藏变量名

参考链接 https://blog.csdn.net/Zjhao666/article/details/120523879https://blog.csdn.net/Williamcsj/article/details/122401996 VSCode中界面左下角的Outline能够方便快速跳转到文件的某个类或函数,但默认同时显示变量,导致找某个函数时很不方便。…...

运维开发详解:现代IT环境的核心角色

随着信息技术的快速发展和互联网应用的广泛普及,运维开发(DevOps)在现代IT环境中扮演着越来越重要的角色。本文将详细探讨运维开发的概念、历史背景、关键实践、工具和未来趋势,旨在为读者提供全面的理解。 什么是运维开发&#…...

Docker 容器中运行Certbot获取和管理 SSL 证书

如果你在 Docker 容器中运行 Nginx 并希望使用 Certbot 获取和管理 SSL 证书,可以使用 Certbot 的官方 Docker 镜像来完成这项工作。以下是使用 Docker 和 Certbot 获取 SSL 证书并配置 Nginx 的详细步骤: 1. 拉取 Certbot Docker 镜像 首先&#xff0…...

FL Studio21.2.8中文版水果音乐制作的革新之旅!

在数字化浪潮的推动下,音乐制作领域经历了翻天覆地的变化。从最初的模拟技术到如今的全数字化处理,音乐制作的门槛被大幅降低,越来越多的音乐爱好者和专业人士开始尝试自行创作和编辑音乐。在这个过程中,各种专业音乐制作软件成为…...

03-JavaScript 中的相等判断与隐式类型转换

深入理解 JavaScript 中的相等判断与隐式类型转换 笔记分享 JavaScript 是一门动态类型语言,这意味着变量的类型是在运行时确定的。这种灵活性虽然提供了便利,但也带来了相应的复杂性,特别是在判断相等性时。本文将深入探讨 JavaScript 中相…...

Linux 命令:head

1. 写在前面 本文主要介绍 Linux head 命令:可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。 关注 公众号 获取最新博文: 滑翔的纸飞机 2. head 命令 head 命令的…...

系统安全及其应用

系统安全及其应用 部署服务器的初始化步骤: 1、配置IP地址,网关,DNS解析 2、安装源,外网(在线即可yum) 内网(只能用源码包编译安装) 3、磁盘分区 lvm raid 4、系统权限配置和基础安…...

韩文图片文字识别,这几款软件轻松驾驭韩语文本

在当今信息爆炸的时代,跨语言交流已成为日常生活和工作中的常态。对于需要处理韩文文本的用户来说,韩文图片文字识别技术无疑是一大福音。今天,就为大家介绍几款优秀的韩文图片文字识别软件,让你轻松驾驭韩语文本,提升…...

登录安全分析报告:小米官网注册

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …...

LVS精益价值管理系统 LVS.Web.ashx SQL注入漏洞复现

0x01 产品简介 LVS精益价值管理系统是杭州吉拉科技有限公司研发的一款专注于企业精益化管理和价值流优化的解决方案。该系统通过集成先进的数据分析工具、可视化的价值流映射技术和灵活的流程改善机制,帮助企业实现高效、低耗、高质量的生产和服务。 0x02 漏洞概述 LVS精益…...

【JavaScript脚本宇宙】图表库大盘点:选择最适合你的工具

掌握数据可视化:详解JavaScript图表库 前言 本篇文章将详细解析六种不同的JavaScript图表库。这些库各有特色,由简单到高级,应用广泛,无论你是初学者还是专业开发者,都能在其中找到适合自己的工具。 欢迎订阅专栏&am…...

【Lua】IntelliJ IDEA 写注释或选中变量单词时偶尔会选中相邻的内容或下一行内容

例如: --UI代码local a 0 当你想在a变量上方加一行 --UI代码注释时,会发现敲打daima中文拼音时(还未按回车)就会选中当前行以及下一行前半部分。 打完按空格就会变成这样子! 原因是因为开启了英文检测,需要关掉它。 …...

安全风险 - 组件导出风险

在安全审查中关于组件导出风险是一种常见问题,不同组件都有可能遇到这种问题,而且从一定角度来看的话,如果涉及到三方业务,基本处于无法解决的场景,所以我们需要说明为何无法避免这种风险 组件导出风险能不能规避&…...

【HarmonyOS】应用振动效果实现

一、问题背景: 应用在强提醒场景下,一般会有马达振动的效果,提示用户注意力的关注。 比如消息提醒,扫码提示,删除键确认提示等。 针对高定制化或者固定的振动方式,我们需要有不同的方案实现,马…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言:多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层&#xf…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...