SpringMVC

目录

注解

获取cookie--httpserverletRequest

获取session

响应-返回静态页面

响应-返回HTML页面

返回json

设置状态码

使用ajax发起请求

lombok的使用

maven仓库使用

热部署和热修复的理解


注解

这里restController的作用就是在启动启动类的时候可以扫描到对应的类或者是方法

通常情况下,get和post方法都支持客户端的该请求,但是若是强制请求其一:

只允许get请求去访问 不允许其他请求方法去访问

只允许post访问

也可以这么写:

浏览器是get请求,所以无法访问

使用传参:

返回:

使用body传参:

fidder抓包

传递对象:

tostring方法:

传递对象:

查看返回:

使用URL:

这种传参方式和上面的传参方式是一样的

这个表示的意思就是从前端接收参数,然后将数值赋值给keyword

这里如果传递的是keyword:就会提示400的错误

RequestParam这个注解的值是必须传递的看下图 true,如果不需要必须传

这个是叫做参数绑定

可以把这个对应的值改为false

若是需要传递数组:

相同的值会归为一类

也可以这么传递数组:

传递list


引入依赖

测试用例怎么写:

写第二个:

传递json的数据:

{"name":"zhangsan","age":12,"gender":1}

进行重命名的操作

上传一个文件

文件上传到指定的地址当中 调用下面的方法


cookie存储的是少量的信息,session存储的信息量更多

医院存储个人信息--session 患者拿的诊疗卡--cookie

学校存储学生信息--session 学生的学生证--cookie

为什么需要cookie和session??因为http协议是无状态的

无状态:就是没有记忆力的意思

注解括号里的属性默认是给到value的,查看到value对应的是path

只有一个值的时候走的是默认,但是如果是多个的话,需要写属性是什么

spingmvc的后端核心:建立连接--接收参数,返回结果

获取cookie--httpserverletRequest

获取cookie原始方式:

发送请求:

说明返回cookie了

第二种方式:

第一种的方式更佳

获取session

这些场景常用在用户登录的场景当中

分为设置成true和false:

值为true,用户有session:

如果值为false

浏览器访问和postman访问分别是不同的客户端,在用抓包的时候,显示的cookie数据是不一样的

这里也存储对应的cookie信息:

使用postman:

查看:

当我们再次发起请求的时候,就会把cookie信息携带上

如果我们把SessionID的值修改,那么SessionID就校验失败了,所以就会返回用户未登录的信息

这里的HttpSession指的是每一个客户都有对应的HttpSession对象

还有两种获取Session的方式 如下:

解释:

获取header:

访问:

第二种方式:

访问:

响应-返回静态页面

下面的index的场景就是后端要返回前端写成的界面

现在是前后端分离的场景

创建静态文件:

代码:

这里返回的html页面前面的/是要有的

去掉的话会404错误 requestMapping上的可以不加 前端代码是不加的

/的意思表示的是相对路径的意思

是否有/以程序运行的结果为准 有可能是idea的环境变量和配置是不一样的

Controller和RestController:这里两者的区别是什么?为什么使用RestController就不能访问了呢?

@RestController=@ResponseBody + @Controller

ResponseBody:表示的是返回数据

程序启动默认扫描启动类所在的路径下,如果启动类在别的路径,那么其他的接口路径就不会被扫描,也就是不会访问成功了

也就是说,我们的代码,必须放在启动类所在的路径下以及其子路径下才会生效

这些才会被spring扫描到

表示只能放到类上:

既可以放到类上,也可以放到方法上:

只能放到参数上:

target文件里面的内容就是编译产生的结果


上面返回的是页面,使用的是Controller,但是当我们要返回数据的时候,就要使用ResponseBody

使用了注解之后就可以访问成功了

现在基本上不处理页面了

一个类中,既有返回页面的方法,又有返回数据的方法 使用@Controller

在返回数据的方法上加@ResponseBody
如果一个类全部返回数据:可以使用@RestController或者@Cortroller + @ResponseBody
如果一个类全部返回页面,使用@Controller

@ResponseBody:即是类注解,又是方法注解
作为类注解的时候,表示该类的所有方法
作为方法注解时,表示该方法返回数据,全部返回数据

响应-返回HTML页面

查看返回

如果我们要查看的是<h1>的显示,把标签的内容也需要展示出来

网页自动解析:

如果我们把解析出来的Content-Type: text/html;charset=UTF-8 值修改成文本的格式,就会响应的是文本的格式:

返回:

抓包查看:

返回json

参数请求和返回这种格式是比较多的

spring会根据返回结果设置Content-Type 乱码的情况下是需要自己设置的

返回:

Content-Type: application/json:说明被成功识别成json

json格式的数据,前端可以直接处理 本身json就是一个字符串

查看:

设置状态码

demo:

这里的状态码是不影响状态码的展示的 真实的返回是spring进行返回的:

设置header:

使用ajax发起请求

ajax是一种用于创建快速、动态和交互式网页应用的前端开发技术。它允许网页在不重新加载整个页面的情况下,与服务器进行异步通信,从而实现局部内容更新。

异步等待后端返回结果

核心特点
异步通信:无需刷新整个页面即可从服务器获取或发送数据。
提升用户体验:页面响应更快,交互更流畅。
减少带宽消耗:只传输需要更新的数据,而不是整个页面。


lombok的使用

添加依赖:


这里加了一个@Data,就不用写get和set方法等等了

点击项目进行运行:以下是我们反编译的文件

说明有这些已经变成了,但是我们的注解消失了,注解只是到了源码阶段,所以是只能在源码阶段看到它。

data注解包含多个注解,可以直接使用注解:

反编译的结果:

maven仓库使用

当我们需要一个依赖的时候,访问中央仓库,查询:

搜索:

点击:

版本相关区分:建议选择次新版本
安装插件:

验证是否安装成功:

出现:说明安装成功

点击:

热部署和热修复的理解

"热部署"和"热修复"虽然听起来相似,也都涉及在不停止服务的情况下更新系统,但它们不是同一个概念,侧重点和应用场景有所不同。
定义:
热部署是指在应用程序运行过程中,无需重启服务器或服务,直接部署新的代码、配置或资源文件,并使其立即生效。目的:提升开发效率或实现无缝发布。
热修复是指在线上系统出现紧急 Bug 或安全漏洞时,不中断服务的情况下,快速推送一个小型补丁来修复问题。目的:快速止损,避免发版周期长带来的风险。

维度 热部署(Hot Deployment) 热修复(Hotfix)
目的 快速上线新功能/资源/配置 紧急修复线上严重 Bug
范围 可大可小(模块、页面、配置等) 通常很小(只改出问题的代码)
使用阶段 开发、测试、部分生产环境 主要在生产环境
频率 较频繁(尤其开发时) 偶发(仅在紧急情况下)
技术要求 依赖框架/容器支持 需要代码插桩、类替换、沙箱等机制
相关推荐
Coder_Boy_2 小时前
基于SpringAI的在线考试系统-整体架构优化设计方案(续)
java·数据库·人工智能·spring boot·架构·领域驱动
笨蛋不要掉眼泪2 小时前
RAG知识库核心API架构全解析:从文档加载到向量检索的完整流程
java·spring boot·redis·ai·架构
静谧空间2 小时前
java登录验证码CaptchaConfig
java·开发语言
Imxyk2 小时前
力扣:632. 最小区间(贪心)
java·数据结构·算法
驱动探索者2 小时前
linux genpool 学习
java·linux·学习
露天赏雪2 小时前
JDK8 的入门避坑指南
java·服务器·windows·spring boot·后端·spring·性能优化
jiaguangqingpanda2 小时前
Day37-20260205
java·开发语言
手握风云-2 小时前
JavaEE 进阶第十六期:MyBatis,查询请求的生命周期全景图(一)
java·java-ee·mybatis
大模型玩家七七2 小时前
安全对齐不是消灭风险,而是重新分配风险
android·java·数据库·人工智能·深度学习·安全