当前位置: 首页 > news >正文

SpringBoot和SpringMVC

目录

一、springboot项目

(1)创建springboot项目

(2)目录介绍

(3)项目启动

(4)运行一个程序

(5)通过其他方式创建和运行springboot项目

二、SpringMVC

1、MVC概念

2、SpringMVC概念

3、SpringBoot与SpringMVC的联系与区别

4、创建springmvc项目

(1)建立连接

(2)处理请求

(3)返回响应


一、springboot项目

(1)创建springboot项目

需要先下载好Spring Boot Helper插件。IDEA专业版不需要下载该插件。

进入IDEA创建新项目,选择Spring Initializr:

点击Next:

点击Next:

点击Next:

点击Create:

(2)目录介绍

(3)项目启动

这个是启动类,点击任意小绿箭头都可以运行项目。

项目启动成功,发现springboot项目里内置了tomcat

(4)运行一个程序

上面算是springmvc(后面解释)

运行启动类,在浏览器访问:

8080是因为web服务器是tomcat,默认端口号为8080,也可以修改端口号:

在这个里面写:server.port='端口号'

(5)通过其他方式创建和运行springboot项目

①创建项目其他方式

直接进入官网创建生成jar包,和IDEA创建方式是一样的

②运行jar包

java -jar jar包名字运行jar包

进入jar包所在命令页面,找到jar包

运行成功:

通过浏览器访问:

二、SpringMVC

1、MVC概念

是软件工程中的一种软件架构设计模式,他把软件系统分为三个模块:view(视图)、model(模型)、controller(控制器)。

view:与浏览器进行交互,获取请求数据以及接收响应;

model:主体部分,处理数据逻辑部分;

controller:可以理解为一个分发器,用来连接view和model,根据view发来的请求,决定使用那个model,以及决定将返回的响应分发给哪个视图。

2、SpringMVC概念

是一个实现了MVC模式的web框架。

3、SpringBoot与SpringMVC的联系与区别

Spring Boot是一个基于Spring框架的快速开发框架,它简化了Spring应用程序的搭建和配置过程,提供了一种快速开发的方式。而Spring MVC是Spring框架中的一个模块,用于构建Web应用程序,提供了一套MVC(Model-View-Controller)架构。

它们之间的联系在于,Spring Boot可以集成Spring MVC,通过Spring Boot可以更快速地构建和配置Spring MVC应用程序。Spring Boot提供了自动配置和起步依赖等功能,简化了Spring MVC应用程序的开发过程。Spring Boot是建立Spring MVC的一种方式。

它们的区别在于,Spring Boot是一个快速开发框架,提供了一种快速构建Spring应用程序的方式,而Spring MVC是一个Web框架,用于构建Web应用程序。Spring Boot可以集成Spring MVC,也可以集成其他的Spring模块,如Spring Data、Spring Security等,而Spring MVC主要用于构建Web应用程序。

上述在构建springboot时,就是选择了spring web,可以建立spring mvc项目,实现web开发。

4、创建springmvc项目
(1)建立连接

在springmvc中,是通过@RequestMappering注解,将浏览器与服务器之间建立连接。该注解后面跟访问的路径。注解在类上时,访问类中的方法时,路径=类路径+方法路径;类没有注解时,访问方法时,路径=方法路径。

eg:方法路径

类路径+方法路径:

不加类路径,会显示404.

@RestController注解的作用:将一个类标识为控制器,用于处理HTTP请求并返回响应。没有该注解时,有http请求时就无法访问该类。

(2)处理请求

①http请求:包括首行(方法、url、版本号)、请求头(header)、正文(get方法大概率没有)

②获取url中,查询字符串(对url的补充)的参数。

一个参数获取

指定请求方式

springmvc获取请求时,请求方式可以是get,也可以是post,也可以指定请求方式。

指定请求方式:

发送get请求与响应:

发送post请求与响应:

405表示方法不被允许。

两个参数获取

age写为Integer是因为Integer可以接收null,int类型时,没有age会报错。

postman发送请求:

收到的响应:

参数重命名

postman发送请求:

收到的响应:

但以上代码有个问题,username必须是必传的参数。

username默认是必传的参数,可进行修改:

请求与响应:

对象获取

定义一个对象user:

获取对象

请求与响应:

数组获取

请求与响应:

或者:

集合获取

请求与响应:

发现报错,500是服务器的错误,当参数是集合时,需要通过@RequestParam绑定参数关系。

请求与响应:

json正文获取

请求与响应:

url参数获取

请求与响应:

url中参数重命名获取

上传文件获取

请求与响应:

 Cookie和Session

概念见文章:cookie和session概念

Cookie获取

①获取全部cookie:

 ②获取指定cookie

session设置

session获取

请求header获取

(3)返回响应

返回静态页面

制作一个静态页面:index.html

发现返回的不是index.html页面,而是一串文字。当把代码做以下修改:

只是改了一个注解,为什么结果就不一样了???

之前说@RestController注解是将将一个类标识为控制器,用于处理HTTP请求并返回响应。那和@Controller注解的区别在哪里???

@RestController注解的源码

发现是包括@Controller注解的

@Controller注解的源码

与@RestController注解源码比较,发现少了@ResponseBody注解。

即:@Controller+@ResponseBody=@RestController

@Target注解:表示注解的使用范围;

@Retention注解:表示注解的生命周期;

@Controller注解:告诉Spring哪些类是控制器,需要被管理。响应默认返回的是页面;

@RestController注解:设定响应返回的是数据。

@Controller+@RestController,即:@RestController,使得响应返回的是数据。

所以在上面使用@RestController注解的时候返回的是一串字符串,但是将注解改为:@Controller时,返回的就是指定页面了。

返回HTML片段

返回json

自动确定返回类型:

Spring会根据返回值的类型自动确定返回类型,可以是JSON、XML等格式。

常见类型:

text/html : HTML格式
text/plain :纯文本格式      
text/xml :  XML格式
image/gif :gif图片格式    
image/jpeg :jpg图片格式
image/png:png图片格式
application/xml :XML数据格式  
application/json:JSON数据格式
application/pdf :pdf格式

eg:

刚刚返回的静态页面的响应,类型是html。

该响应类型为json

使用produces属性指定返回类型

以上响应未指定类型时,返回的是纯文本类型(text/plain)。

指定类型为json:

设置响应状态码

自定义响应header

相关文章:

SpringBoot和SpringMVC

目录 一、springboot项目 (1)创建springboot项目 (2)目录介绍 (3)项目启动 (4)运行一个程序 (5)通过其他方式创建和运行springboot项目 二、SpringMVC…...

免费搭建幻兽帕鲁服务器,白嫖阿里云游戏服务器

阿里云幻兽帕鲁服务器免费搭建方案,先在阿里云高校计划「云工开物」活动领取学生专享300元无门槛代金券,幻兽帕鲁专用服务器4核16G配置26元1个月、149元半年,直接使用这个无门槛300元代金券抵扣即可免费搭建幻兽帕鲁服务器。阿里云服务器网al…...

[技术杂谈]如何下载vscode历史版本

网站模板: https://code.visualstudio.com/updates/v1_85 如果你想下载1.84系列可以访问https://code.visualstudio.com/updates/v1_84​​​​​​ 然后看到: 选择对应版本下载即可,我是windows x64系统选择x64即可开始下载...

nginx slice模块的使用和源码分析

文章目录 1. 为什么需要ngx_http_slice_module2. 配置指令3. 加载模块4. 源码分析4.1 指令分析4.2 模块初始化4.3 slice模块的上下文4.2 $slice_range字段值获取4.3 http header过滤处理4.4 http body过滤处理5 测试和验证 1. 为什么需要ngx_http_slice_module 顾名思义&#…...

AI应用开发-python实现redis数据存储

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…...

2024年Java架构篇之设计模式

2024年Java实战面试题_java 5 年 面试-CSDN博客 1、单例模式...

搭建macOS开发环境-1:准备工作

请记住: 最重要的准备工作永远是:备份数据 !!! 通过图形界面检查 Mac 的 CPU 类型: 在搭载 Apple 芯片的 Mac 电脑上,“关于本机”会显示一个标有“芯片”的项目并跟有相应芯片的名称: 通过命令行检查Mac的CPU类型 …...

【Makefile语法 02】Makefile语法基础

目录 一、Makefile概述 二、Makefile变量 三、Makefile符号 一、Makefile格式 1. 基本格式: targets : prerequisties [tab键]command target:目标文件,可以是 OjectFile,也可以是执行文件,还可以是一个标签&…...

如何写一个其他人可以使用的GitHub Action

前言 在GitHub中,你肯定会使用GitHub Actions自动部署一个项目到GitHub Page上,在这个过程中总要使用workflows工作流,并在其中使用action,在这个使用的过程中,总会好奇怎么去写一个action呢,所以&#xff…...

排序算法的时间复杂度存在下界问题

对于几种常用的排序算法,无论是归并排序、快速排序、以及更加常见的冒泡排序等,这些排序算法的时间复杂度都是大于等于O(n*lg(n))的,而这些排序算法存在一个共同的行为,那就是这些算法在对元素进行排序的时候,都会进行…...

详解洛谷P2016 战略游戏/BZOJ0495. 树的最小点覆盖之战略游戏(贪心/树形DP)

Description Bob喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的办法。现在他有个问题。 他要建立一个古城堡,城堡中的路形成一棵树。他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能了望到所有的路。 注意&…...

解决The Tomcat connector configured to listen on port 8080 failed to start

问题 启动javar报错,提示如下 Description: The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured. Action: Verify the connector’s configuration, identify a…...

深度学习自然语言处理(NLP)模型BERT:从理论到Pytorch实战

文章目录 深度学习自然语言处理(NLP)模型BERT:从理论到Pytorch实战一、引言传统NLP技术概览规则和模式匹配基于统计的方法词嵌入和分布式表示循环神经网络(RNN)与长短时记忆网络(LSTM)Transform…...

C语言的循环结构

目录 前言 1.三种循环语句 1.while循环 2.for循环 2.1缺少表达式的情况 3.do while循环 2.break语句和continue语句 2.1在while循环中 2.2在for循环中 2.3在do while 循环中 3.循环的嵌套 4.go to语句 前言 C语⾔是结构化的程序设计语⾔,这⾥的结构指的是…...

C#用Array类的FindAll方法和List<T>类的Add方法按关键词在数组中检索元素并输出

目录 一、使用的方法 1. Array.FindAll(T[], Predicate) 方法 (1)定义 (2)示例 2.List类的常用方法 (1)List.Add(T) 方法 (2)List.RemoveAt(Int32) 方法 (3&…...

【前后端接口AES+RSA混合加解密详解(vue+SpringBoot)附完整源码】

前后端接口AES+RSA混合加解密详解(vue+SpringBoot) 前后端接口AES+RSA混合加解密一、AES加密原理和为什么不使用AES加密二、RSA加密原理和为什么不使用rsa加密三、AES和RSA混合加密的原理四、代码样例前端1. 请求增加加密标识2. 前端加密工具类3.前端axios请求统一封装,和返…...

React环境配置

1.安装Node.js Node.js官网:https://nodejs.org/en/ 下载之后按默认选项安装好 重启电脑即可自动完成配置 2.安装React 国内使用 npm 速度很慢,可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm。 ①使用 winR 输入 cmd 打开终端 ②依…...

Pandas 数据处理-排序与排名的深度探索【第69篇—python:文本数据处理】

文章目录 Pandas 数据处理-排序与排名的深度探索1. sort_index方法2. sort_values方法3. rank方法4. 多列排序5. 排名方法的参数详解6. 处理重复值7. 对索引进行排名8. 多级索引排序与排名9. 更高级的排序自定义10. 性能优化技巧10.1 使用nsmallest和nlargest10.2 使用sort_val…...

第8节、双电机多段直线运动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】,查看本系列全部文章 摘要:前面章节主要介绍了bresenham直线插值运动,本节内容介绍让两个电机完成连续的直线运动,目标是画一个正五角星 一、五角星图介绍 五角星总共10条直线,10个顶点。设定左下角为原点…...

Elasticsearch:基本 CRUD 操作 - Python

在我之前的文章 “Elasticsearch:关于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x”,我详细讲述了如何建立 Elasticsearch 的客户端连接。我们也详述了如何对数据的写入及一些基本操作。在今天的文章中,我们针对数据的 CRUD (cre…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

aardio 自动识别验证码输入

技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...

负载均衡器》》LVS、Nginx、HAproxy 区别

虚拟主机 先4,后7...

Mac flutter环境搭建

一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...