当前位置: 首页 > 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…...

React Native 导航系统实战(React Navigation)

导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...