一个简单并完整的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;

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

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

相关文章

LLM的基础模型4:初识Embeddings

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提…

软件安全测评之漏洞扫描、代码审计详情介绍

在当今数字化时代,软件已渗透到我们生活的方方面面。然而,与软件的广泛应用相伴随的是各种安全威胁的出现。为了保障用户和企业的信息安全,软件安全测评变得至关重要。而漏洞扫描和代码审计作为安全测评中的重要过程,卓码测评小编…

【线性代数】SVDPCA

用最直观的方式告诉你:什么是主成分分析PCA_哔哩哔哩_bilibili 奇异值分解singular value decomposition,SVD principal component analysis,PCA 降维操作 pca就是降维后使得信息损失最小 投影在坐标轴上的点越分散,信息保留越多 pca的实现…

2-异常-FileNotFoundException(三种不同的报错)

2-异常-FileNotFoundException(三种不同的报错) 更多内容欢迎关注我(持续更新中,欢迎Star✨) Github:CodeZeng1998/Java-Developer-Work-Note 技术公众号:CodeZeng1998(纯纯技术文) 生活公众…

关于认证协议

本地用户认证 本地认证的意思就是,我们的电脑上存储着自己的账号密码,无论电脑是否联网,只要能开机,就可以输入账号密码登录到电脑中,工作组就是采用本地认证 本地认证流程 winlogon.exe -> 接收用户输入 -> …

【异常分析:四分位距与3σ原则】

文章目录 前言四分位距(IQR)3σ原则使用步骤计算四分位距应用3σ原则 代码 前言 异常分析的目标是识别数据中的异常值,这些异常值可能是由于错误的记录、设备故障或者其他未知原因导致的。四分位距(interquartile range, IQR&…

H5进度条样式,自定义进度条

进度条样式预览 实现代码&#xff1a; <view class"mainPro"><view class"proBg"><view class"proDetail" :style"{ width: ${schedule}% }"></view></view><view class"proTxt">完成进…

【StableDiffusion】2024.6.4 亲测成功,无魔法 Civitai 镜像,国内下载 Civitai 模型的方法

一、废话不说&#xff0c;直接开始 废话&#xff1a;请注意&#xff0c;这个插件不是万能的&#xff0c;有一些模型无法下载&#xff0c;大概能下载 70% 左右的模型 1.github下载插件 https://github.com/tzwm/sd-webui-model-downloader-cn/tree/main 这个步骤不用我多说了…

Spring boot集成通义千问大模型实现智能问答

Spring boot集成通义千问大模型实现智能问答 背景 我在用idea进行java开发时发现了通义灵码这款免费的智能代码补全插件&#xff0c;用了一段时间了&#xff0c;感觉很不错。就想着在自己的项目中也能集成通义千问大模型实现智能回答&#xff0c;毕竟对接openai需要解决网络问…

SQL注入-时间盲注

SQL时间盲注&#xff08;Time-based Blind SQL Injection&#xff09;&#xff0c;又叫延时注入&#xff0c;是一种SQL注入攻击技术&#xff0c;用于在无法直接获取查询结果或查看响应内容变化的情况下&#xff0c;通过引入时间延迟来推断数据库的信息&#xff1b;时间盲注依赖…

什么是真正的高效阅读,高效阅读的方法和技巧

一、教程描述 查理芒格说他认识的厉害的人没有一个不读书的&#xff0c;为什么我们也读书却成不了厉害的那个人呢&#xff1f;所以这绝对不是书的问题&#xff0c;而是人的问题。阅读应该带有目的性&#xff0c;要帮我们解决实际问题。如果读一本书只是读完它&#xff0c;那读…

如何理解与学习数学分析——第一部分——数学分析概观

第1 部分&#xff1a;数学分析概观(Studying Analysis) 1. 数学分析之面目(What is Analysis like?) 本章说明了分析中的定义、定理和证明。 它介绍了一些符号&#xff0c;并解释了如何使用数学分析中的这些数学符号和数学词汇、以及应该把它们读成什么。它指出了这种类型的…

CANDela studio的State

State主要用来查看&#xff0c;点击State Groups&#xff0c;可以看到session和security下面有多少个会话和security level&#xff0c;所以删除和新建都不能在这里操作。 Dependencies没有安装插件&#xff0c;看不到图形不要紧&#xff0c;点击下面那个图标&#xff0c;就能编…

【好物推荐】夏日肌肤守护者:护肤皂

随着夏日的到来&#xff0c;高温、潮湿和紫外线成为了肌肤的三大挑战。在这个季节里&#xff0c;护肤不仅仅是为了美观&#xff0c;更是对肌肤健康的一种保护。在众多护肤产品中&#xff0c;护肤皂因其清洁力强、使用方便等特点&#xff0c;成为了夏季护肤的得力助手。今天&…

【Java基础】字符集

【Java基础】字符集 0. 预备知识1.计算机中的存储规则2. Unicode、UTF-83. 为什么出现乱码4. 如何防止产生乱码 0. 预备知识 字符集&#xff08;Character Set&#xff09;是多个字符的集合&#xff0c;它规定了字符在计算机中的编码方式。 字符集的定义与作用 字符集是各种…

图论第6天

提高效率!!!两道题看并查集 841.钥匙和房间 忘了把visited 加引用了&#xff1a;& class Solution { public:bool canVisitAllRooms(vector<vector<int>>& rooms) {vector<int>visited(rooms.size(),false);dfs(rooms,visited,0);for(int i 0;i …

11 - 员工奖金(高频 SQL 50 题基础版)

11- 员工奖金 -- join和left join的区别 -- 如果是join则右侧的数据有的就插&#xff0c;没的就啥也不干&#xff0c;交白卷&#xff0c;也不留null -- 但是left join让右侧数据在没有对应数据时补上了null select e.name,b.bonus from Employee e left join bonus b on e.empI…

SpringBoot 统一返回格式

目录 一、为什么要统一返回&#xff1f; 二、全局异常处理代码 三、统一返回对象代码 四、使用方法 五、结果展示 一、为什么要统一返回&#xff1f; 在Spring Boot应用中&#xff0c;为了保持API接口的响应格式统一&#xff0c;通常会采用全局异常处理和自定义返回对象的方…

JS 中的DOM 操作

目录 概念Node接口NodeList接口,HTMLCollection接口ParentNode接口,ChildNode接口Document节点Element节点属性的操作Text节点和DocumentFragment节点CSS操作Mutation Observer API概念 D

Java进制转换

进制介绍 二进制&#xff1a;0B开头&#xff0c;0-1 八进制&#xff1a;0开头&#xff0c;0-7 十进制&#xff1a;0-9 十六进制&#xff1a;0x开头&#xff0c;0-9和A-F public class Binary{public static void main(String[] args){//二进制 10int n10B1010//十进制 1010int…