Spring MVC 项目结构学习笔记

一、项目整体架构

本项目采用 Spring Boot + Spring MVC + MyBatis 的三层架构设计:

Controller(控制层)→ Service(业务层)→ Mapper(数据层)→ 数据库

二、各包功能说明

  1. controller(控制层)

作用:负责接收前端请求,调用业务层处理,并返回结果。

特点:不写业务逻辑,不操作数据库。

示例:DeptController、EmpController

  1. service(业务层)

作用:处理核心业务逻辑。

组成:接口 + 实现类(impl)。

示例:DeptService、DeptServiceImpl

  1. mapper(持久层)

作用:与数据库交互,执行 SQL 语句。

技术:MyBatis

示例:DeptMapper、EmpMapper

  1. pojo(实体类层)

作用:封装数据模型。

组成:

  • Dept / Emp:对应数据库表

  • PageBean:分页封装

  • Result:统一返回结果

  1. Application(启动类)

作用:项目入口,启动 Spring Boot 应用。

示例:TiliasnewApplication

三、系统执行流程

  1. 浏览器发送请求

  2. DispatcherServlet 接收请求

  3. Controller 接收并处理

  4. Service 执行业务逻辑

  5. Mapper 操作数据库

  6. 返回结果给前端

流程:

前端 → Controller → Service → Mapper → DB → 返回

四、分层架构优势

  1. 解耦:降低模块之间依赖

  2. 易维护:修改互不影响

  3. 易扩展:方便增加功能

  4. 易测试:支持分层测试

五、开发规范建议

  1. Controller 不写业务

  2. Service 不写 SQL

  3. Mapper 专注数据库操作

  4. 使用 Result 统一返回格式

  5. 使用 PageBean 处理分页

六、总结

Spring MVC 架构采用前端控制器模式,结合三层架构设计,使系统具有良好的扩展性和维护性,是企业级开发的标准模式。

注解:

1.@Autowired:让 Spring 自动帮你创建对象 + 注入依赖,你不用自己 new

以前(没 Spring):

|----------------------------------------------|
| DeptService service = new DeptServiceImpl(); |

现在(有 Spring):

|---------------------------------------------|
| @Autowired private DeptService deptService; |

2.@Service = 把"业务类"交给 Spring 管理,变成 Bean

|------------------------------------------|
| @Service public class DeptServiceImpl {} |

等价于:告诉 Spring:这个类是业务层,请你创建对象、管理它、允许别人 @Autowired 注入。"

|---------------------------------------|
| @Service → 造 Bean @Autowired → 用 Bean |

3.@RequestParam的属性defaultValue可以来设置参数的默认值

4.@RequestBody:把前端发来的 JSON 数据,转换成 Java 对象。

5.@Slf4j:自动帮你生成一个日志对象 log,让你直接打日志。

6.@RestController:这个类专门写接口,返回 JSON,不跳页面。

PageHelper分页插件

1.引入依赖:pagehelper-spring-boot-starter

本地存储:

yml:

基本语法:

大小写敏感

数值前面必须有空格作为分隔符

用缩进表示层级关系,必须用空格

空格数目不重要,同层级对齐即可

#表示一行注释

数据格式:

对象/Map集合:

数组/List/Set集合:

JWT:

全称:json web token

定义一种简洁的,自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的

场景:登录认证:登陆成功后,生成令牌,后续每个请求都要携带JWT令牌,系统在每次请求处理之前,先校验令牌,通过后在处理

过滤器(Filter)

概念:是javaweb'三大组件Servlet,Filter,Listener之一,可以把对资源的请求拦截下来,从而实现一些特殊的功能,一般完成一些通用操作,比如登录校验、统一编码处理、敏感字符处理等

过滤器链:

介绍:一个web应用中,可以配置多个过滤器,这多个过滤器就形成了一个过滤器链

拦截器:

是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行

拦截请求,在指定多个方法调用前后,根据业务需要执行预先设定的代码

过滤器与拦截器:

接口规范不同:过滤器需要实现Filter接口,拦截需要实现HandleInterceptor接口

拦截范围不同:过滤器会拦截所有的资源,而interceptor之会拦截spring环境中的资源

相关推荐
2601_962055971 小时前
跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围
spring boot·后端·tomcat
EXI-小洲1 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
2601_961901702 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
何以解忧,唯有..3 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
QQ_21696290963 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
前端 贾公子5 小时前
第09章:上下文与记忆 (2)
java·服务器·前端
2601_962203515 小时前
Java进阶07集合(续)
java·开发语言
郑州光合科技余经理5 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
专注仿真5 小时前
Spring AI 实现智能对话系统项目指南
数据结构·spring·机器学习
roman_日积跬步-终至千里5 小时前
【数据治理(6)】DataOps 不是调度工具,而是让数据产品长期可信的运行机制
java·服务器·网络