【后端开发】Spring MVC阶段总结

文章目录

  • 快捷引入依赖
  • lombok的使用
    • Lombok依赖
    • Lombok使用
    • Lombok注解
  • 三层架构
    • 分层的目的
    • MVC与分层的区别
    • 三层架构
    • 分层的好处
  • 企业命名规范
    • 常见命名命名风格介绍
    • 大驼峰风格
    • 小驼峰风格
    • 包名
  • 常见注解
  • Cookie与Session

快捷引入依赖

这个方法可以快捷引入依赖,但是引入依赖并不一定没有问题,可能需要修改一些。

安装插件EditStarter, 在pom.xml文件中,单击右键,选择Generate(或者快捷键Alt+Insert),点击ok,进入EditStarters的编辑界面,添加对应依赖即可。
在这里插入图片描述

lombok的使用

Lombok依赖

Lombok是⼀个Java⼯具库,通过添加注解的⽅式,简化Java的开发。

使用IDEA创建项目或者通过可视化的方法引入lombok后,我的项目中出现了,编译过程中无法找到对应创建的方法,将下面的配置代码替换为自动添加的代码,实现了lombok的效果。

        <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope></dependency>
			<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>17</source><target>17</target><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version></path></annotationProcessorPaths></configuration></plugin>

Lombok使用

lombok通过⼀些注解的方式,可以帮助我们消除⼀些冗长代码,使代码看起来简洁⼀些。
@Data 注解会帮助自动实现⼀些方法,包含getter/setter,equals,toString等

@Data
public class MessageInfo {private String from;private String to;private String say;//通过一个工具jar包,通过一个注解@Data来实现对get、set方法的撰写
}

具体查看加了@Data注解后手机闲了哪些方法,可以通过大家编译后反编译的文件进行查看,也就是target文件。
在这里插入图片描述

Lombok注解

注解作用
@Getter⾃动添加getter方法
@Setter⾃动添加setter方法
@ToString⾃动添加toString方法
@EqualsAndHashCode⾃动添加equals和hashCode方法
@NoArgsConstructor⾃动添加⽆参构造方法
@AllArgsConstructor⾃动添加全属性构造方法,顺序按照属性的定义顺序
@NonNull属性不能为null
@RequiredArgsConstructor⾃动添加必需属性的构造方法,final+@NonNull 的属性为必需

@Data=@Getter+@Setter+@ToString+@EqualsAndHashCode+@RequiredArgsConstructor+@NoArgsConstructor

三层架构

分层的目的

MVC模式强调数据和视图分离,将数据展示和数据处理分开,通过控制器对两者进⾏组合。
三层架构强调不同维度数据处理的高内聚和低耦合,将交互界面,业务处理和数据库操作的逻辑分开。
但是⼆者的目的是相同的,都是"解耦,分层,代码复用"。

MVC与分层的区别

MVC架构模式由三部分组成,分别是:模型(Model),视图(View)和控制器(Controller)。
三层架构将业务应用划分为:表现层,业务逻辑层,数据访问层。
视图和控制器合起来对应三层架构中的表现层,模型对应三层架构中的业务逻辑层,数据层,以及实体类。

三层架构

  1. 表现层(Controller):接收前端发送来的请求,对请求进行处理,并结果响应。
  2. 业务逻辑层(service):根据请求,对数据进行加工处理,处理具体的业务逻辑。
  3. 数据层(Dao):数据相关的处理,比如从mysql, hbase等获取数据等。
    在这里插入图片描述

在此基础上,还有会个保存实体类的层(model),但是不同的项目有不同表现。

分层的好处

  • 降低层与层之间的依赖,结构更加的明确,利于各层逻辑的复用。
  • 开发人员可以只关注整个结构中的其中某⼀层,极大地降低了维护成本和维护时间。
  • 可以很容易的用新的实现来替换原有层次的实现。
  • 有利于标准化。

企业命名规范

常见命名命名风格介绍

大驼峰:所有单词首字母都需要大写,又叫帕斯卡命名法,比如: UserController
小驼峰:除了第一个单词,其他单词首字母大写,比如: userController
蛇形:用下划线(_)作用单词间的分隔符,一般小写,又叫下划线命名法,比如: user_controller
串形:用短横线(-)作用单词间的分隔符,又叫脊柱命名法,比如: user-controller

大驼峰风格

类名使用大驼峰风格,但以下情形例外:DO/BO/DTO/VO/AO。

小驼峰风格

方法名、参数名、成员变量、局部变量统⼀使用小驼峰风格。

包名

包名统⼀使用小写,点分隔符之间有且仅有⼀个自然语义的英语单词。

常见注解

  • @RequestMapping:路由映射
  • @RequestParam:后端参数重命名
  • @RequestBody:接收JSON类型的参数
  • @PathVariable:接收路径参数
  • @RequestPart:上传文件
  • @ResponseBody:返回数据
  • @CookieValue:从Cookie中获取值
  • @SessionAttribute:从Session中获取值
  • @RequestHeader:从Header中获取值
  • @Controller:定义一个控制器,Spring框架启动时加载,把这个对象交给Spring管理,默认返回视图
  • @RestController:@ResponseBody+ @Controller 返回数据

Cookie与Session

Cookie和Session都是会话机制,Cookie是客户端机制,Session是服务端机制。二者通过Sessionld来联。SpringMVC内置HttpServletRequest,HttpServletResponse两个对象,需要使用时,直接在方法中添加对应参数即可,Cookie和Session可以从HttpServletRequest中来获取,也可以直接使用HttpServletResponse设置Http响应状态码。

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

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

相关文章

FastAPI依赖注入系统及调试技巧

title: FastAPI依赖注入系统及调试技巧 date: 2025/04/11 15:00:50 updated: 2025/04/11 15:00:50 author: cmdragon excerpt: FastAPI的依赖注入系统采用树状结构管理依赖关系,自动解析并执行依赖项。复杂依赖关系可能导致循环依赖、性能问题、逻辑错误和调试困难。使用Fa…

DeepSeek赋能!企业私有化知识库3大搭建方案拆解

最近公司要搭建一个私有化的知识库&#xff0c;通过对比分析&#xff0c;发现企业级私有化知识库搭建有多种方案选型&#xff0c;今天就分享下这几种企业私有化知识库搭建方案。 一、为何选择本地部署&#xff1f; 这个分个人还是企业&#xff0c;如果个人用&#xff0c;其实各…

对称加密与非对称加密与消息摘要算法保证https的数据交互的完整性和保密性

一、对称加密与非对称加密的作用 1. 对称加密 作用&#xff1a; 保密性&#xff1a;对称加密使用相同的密钥对数据进行加密和解密&#xff0c;确保数据在传输过程中不被窃听。效率&#xff1a;对称加密算法&#xff08;如AES&#xff09;计算速度快&#xff0c;适合加密大量数…

程序化广告行业(76/89):行业融资全景剖析与代码应用拓展

程序化广告行业&#xff08;76/89&#xff09;&#xff1a;行业融资全景剖析与代码应用拓展 大家好&#xff01;在之前的文章里&#xff0c;咱们一起了解了程序化广告行业的发展趋势以及PC端和移动端投放的差异。今天&#xff0c;咱们接着深入学习&#xff0c;这次聚焦在程序化…

两个树莓派如何通过wifi direct传输视频并显示

这里写自定义目录标题 在两台设备上安装必要软件Wi-Fi Direct接收端IP&#xff08;自动发现或静态设置&#xff09;设置摄像头参数显示初始化网络设置 系统架构概述 发送端树莓派&#xff1a;捕获视频&#xff08;摄像头或视频文件&#xff09;→ 编码 → 通过Wi-Fi Direct传输…

ubuntu22.04安装ROS2 humble

参考&#xff1a; https://zhuanlan.zhihu.com/p/702727186 前言&#xff1a; 笔记本安装了ubuntu20.04安装ros一直失败&#xff0c;于是将系统升级为ununut22.04&#xff0c;然后安装ros&#xff0c;根据上面的教程&#xff0c;目前看来是有可能成功的。 系统升级为ununut…

Python 类型转换详解

文章目录 Python 类型转换详解基本类型转换函数1. 转换为整数 (int())2. 转换为浮点数 (float())3. 转换为字符串 (str())4. 转换为布尔值 (bool()) 容器类型转换1. 转换为列表 (list())2. 转换为元组 (tuple())3. 转换为集合 (set())4. 转换为字典 (dict()) 特殊类型转换1. AS…

【Python Requests 库详解】

目录 简介一、安装与导入安装导入 二、发送 HTTP 请求1. GET 请求基本请求URL 参数 2. POST 请求表单数据提交JSON 数据提交文件上传 3. 其他方法PUT 请求示例DELETE 请求示例 三、处理响应1. 响应内容解析文本内容处理二进制内容处理JSON 数据处理 2. 响应状态与头信息状态码检…

【Python 开源】你的 Windows 关机助手——PyQt5 版定时关机工具

&#x1f5a5;️ 你的 Windows 关机助手——PyQt5 版定时关机工具 相关资源文件已经打包成EXE文件&#xff0c;可双击直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Python相关程序案例&#xff0c;秉着开源精神的…

【MySQL】002.MySQL数据库基础

文章目录 数据库基础1.1 什么是数据库1.2 基本使用创建数据库创建数据表表中插入数据查询表中的数据 1.3 主流数据库1.4 服务器&#xff0c;数据库&#xff0c;表关系1.5 MySQL架构1.6 SQL分类1.7 存储引擎1.7.1 存储引擎1.7.2 查看存储引擎1.7.3 存储引擎对比 前言&#xff1a…

滑动窗口(3)—无重复字符的最长子串

文章目录 题目解析方法一&#xff1a;滑动窗口解法二&#xff08;暴⼒求解&#xff09;&#xff08;不会超时&#xff0c;可以通过&#xff09;&#xff1a;附Java代码 力扣题目&#xff1a;无重复字符的最长子串 题目解析 方法一&#xff1a;滑动窗口 思路和算法 我们先用一…

C++字符串操作详解

引言 字符串处理是编程中最常见的任务之一&#xff0c;而在C中&#xff0c;我们有多种处理字符串的方式。本文将详细介绍C中的字符串操作&#xff0c;包括C风格字符串和C的string类。无论你是C新手还是想巩固基础的老手&#xff0c;这篇文章都能帮你梳理字符串处理的关键知识点…

Vulhub-DC-4靶场通关攻略

下载地址&#xff1a;https://www.vulnhub.com/entry/dc-4,313/ 扫描IP地址 arp-sacn -l扫描端口&#xff0c;开启了80和22端口 nmap -p- 192.168.112.140访问80端口 扫描目录&#xff0c;并没有发现敏感目录 尝试爆破 爆破成功&#xff0c;用户名admin 密码happy 登录成功 …

OfficePlus去掉PDF文件右键菜单里的PDF转换

今天在吾爱破解论坛看到一个求助帖&#xff0c;说是OfficePlus&#xff0c;安装后&#xff0c;PDF文件的右键菜单里多了PDF转换&#xff0c;想去掉&#xff0c;不知道怎么弄。底下的回复基本都是百度复制或者AI搜索出的答案&#xff0c;大致就是找注册表里CLASSID下的菜单栏相关…

大模型本地部署系列(3) Ollama部署QwQ[阿里云通义千问]

大家好&#xff0c;我是AI研究者&#xff0c; 今天教大家部署 一个阿里云通义千问大模型。 QwQ大模型简介 QwQ是由阿里云通义千问&#xff08;Qwen&#xff09;团队推出的开源推理大模型&#xff0c;专注于提升AI在数学、编程和复杂逻辑推理方面的能力。其核心特点包括&#x…

微信小程序学习实录12:掌握大数据量轨迹展示的MySQL结构设计

获取经纬度信息后&#xff0c;mysql建立数据表po_trajectory&#xff0c;字段包含tra_id、longitude、latitude、tra_time和openid。 为微信小程序创建的 po_trajectory 数据表&#xff0c;字段包含 tra_id、longitude、latitude、tra_time 和 openid&#xff0c;从结构设计上…

计算机系统---性能指标(3)续航与散热

计算机电池续航的性能指标 一、电池基础物理指标 电池容量&#xff08;核心指标&#xff09; 单位&#xff1a; 毫安时&#xff08;mAh&#xff09;&#xff1a;常见于手机/平板&#xff0c;反映电池存储电荷量&#xff0c;需结合电压计算实际能量&#xff08;如3.7V电池&…

贪心算法之最小生成树问题

1. 贪心算法的基本思想 贪心算法在每一步都选择局部最优的边&#xff0c;希望最终得到整体最优的生成树。常见的两种 MST 算法为 Kruskal 算法 和 Prim 算法。这两者均满足贪心选择性质和最优子结构性质&#xff0c;即&#xff1a; 贪心选择性质&#xff1a;局部最优选择&…

LeetCode hot 100—编辑距离

题目 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符删除一个字符替换一个字符 示例 示例 1&#xff1a; 输入&#xff1a;word1 "horse", word2 &q…

2.3 Spark运行架构与流程

Spark运行架构与流程包括几个核心概念&#xff1a;Driver负责提交应用并初始化作业&#xff0c;Executor在工作节点上执行任务&#xff0c;作业是一系列计算任务&#xff0c;任务是作业的基本执行单元&#xff0c;阶段是一组并行任务。Spark支持多种运行模式&#xff0c;包括单…