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

文章目录

快捷引入依赖

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

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

lombok的使用

Lombok依赖

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

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

xml 复制代码
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version>
            <scope>provided</scope>
        </dependency>
xml 复制代码
			<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等

java 复制代码
@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响应状态码。

相关推荐
开心-开心急了3 分钟前
PySide6 使用搜索引擎搜索 多类实现 更新1次
python·pyqt·pyside
万粉变现经纪人8 分钟前
如何解决 pip install -r requirements.txt 子目录可编辑安装缺少 pyproject.toml 问题
开发语言·python·scrapy·beautifulsoup·scikit-learn·matplotlib·pip
Blossom.11813 分钟前
把 AI“缝”进布里:生成式编织神经网络让布料自带摄像头
人工智能·python·单片机·深度学习·神经网络·目标检测·机器学习
哞哞不熬夜22 分钟前
JavaEE--SpringIoC
java·开发语言·spring boot·spring·java-ee·maven
滑水滑成滑头23 分钟前
**点云处理:发散创新,探索前沿技术**随着科技的飞速发展,点云处理技术在计算机视觉、自动驾驶、虚拟现实等领域的应用愈发广
java·python·科技·计算机视觉·自动驾驶
gc_22991 小时前
学习Python中Selenium模块的基本用法(19:操作下拉框)
python·selenium
我的xiaodoujiao1 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 19--测试框架Pytest基础 3--前后置操作应用
python·学习·测试工具·pytest
计算衎1 小时前
基于Python实现CANoe和UDE交互通信工具实现,CAPL脚本通过python交互工具与UDE进行通信和调用UDE的组件获取UDE返回值。
python·capl·canoe·ude·nm_oncan
gordon~91 小时前
Spring 的bean是安全的吗
java·安全·spring·bean