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环境中的资源

相关推荐
莫寒清2 小时前
Spring MVC:MultipartFile 详解
java·spring·mvc
JavaLearnerZGQ2 小时前
Spring SseEmitter 全面解析与使用示例
java·后端·spring
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧2 小时前
Jsoup: 一款Java的HTML解析器
java·开发语言·前端·后端·缓存·html
Protein_zmm2 小时前
【算法基础】位运算、离散化、区间合并
java·算法·spring
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧2 小时前
JSP, MVC, El, JSTL, MAC
java·开发语言·mvc·mac·jsp
黎雁·泠崖2 小时前
Java 数据结构与算法:时间空间复杂度 从入门到实战全解
java·开发语言
Coder_Boy_2 小时前
技术交流总结:分布式、数据库、Spring及SpringBoot核心知识点梳理(实现参考)
数据库·spring boot·分布式·spring·架构
想不明白的过度思考者2 小时前
Spring Boot 实战:MyBatis 操作数据库(上)
java·数据库·spring boot·mysql·mybatis
wuqingshun3141592 小时前
简述双亲委派机制以及其优点
java·开发语言·jvm