Spring Boot与Web开发

news2025/1/10 23:08:21

Spring Boot与Web开发

SpringMVC快速使用
1.基于restful http接口 的CURD
在这里插入图片描述
在这里插入图片描述

2.调用rest http接口
通过RestTemplate调用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.通过postman调用

在这里插入图片描述
通过MockMvc测试
在这里插入图片描述
4.通过swagger调用

  1. 添加依赖
    在这里插入图片描述
  2. 添加swagger配置类
    在这里插入图片描述
    在这里插入图片描述
    注意:访问的地址是:http://localhost:8080/swagger-ui.html
  3. 配置http接口
    在这里插入图片描述
  4. 配置pojo类
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
访问:http://localhost:8080/swagger-ui.html

扩展: 实现通过swagger记录请求日志
在这里插入图片描述
在这里插入图片描述
2.SpringMVC自动配置原理分析
Spring Boot为Spring MVC提供了自动配置,可与大多数应用程序完美配合。
自动配置在Spring的默认值之上添加了以下功能:
包含ContentNegotiatingViewResolver和BeanNameViewResolver。
ViewResolver 都是SpringMVC内置的视图解析器
ContentNegotiatingViewResolver
他并不会解析视图、而是委派给其他视图解析器进行解析
所有视图解析器,都会根据返回的视图名称进行解析
视图 resolveViewName
在这里插入图片描述
在这里插入图片描述
委派给其他视图解析器进行解析:
在这里插入图片描述
BeanNameViewResolver
会根据handler方法返回的视图名称 (xushu), 去ioc容器中到到名字叫aa的一个Bean,并且这个bean要实现了VIew接口
在这里插入图片描述
可以配置一个名字叫aa的视图(VIew)
在这里插入图片描述
由以上代码可以得出结论,它是从Spring IOC容器获得ViewResolver类型Bean,那么我们可以自己定制一个ViewResolver,ContentNegotiatingViewResolver也会帮我们委派解析
在这里插入图片描述
支持提供静态资源。包括对WebJars的支持(在本文档的后面部分中有介绍)。
以前要访问jpg\css、js 等 这些静态资源文件, 需要在web.xml配置 ,在springboot不需要配置,只需要放在约定文件夹中就可以(约定大于配置)
原理:
WebJars: 就是将静态资源放在jar包中进行访问。
3.定制SpringMvc的自动配置
SpringMVC的自动配置类:WebMvcAutoConfiguration

  1. 在大多数情况,SpringBoot在自动配置中标记了很多@ConditionalOnMissingBean(xxxxxxxxx.class); (意
    思就是如果容器中没有,当前的@bean才会生效)。 只需要在自己的配置类中配置对应的一个@Bean就可以覆盖默认自动配置。
    还得结合源码的实际功能进行定制。
    2.通过WebMvcConfigurer进行扩展
    a. 扩展视图控制器
    b. 扩展拦截器
    c. 扩展全局CORS
    在这里插入图片描述
    在这里插入图片描述

  2. Json 开发
    Spring Boot提供了与三个JSON映射库的集成:
    Gson
    Jackson 性能最好
    JSON-B
    Jackson 是我们使用的默认json库
    jsckson的使用
    @JsonIgnore
    进行排除json序列化,将它标注在属性上将不会进行json序列化
    @JsonFormat(pattern = “yyyy-MM-dd hh:mm:ss”,locale = “zh”)
    进行日期格式化
    @JsonInclude(JsonInclude.Include.NON_NULL)
    当属性值为null时则不进行json序列化
    @JsonProperty(“uname”)
    来设置别名

SpringBoot 还提供了@JsonComponent 来根据自己的业务需求进行json的序列化和反序列化
在这里插入图片描述
在这里插入图片描述
3.国际化
SpringBoot

  1. 添加国际化资源文件 resource
    在这里插入图片描述
  2. 配置messageResource 设置国际化资源文件
    a. 在Springboot中提供了MessageSourceAutoConfiguration 所以,我们不需要去配置
    messageResource
    b. 但是它并生效:开启debug=true
    但是他却没有生效
    自动配置类没有生效的原因:
    在这里插入图片描述
    matches:
    在这里插入图片描述
    getMatchOutcome
    只要在这个方法中将返回的ConditionOutcome .match =true 就匹配成功

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

如果要让它生效
必须保证 在类路径下的messages文件夹中有国际化的资源文件
或者自己配置spring.messages.basename 告诉它资源文件在哪
即在配置文件中加上这句代码:
在这里插入图片描述
只要找到了国际化的属性资源文件那就会设置ConditionOutcome.match=true
当ConditionOutcome.match=true 那么@Conditional(ResourceBundleCondition.class) 就匹配成功
一旦匹配成功那自动配置类就会生效,就会帮我们配置一个meesageSource

在这里插入图片描述
3. 需要去解析请求头中的accept-language 或者 解析url参数中?local=
其实WebMvcAutoConfiguration 类也帮我配置了一个解析请求头中的accept-language 的localResolver

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4. 随意切换本地语言,进行缓存
a. 覆盖原有localeResolver 因为自动配置类中的localeResovler它只会从accept-language中解析

  1. 通过messageResource 获取国际化信息
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4.统一异常处理
    1.SpringBoot 有统一异常处理自动配置类
    ErrorMvcAutoConfiguration
    它统一异常处理自动配置类
    重要组件

DefaultErrorAttributes
BasicErrorController
DefaultErrorViewResolver 用来解析错误视图页面

BasicErrorController
它其实就是一个处理/error请求的一个控制器
在这里插入图片描述
定制自己的统一异常处理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.@ControllerAdivce

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

4.SpringBoot的嵌入式Servlet容器
Spring 默认的Servlet容器是:Tomcat, 当前SpringBoot 2.3.6 的版本是对应 tomcat9

在这里插入图片描述
1.嵌入式Servlet容器配置修改
1.通过全局配置文件修改
可以通过server.xxx 来进行web服务配置, 没有带服务器名称的则是
通用配置
通过带了具体的服务器名称则是单独对该服务器进行设置,比如
server.tomcat.xxx 就是专门针对tomcat的配置
在这里插入图片描述
2.通过WebServerFactoryCustomizer的Bean修改
修改server.xxx 配置的相关内容
会跟配置文件形成互补

在这里插入图片描述
2.注册servlet三大组件
servlet listener filter
servlet3.0规范提供的注解方式注册
在这里插入图片描述
1.声明servlet 及映射
在这里插入图片描述
2.加上@ServletComponentScan才会扫描上面3个注解
在这里插入图片描述
在这里插入图片描述
SpringBoot提供的注册
使用ServletRegistrationBean,FilterRegistrationBean以及
ServletListenerRegistrationBean

在这里插入图片描述
3.切换其他嵌入式Servlet容器
Spring Boot包含对嵌入式Tomcat,Jetty和Undertow服务器的支持
tomcat(默认)
Jetty(socket)
Undertow(响应式)
在这里插入图片描述
在这里插入图片描述
5.使用外部Servlet容器
外部servlet容器
服务器、本机 安装tomcat 环境变量…
部署: war—运维—>tomcat webapp startup.sh 启动
开发: 将开发绑定本地tomcat
开发 、 运维 服务器配置 war
内嵌servlet容器:
部署: jar—> 运维—java -jar 启动
使用:

  1. 下载tomcat服务
    2.设置当前maven项目的打包方式
    在这里插入图片描述
    3.让tomcat相关的依赖不参与打包部署 ,因为外置tomcat服务器已经有这些jar包
    在这里插入图片描述
    4 为了让它支持springboot需要加上: 才能启动springboot应用
    在这里插入图片描述
    5 在idea中运行
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

【Java基础篇】基础知识易错集锦

在学习的路上,我们只记得学习新的知识,却忽略了一切新知识都是在旧知识的基础上;努力奔跑的过程中,也要记得常回头看看; 题目展示: 解析: abstract是抽象的意思,在java中&#xff0…

Python爬虫实战,requests+pyecharts模块,Python实现新冠疫情数据可视化(附源码)

前言 今天给大家介绍的是Python爬取新冠疫情数据并实现数据可视化,在这里给需要的小伙伴们代码,并且给出一点小心得。 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样的纯文本数据爬取的…

牛客网Mysql题目-SQL进阶篇 SQL 126-155

前言 这篇是进阶sql题目的记录,由于上一篇文章已经写将近一万字,有点长,就把剩下的再开一篇,免得总是重新发布 SQL126 平均活跃天数和月活人数 本题目要求统计,并且是多行,就需要使用group by查询 首先需…

kafka可靠性保证

1、概念 创建Topic的时候可以指定--replication-factor 3 ,表示分区的副本数,不要超过broker的数量。Leader是负责读写的节点,而其他副本则是Follower。Producer只把消息发送到Leader,Follower定期地到Leader上Pull数据。ISR是Le…

基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

[附源码]计算机毕业设计的家政服务平台Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Linux系统(Centos7)了解DNS服务

配置与管理DNS服务器 项目导入 某高校组建了校园网,为了使校园网中的计算机简单快捷地访问本地网络及Intemet上的资源,需要在校园网中架设 DNS 务器,用来实现将域名转换成IP地址的功能。在完成该项目之前,首先应当确定网络中D…

基于多目标优化算法的电力系统分析(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🎉作者研究:🏅🏅🏅主要研究方向是电力系统和智能算法、机器学…

Volatile关键字的作用

专栏链接:多线程相关知识详解 编译器有优化功能,会对写好的代码进行优化,在多线程里面可能就会对代码的执行逻辑进行修改,就可能会产生bug 例如下面这个代码: import java.util.Scanner;class Counter{public static int count 0; }public class Demo {public static void …

RK3568平台开发系列讲解(系统优化篇)系统卡顿了怎么办

🚀返回专栏总目录 文章目录 一、卡顿问题分析指标二、Android 卡顿排查工具沉淀、分享、成长,让自己和他人都能有所收获!😄 📢对用户来说,内存占用高、耗费电量、耗费流量可能不容易被发现,但是用户对卡顿特别敏感,很容易直观感受到。另一方面,对于开发者来说,卡顿…

windows vs2019 编译glib2

1、安装meson pip install meson 确认是否安装成功,命令行输入: meson --version 0.60.0 2,安装ninja 先下载ninja:Releases ninja-build/ninja GitHub 加压后,把ninja.exe所在目录加入环境变量 确认是否安装成功&#xf…

英文外链怎么做效果好?

google英文外链怎么做效果好? 答案是:建设GPB外链 正确的外链建设行为追求的是高质量的外链。 对于高质量外链的定义:优质的外链是来自搜索引擎和搜索者都信任的权威网站,网站越值得信赖、越权威,链接质量就越好 网…

【ElementUI】树形控件 el-tree

目录 公共参数 基础用法 最后一层不可选择 思路一:第三层设置disable 思路二:利用样式隐藏掉第三层的选框 最后一层展示复选框 转载请注明:宾果的救星的博客_CSDN博客 公共参数 treeContent:[{name: 1,id: 1,level: 1,children: [{na…

HPPH偶联金属/小分子抑制剂/上转换纳米颗粒/点击化学/核壳磁性纳米粒子的方法

小编这里分享了科研内容HPPH偶联金属/小分子抑制剂/上转换纳米颗粒/点击化学/核壳磁性纳米粒子的方法,来看! 点击输入图片描述(最多30字) 制备光敏剂HPPH的方法: (1) 叶绿素-a的提取;(2)脱镁叶绿酸-a甲酯的制备;(3)焦…

ADI Blackfin DSP处理器-BF533的开发详解20:4.3寸LCD液晶屏的设计与应用(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 ADSP-EDU-BF53x 开发板上的液晶屏为 480*272 尺寸真彩 TFT 液晶屏,其型号为 WXCAT43-TG3#001R。 WXCAT43-TG3#001R 为 24B…

C#开发如何加载64位版本易景地球 EviaEarth的三维控件

易景地球6.1.x后续的版本不再出32位的系统,只有64位版本的系统。 在c#开发中,form又如何将EviaEarth三维视窗控件放到上去呢? 有办法 以vs2019开发环境为例,新建工程后,添加引用文件:AxInterop.EviaEart…

小白Vue3+Nginx实现部署

文章目录前言一、搭建vue31、查看vue/cli版本,确保vue/cli版本在4.5.0以上2、如果版本达不到,安装或升级你的vue/cli3、创建4、启动可能出现的问题:vue : 无法加载文件 D:\NodeJS\node_global\vue.ps1,因为在此系统上禁止运行脚本。解决办法第…

[基因遗传算法]进阶之三:实践CVRP

实践CVRP 参考资料:《实现VRP常见求解算法——遗传算法(GA)》 属于该篇文章的解读 文章目录实践CVRPA. 定义三个classB.读取数据,打造初始属性卡C. 路线规划D. 生成解的初始空间(初代种群)D. 计算每个路段route的距离E. 计算适应度F.物竞天择F.交叉G.变…

程序员高收入的职业发展方向了解一下

做程序员简单吗?简单! 做高收入的程序员简单吗?不简单! 作为一名程序员,不论是刚出社会的小白,还是技术实力深厚的经验人士,最重要的是要找到适合自己的职业发展方向。 本位就为大家介绍一下程…

微服务框架 SpringCloud微服务架构 28 数据同步 28.2 导入酒店管理项目

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构28 数据同步28.2 导入酒店管理项目28.2.1 案例28 数据同步 28.2 导入酒店…