springMvc

发布于:2025-02-19 ⋅ 阅读:(15) ⋅ 点赞:(0)

前言

在这里插入图片描述
这个是引入依赖

在这里插入图片描述

但是这个旁边却有两个,这个是因为引入这个依赖的时候,这个依赖又引入了其他的依赖

在这里插入图片描述

这种依赖以冒号为分隔,分别是groupid,artifactId和version

如何排包呢

在这里插入图片描述
可以这样排包
也可以借助插件

叫做Maven Helper

在这里插入图片描述

安装了这个之后,pom.xml后面就会有在这里插入图片描述

这个
这个是依赖分析器

对于pom文件的修改一定要刷新

我们现在下载的jar是从中央仓库即国外下载的

我们大家都有本地仓库

在这里插入图片描述

这样就找到了

这个就是本地仓库
那如何修改本地仓库呢

直接把.m2这个文件夹拷贝走就可以了

远程仓库还有国内源

这个是settings.xml可以去我码云下载

在这里插入图片描述
我们加了一个阿里云的镜像
这样就会优先从阿里云下载了

在这里插入图片描述
这样就可以了,但是这个只是针对当前项目

在这里插入图片描述
在这里插入图片描述

这样就可以针对所有的项目进行设置了

springboot

idea社区版要使用springboot要先下载插件Spring Boot Helper
专业版不用下载

插件地址https://plugins.jetbrains.com/plugin/18622-spring-boot-helper/versions

在这里插入图片描述
但是这些都要收费

有一个免费的,但是适用idea2022版所以我们就不安装了

我们就用专业版的吧

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
然后就是慢慢下了
外部库那里有很多包的时候就是下载成功了

springboot3开始就要至少JDK17

在这里插入图片描述
这四个可以删掉

在这里插入图片描述
改类的名字要按shift+f6
因为这样改的话,也会把相关的类名改了
在这里插入图片描述
在这里插入图片描述
这就是第一个后端接口

其中路径和方法名可以不一样
在这里插入图片描述
如果环境问题无法启动
那么可以试一下把这三个文件删了,重新试一下
因为配置是在.idea这些东西中的

在这里插入图片描述
可以看出进程是24280,端口号是8080,协议是http
用的是Tomcat服务器
现在Tomcat已经被Spring集成了,不用安装
8080是tomcat的默认端口号
在这里插入图片描述

springMvc

我们创建springboot项目的时候是使用了springMvc的
集成了它的
MVC就和servlet差不多

在这里插入图片描述
这个也可以删掉

在这里插入图片描述
RestController的作用就是这个类有RestController注解,就会在这里找路径,不然不会考虑这个类的路径的

RequestMapping就是建立连接

它还可以写在类上面

在这里插入图片描述
这样就是大路径加小路径的访问方式
注解之间没有顺序

在这里插入图片描述
在这里插入图片描述
路径的/可以不加,这个可以自动加上的
但是通常不省

RequestMapping是即支持get请求,也支持post请求的
浏览器默认是get请求
所以我们搞一个post请求

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这样写的意思就是只支持get请求
在这里插入图片描述
在这里插入图片描述
这样写的意思就是只支持get请求

在这里插入图片描述
在这里插入图片描述
注意fiddler会把postman拦截,所以用postman的时候不要用fiddler

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
参数名name与url中的name是对应的,是一样的才可以对应赋值
在这里插入图片描述

在这里插入图片描述
这个类型是自动转换的
用int也是可以的
但是最好使用Integer
类型也是要对应的,不要不对应
传递的参数,默认为String,后端接受时,根据后端的类型确定

现在开始传递多个参数

在这里插入图片描述
在这里插入图片描述
而且顺序没有影响
多个参数也是没有问题的
因为是key-value类型的

在这里插入图片描述
其实这个servlet的书写和上面那个是一样的功能
但是这个传递多个参数太麻烦了
不如分装成一个类

在这里插入图片描述
在这里插入图片描述
这就这样写就可以了

然后把gender改为Integer类型

在这里插入图片描述
这个就非常简单了

用INteger的时候name=的时候就是null,int类型的话就是0

现在给参数重命名

就是前端传的是username,后端要用name来接收

在这里插入图片描述
在这里插入图片描述
RequestParam的作用就是参数绑定,把url中的参数绑定过来
如果url中没有userName就会出错

注解里面只有一个参数的时候就是value,有多个的时候就是key-value的形式

在这里插入图片描述
如果这样写的话,就算userNAme不在url中也可以
意思就是这个注解可以不强制

在这里插入图片描述
但是还是不会取url中的name
所以前端中传的key必须是userName

现在开始传递数组

在这里插入图片描述

在这里插入图片描述
这样传入几个相同的key就是数组了

在这里插入图片描述
这样把参数写在一起也是可以了

我们现在用一下debug

在这里插入图片描述
先打红点

在这里插入图片描述
在点这个虫子

在这里插入图片描述
这样就可以了

在这里插入图片描述
在这里插入图片描述
这样就失败了

在这里插入图片描述
发现不行

因为这样发送请求默认是分装成数组的
所以需要转换成list
在这里插入图片描述
这样写就相当于把数组绑定成一个list了

在这里插入图片描述
现在开始讲传递JSON数据了
JSON就是一个对象表示法或者数组
可以在网上找一些JSON编辑器
JSON的使用要导入坐标,但是spring项目不用导入,已经集成了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Json是一个字符串,表示的是一个对象
现在开始传递Json
在这里插入图片描述
RequestBody意思就是在请求的正文中获取数据,原来我们是从请求的url中获取数据的

这个就要从body中传了
就不要从url中传递了
就是postman了

在这里插入图片描述
这样发给原来的p5是OK的

但是这个传递的不是Json,就是请求体中的key-value
在这里插入图片描述
这样就可以了
两个的差异就是一个是key-value在请求体中
一个是Json字符串的格式
如何获取url中的参数呢
在这里插入图片描述

这样写的意思就是
/{articleId}表示后面有articleId这个路径
@PathVariable(“articleId”)表示要用url中key为articleId,赋值给参数

在这里插入图片描述
注意(“articleId”)可以不写
那这样的话,参数名就要和{articleId}保持一致了
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这样就不行了,就要加上(“articleId”)了
在这里插入图片描述
这样才对
意思就是要重命名的话,就要加上,不重命名的话,就不用加上

在这里插入图片描述
这个是多个参数的时候

在这里插入图片描述
在这里插入图片描述
这样就会出错,因为我们的路径要求是两个参数的
都是要求有的

在这里插入图片描述
这样就不会出错了,因为第二个注解不强制了
在这里插入图片描述
但是还是不行
因为路径已经写死了

在加上一个/不行
一般都是id放在url中

最后就是上传文件了

在这里插入图片描述

这个就是文件了

在这里插入图片描述
这样就可以选择了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
500是后端的错误

在这里插入图片描述
这个是因为上传的时候没有key
没有参数名称
在这里插入图片描述
上传的就是二进制

如果url不为file的话,如何进行重命名呢

在这里插入图片描述
在这里插入图片描述

cookie和session

先来获取cookie
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看出cokies是null,所以报错了

所以要先添加cookie,在去访问
浏览器上是可以添加cookie的

在这里插入图片描述
在这里就可以添加cookie了

在这里插入图片描述
这样就添加成功了
在这里插入图片描述
现在讲一下注解的方式获取cookie,原来是原始的方式获取cookie
在这里插入图片描述
在这里插入图片描述
postman就不行了吗,因为它没有设置cookie的

这就有了两种方式获取cookie
获取多个就要多个注解
第一种方法可以获取全部cookie
但是参数名和key一样的话,注解里面的字是可以省略的
注意postman也是可以增加cookie的
就在右上角的位置
现在学习获取session

在这里插入图片描述
我们从Cookie中获取SessionId,根据SessionID获取Session对象

在这里插入图片描述
在这里插入图片描述
然后就是造一些Session----》服务器上的----》代码设置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
但是在不同的浏览器上拿不到我们刚刚设置的Session,这个是因为会话不一样
不同会话的SESSIONID是不一样的
拿到的session就是不一样的
服务器端存储的不同的session对象,每个session对象都有不同的sessionid,每个session对象就存有session
在这里插入图片描述
id而且是可以修改的

现在学习获取session的第二种方式

在这里插入图片描述
注意:Session存储在服务器的内存上,所以服务重启时,session会丢失
所以又要先set在get
在这里插入图片描述
在这里插入图片描述
这是第二种获取session方式

现在通过注解的方式获取session
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

获取header

在这里插入图片描述
比如获取user-agent这种信息

在这里插入图片描述
在这里插入图片描述
现在讲一下注解的方式
在这里插入图片描述

在这里插入图片描述
现在学习一下postman如何增加cookie
在这里插入图片描述
点击save
就可以了

在这里插入图片描述
这里可以伪造header
cookie前端后端都可以伪造
session只能后端写代码

响应

静态资源的路径是从static开始看的
在这里插入图片描述
现在我们希望后端返回这个页面

在这里插入图片描述
首先这样写肯定是不行的

RestController要改为Controller

在这里插入图片描述

在这里插入图片描述
这样就可以了
所以返回页面就要用Controller了

RestController是基于Controller实现的

在这里插入图片描述

在这里插入图片描述
看得出来RestController=Controller+ResponseBody
ResponseBody表示返回数据

因为很久以前前后端没有分离,所以可能会返回页面
现在分离了,就不用返回了

在这里插入图片描述
所以这样写就和RestController效果一样

在这里插入图片描述

ResponseBody既是类注解也是方法注解
类注解表示所有方法都返回数据
方法注解只表示该方法返回数据
其余的管不着

Controller表示返回一个页面,一个视图,如果这个视图不存在就会出错

现在讲一下返回html代码片段

在这里插入图片描述
这个明显返回的是数据

在这里插入图片描述
只要返回的数据里面带有html就会进行解析

现在讲一下返回json
在这里插入图片描述
这样返回的默认就是json格式的

在这里插入图片描述
在这里插入图片描述
这里就可以看出,返回类型是Json格式的,这个是自动设置的Json
返回类就是Json

现在设置状态码,这个状态码是自动设置的
当然也可以我们来设置

这个就要用到response了

在这里插入图片描述

在这里插入图片描述

设置header

现在开始设置header
刚刚是获取响应里面的header

在这里插入图片描述
value=path
produces是指定响应的类型

在这里插入图片描述
在这里插入图片描述
这个就可以看出我们返回的是字符串类型的

我们也可以把这个设置为Json

在这里插入图片描述
在这里插入图片描述
这就是Json了

在这里插入图片描述
在这里插入图片描述
这里就多了一个header了

现在学习如何设置cookie

在这里插入图片描述
这样就可以了

在这里插入图片描述

加法计算器

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后就可以了

用户登录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ctrl+f5强刷,因为浏览器会把页面缓存了,导致效果不变
在这里插入图片描述
在这里插入图片描述
这个参数既可以在这里设置,也可以在url中设置,都是一样的
post,get都能读取

在这里插入图片描述
所以现在后端没有问题了

开始弄前端

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这样就成功了
ctrl+f5强制刷新
ctrl+shift+delete删除缓存

ajax是通过data传递的参数,是异步的
表单是通过name取的名字,是同步的

留言板

在这里插入图片描述
在这里插入图片描述

我们这个代码的缺点就是一刷新就全部没有了
启动一次程序,就是一个进程,我们把数据存入内存中,每次刷新就不会消失了

我、先来后端,我们要定义两个接口,一个是获取全部留言信息
第二个是发表新留言,存入内存

创建一个类,每次存储一个留言

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样后端就没有问题了,该前端了

插曲

现在讲一下lombok

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样写就表示只有from有get方法

因为spring有版本管理,就是你引入什么包,版本可以不用写,spring可以帮你决定
你写了版本,就不是spring里面的版本了

在这里插入图片描述
现在增加一个插件
在这里插入图片描述
这个文件在pom.xml中使用
在这里插入图片描述
在这里插入图片描述
点击OK

在这里插入图片描述
在这里插入图片描述
这里可以增加依赖

继续

现在继续开始留言板的开发,主要是前端代码了

在这里插入图片描述
这里是一个类来接受的,对应要传入JSon的,要传入JSon就要RequestBody这个注解
对应前端传入JSon

如果要求是post请求的普通参数,没有要求JSon数据的话
,那么既可以
在这里插入图片描述
这样
在这里插入图片描述
也可以这样

在这里插入图片描述
前端这样写data

前端默认传入的是application/x-www-form-urlencoded这个类型的

如果要指定传入JSon类型
那么还要增加两个条件

在这里插入图片描述
这样就可以发生JSon数据了

在这里插入图片描述

在这里插入图片描述
如果后端add返回的是String类型的,那么如何转化为JSon呢

在这里插入图片描述
这样后端返回的就是String了

在这里插入图片描述
这样写就可以了

图书管理

直接创建一个新项目

在这里插入图片描述

404----》检查资源路径
405检查请求方式
400检查参数
415检查请求类型
5xxx直接看后端日志
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ctrl+f5强制刷新,可以干掉缓存

在这里插入图片描述
我们这个前端代码引入了bootstrap,这个是组件库,就和element是一样的
bootstrap

去百度搜索html模板网站,就会很简单的开发前端了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意如果是从body里面传入的数据,那么一定是post的
所以一定要记得改

这样后端就没有问题了

在这里插入图片描述
在这里插入图片描述

这样就可以了

三层架构

现在我们把我们的代码搞成三层架构模型
分别是dao(增删查改),service(逻辑,调用到),controller(请求响应,调用service)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是这样很好看,就是不能正常运行了
在这里插入图片描述
在这里插入图片描述

总结


网站公告

今日签到

点亮在社区的每一天
去签到