Java之SpringBoot入门(含Spring Mvc)

1.Spring Boot Helper的安装

首先我们要装好Spring Boot Helper

但是由于直接在IDEA中下的是收费版,在学习阶段我们可以去官网下载一些免费版使用

Spring Boot Helper - IntelliJ IDEs Plugin | Marketplace(点击即可进入官网)

然后在IDEA中导入即可,这样之后你再创建项目的时候就可以看见Spring Initializr的选项了。

2.创建Spring Boot项目

再就是创建项目以后我们需要修改一下pom.xml文件,尤其是把这个版本后面的release去掉

其他标红的在新建以后右下角会弹出窗口,点击相关选项进行下载,然后等待一段时间即可。

至此我们就可以开始编写我们的程序呢。

3.编写第一个Spring Boot程序

3.1程序编写

就如同我们刚学编程一样,我们第一个程序就是输出Hello Spring

其中

  • RequestMapping注解是Spring MVC框架中的一个核心注解,用于将HTTP请求映射到特定的处理方法上。
  • 它通过URL路径、请求方法(如GET、POST)、请求参数等条件来匹配请求,并将匹配的请求转发到相应的方法进行处理。

所以我们可以理解成一个类方法和成员方法的注释,后续只需要用浏览器进行访问即可。(后续演示)

@RestController是Spring Framework中的一个注解,它主要用于标识一个类是RESTful服务的控制器(Controller)。具体来说,@RestController注解是@Controller和@ResponseBody注解的组合体,它结合了这两个注解的功能。(了解即可,此处暂时不过多解释)

3.2运行程序

直接在浏览器就可以访问了,不过在学习这个之前大家应该需要具备网络的基础知识,例如127.0.0.1是本地环回地址,以及url的含义,如果有疑问可以看之前的文章先进行了解。

3.学习Spring Mvc

1.MVC 定义

MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分 为模型、视图和控制器三个基本部分
View(视图) 指在应⽤程序中专⻔⽤来与浏览器进⾏交互,展⽰数据的资源.
Model(模型) 是应⽤程序的主体部分,⽤来处理程序中数据逻辑的部分.
Controller(控制器)可以理解为⼀个分发器,⽤来决定对于视图发来的请求,需要⽤哪⼀个模型
来处理,以及处理完后需要跳回到哪⼀个视图。即⽤来连接视图和模型

2.什么是Spring MVC ?

MVC 是⼀种架构设计模式, 也⼀种思想, ⽽ Spring MVC 是对 MVC 思想的具体实现. 除此之外, Spring
MVC还是⼀个Web框架.
总结来说,Spring MVC 是⼀个实现了 MVC 模式的 Web 框架.
所以, Spring MVC主要关注有两个点:
1. MVC
2. Web框架
Spring MVC 全称是 Spring Web MVC
其实, Spring MVC 我们在前⾯已经⽤过了, 在创建 Spring Boot 项⽬时,我们勾选的 Spring Web 框架 其实就是 Spring MVC 框架:
Spring Boot 只是实现Spring MVC的其中⼀种⽅式⽽已.
Spring Boot 可以添加很多依赖, 借助这些依赖实现不同的功能. Spring Boot 通过添加Spring Web
MVC框架, 来实现web功能.

3.学习Spring Mvc

既然是 Web 框架, 那么当⽤⼾在浏览器中输⼊了 url 之后,我们的 Spring MVC 项⽬就可以感知到⽤⼾
的请求, 并给予响应.
咱们学习Spring MVC, 重点也就是学习如何通过浏览器和⽤⼾程序进⾏交互.
主要分以下三个⽅⾯:
1. 建⽴连接:将⽤⼾(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的
Spring 程序。
2. 请求: ⽤⼾请求的时候会带⼀些参数,在程序中要想办法获取到参数, 所以请求这块主要是 获取参数
的功能.
3. 响应: 执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤⼾, 也就是响应.
第一个问题@RequestMapping 是 GET 还是 POST 请求?

GET请求:
浏览器发送的请求类型都是get, 通过以上案例, 可以看出来 @RequestMapping ⽀持get请求.
POST 请求:
我们通过form表单来构造请求:
创建test.html, html代码:

既⽀持Get请求, ⼜⽀持Post请求. 同理, 也⽀持其他的请 求⽅式.
那如何指定GET或者POST类型呢?
指定GET/POST⽅法类型
我们可以显⽰的指定@RequestMapping 来接收
RequestParam
@RequestParam 是 Spring 框架中用于处理 HTTP 请求参数的注解,它主要用于将请求 URL 中的参数值绑定到控制器方法的参数上。以下是关于  @RequestParam 的详细解释:
  • 绑定参数@RequestParam 可以将请求 URL 中的参数值绑定到控制器方法的参数上,使得开发者可以在方法体内直接使用这些参数值。
  • 参数名指定:通过 value 或 name 属性可以指定请求参数的名称,如果请求参数名和方法参数名一致,则可以省略该属性。
  • 默认值defaultValue 属性允许为参数指定一个默认值,当请求中不包含该参数时,将使用默认值。
  • 必填参数:虽然 required 属性的默认值通常为 false(表示参数不是必需的),但在某些情况下,可以将其设置为 true 以确保请求中必须包含该参数,否则将抛出异常。
PostMan
在我们后面的学习过程中还需要使用PostMan
大家可以先下载下来进行使用( https://www.postman.com/downloads/
由于PostMan容易上手,此处不过多赘述。
接口测试之Postman使用全图文指南(原来使用Postman测试API接口如此简单)_postman怎么测接口-CSDN博客(这里推荐一篇博客,大家可以自行了解)
1.从路径(url)中获取参数@RequestMapping

使用@RequestMapping即可从路径(url)中读取参数

2.上传⽂件@RequestPart
3.获取Cookie和Session
回顾 Cookie
HTTP 协议⾃⾝是属于 "⽆状态" 协议.
"⽆状态" 的含义指的是:
默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信, 和下次通信之间没有直接的联系.
但是实际开发中, 我们很多时候是需要知道请求之间的关联关系的.
例如登陆⽹站成功后, 第⼆次访问的时候服务器就能知道该请求是否是已经登陆过了.
上述图中的 "令牌" 通常就存储在 Cookie 字段中
此时在服务器这边就需要记录"令牌"信息, 以及令牌对应的⽤⼾信息, 这个就是 Session 机制所做的⼯ 作.
理解Session
我们先来了解⼀下什么是会话.
会话: 对话的意思
在计算机领域, 会话是⼀个客⼾与服务器之间的不中断的请求响应. 对客⼾的每个请求,服务器能够识 别出请求来⾃于同⼀个客⼾. 当⼀个未知的客⼾向Web应⽤程序发送第⼀个请求时就开始了⼀个会话. 当客⼾明确结束会话或服务器在⼀个时限内没有接受到客⼾的任何请求时,会话就结束了.
服务器同⼀时刻收到的请求是很多的. 服务器需要清楚的区分每个请求是从属于哪个⽤⼾, 也就是属于 哪个会话, 就需要在服务器这边记录每个会话以及与⽤⼾的信息的对应关系. Session是服务器为了保存⽤⼾信息⽽创建的⼀个特殊的对象.
Session的本质就是⼀个 "哈希表", 存储了⼀些键值对结构. Key 就是SessionID, Value 就是⽤⼾信息(⽤ ⼾信息可以根据需求灵活设计).
Cookie 和 Session 的区别
Cookie 是客⼾端保存⽤⼾信息的⼀种机制. Session 是服务器端保存⽤⼾信息的⼀种机制.
Cookie 和 Session之间主要是通过 SessionId 关联起来的, SessionId 是 Cookie 和 Session 之间的桥梁
Cookie 和 Session 经常会在⼀起配合使⽤. 但是不是必须配合. 完全可以⽤ Cookie 来保存⼀些数据在客⼾端. 这些数据不⼀定是⽤⼾⾝份信息, 也不⼀定是 SessionId
Session 中的sessionId 也不需要⾮得通过 Cookie/Set-Cookie 传递, ⽐如通过URL传递.
HttpServletRequest和HttpServletResponse
HttlServletRequest
HttpServletRequest和HttpServletResponse是Spring MVC⽅法的内置对象. 需要时直接在⽅法中添加声明即可
HttpServletRequest 对象代表客⼾端的请求, 当客⼾端通过HTTP协议访问服务器时,HTTP请
求头中的所有信息都封装在这个对象中,通过这个对象提供的⽅法,可以获得客⼾端请求的所有信
息.
HttpServletResponse 对象代表服务器的响应. HTTP响应的信息都在这个对象中, ⽐如向客⼾
端发送的数据, 响应头, 状态码等. 通过这个对象提供的⽅法, 可以获得服务器响应的所有内容
Spring MVC在这两个对象的基础上进⾏了封装, 给我们提供更加简单的使⽤⽅法.
获取Cookie
下面演示如何获取Cookie
也可以单独获取指定cookie
获取Session
根据sessionid设置和获取session对象
同样可以用@sessionAttribute进行指定
获取header

使用如下

HttpServletResponse
1.返回静态页面

注意

1.要把@RestController换成@Controller

2./的省略问题

1. 返回值处理

  • RestController:这个注解结合了@Controller和@ResponseBody的功能。它默认将所有处理请求的方法的返回值直接作为响应体内容返回,主要用于构建RESTful API。返回的数据格式通常是JSON或XML,这取决于请求中的Accept头部或配置的消息转换器。
  • Controller:这个注解的返回值通常会经过视图解析器解析,然后返回给用户一个渲染后的HTML页面。如果需要在Controller中返回JSON或XML数据,需要在方法上额外添加@ResponseBody注解。

2. 用途和场景

  • RestController:主要用于构建RESTful Web服务,它简化了开发RESTful风格的控制器的代码,使得开发者能够更加专注于业务逻辑的实现,而无需关注底层的请求-响应处理细节。它支持get、post、put、delete等HTTP方法,适用于前后端分离的架构。
  • Controller:更多地与视图渲染和页面跳转相关,适用于传统的MVC(Model-View-Controller)架构。通过页面模板引擎(如JSP、Thymeleaf等)将数据渲染成HTML页面返回给用户。
2.设置状态码

3.设置ContentType

4.设置其他Header

void setHeader(String name, String value) 设置⼀个带有给定的名称和值的 header. 如果 name
已经存在, 则覆盖旧的值

至此我们Spring Mvc入门暂时结束,我们之后的博客再见,感谢观看!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【practise】删除有序数组中的重复项

关于博主: 今天分享一道简单的关于“双指针”算法的题目。算是双指针中非常基础的题目,有兴趣可以借鉴一波~ 目录 1.题目介绍2.题解思路:双指针法3.代码示例 1.题目介绍 题目链接:LINK 本题要求是:对给定的有序数组…

回溯分割+子集篇--代码随想录算法训练营第二十二天| 131.分割回文串,93.复原IP地址,78.子集,90.子集II

131.分割回文串 题目链接:. - 力扣(LeetCode) 讲解视频:131.分割回文串 题目描述: 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串 。返回 s 所有可能的分割方案。 示例 …

sql二次注入实战--2018年网顶杯

网址:BUUCTF在线评测 (buuoj.cn) 当我们进入后显示这个页面: 当我们第一次点击发帖的时候就会跳转到登陆页面,上面有提示,告诉我们账号为zhangwei,密码为zhangwei***: 这里我们可以使用bp抓包工具来进行暴力破解密码&…

makefile举例说明

文章目录 makefile文件config.mk配置文件common.mk文件 目录结构 makefile文件 include config.mk导入config.mk的文件,通常包含项目的配置变量。 all:for dir in $(BUILD_DIR); \do \make -C $$dir; \doneall是项目主目标,遍历BUILD_DIR变量每个子目录…

基于springboot+vue+uniapp的“口腔助手”小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

Python开发: 飞机大战 小游戏

玩法 你可以控制飞机左右移动,躲避敌机子弹,同时发射自己的炮弹,将敌人击落! 部署方案: 1、代码如下图; 2、将代码保存到一个python中,比如planeFight.py; 3、在你的电脑中安装p…

为什么需要云仓?

云仓,即云端仓储管理,是指通过互联网技术整合和管理仓储资源,实现高效、低成本的库存管理和物流服务。随着电子商务的发展和企业供应链全球化的加剧,云仓成为现代企业管理的一种重要手段。 1、云仓可以显著提高仓储管理效率&#…

算法测试.

一.CodeForces 1829A 题意&#xff1a; 题目意思就是给你t个字符串&#xff0c;让你找出每个串与codeforces这个串有多少不同的字母&#xff1b; 题解&#xff1a; 定义一个变量循环比较字符串&#xff0c;不相同计数即可&#xff1b; 代码&#xff1a; #include <iost…

SQL二次注入

目录 1.什么是二次注入&#xff1f; 2.二次注入过程 2.1寻找注入点 2.2注册admin#用户 2.3修改密码 1.什么是二次注入&#xff1f; 当用户提交的恶意数据被存入数据库后&#xff0c;因为被过滤函数过滤掉了&#xff0c;所以无法生效&#xff0c;但应用程序在从数据库中拿…

TCP Analysis Flags 之 TCP Window Full

前言 默认情况下&#xff0c;Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态&#xff0c;并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时&#xff0c;会对每个 TCP 数据包进行一次分析&#xff0c;数据包按照它们在数据包列表中出现的顺序进行处理。可…

supermap制作发布二三维地图服务

一、下载安装 软件版本&#xff1a; SuperMap iDesktopX 11i(2023) SP1 for Windows SuperMap iServer 11i(2023) SP1 for Windows 下载地址&#xff1a; http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx 二、运行 服务端&#xff1a;双击iserver的…

C# Unity 面向对象补全计划 设计者模式 之 单例模式

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识&#xff0c;看不懂没关系 了解我的专栏C#面向对象与进阶:http://t.csdnimg.cn/mIitr&#xff0c;尤其是关于类的那篇文章即…

Python(模块---pandas+matplotlib+pyecharts)

import pandas as pd import matplotlib.pyplot as plt dfpd.read_excel(简易数据.xlsx) # print(df) plt.rcParams[font.sans-serif][SimHei] #设置画布的大小 plt.figure(figsize(10,6)) labelsdf[电影中文名] ydf[国籍] # print(labels) # print(y)# import pandas as pd im…

在Stable Diffusion中驱动Tesla P40

一、安装P40显卡 在前面我的“在win10电脑上搭建python环境下的本地AI绘画工具Stable Diffusion”博文中&#xff0c;Stable Diffusion的运行完全依赖CPU和内存&#xff0c;因此每生成一次图片&#xff0c;需几小时之多&#xff0c;我常是在临下班时开始生成&#xff0c;到第二…

Go语言标准库中的双向链表的基本用法

什么是二分查找区间&#xff1f; 什么是链表&#xff1f; 链表节点的代码实现&#xff1a; 链表的遍历&#xff1a; 链表如何插入元素&#xff1f; go语言标准库的链表&#xff1a; 练习代码&#xff1a; package mainimport ("container/list""fm…

连接一切:Web3如何重塑物联网的未来

传统物联网的挑战 物联网&#xff08;IoT&#xff09;正在迅速改变我们的世界&#xff0c;通过将各种设备连接到互联网&#xff0c;它使得设备能够相互交流&#xff0c;提供智能化的服务和解决方案。然而&#xff0c;随着物联网的迅猛发展&#xff0c;安全性、隐私保护和设备互…

React 知识点(二)

文章目录 一、React 组件二、React 组件通信 - 父子通信三、React 组件通信 - 子父通信四、React 组件通信 - 兄弟通信五、React 组件通信 - 跨组件通信(祖先)六、结合组件通信案例七、props-children 属性八、props-类型校验九、React 生命周期十、setState 扩展 一、React 组…

MySQL的简单介绍

文章目录 数据库关系型数据库非关系型数据”数据库的概念和用途MySQL数据库服务器、数据库和表的关系数据库的创建和删除表创建表修改常见的数据类型和约束字符串类型日期和时间类型PRIMARY KEY使用AUTO_INCREMENT使用UNIQUE使用FOREIGN KEY使用 SQL语言基础SQL语言简介SQL分类…

C++入门基础知识

在之前我们学习了C语言和初阶数据结构的相关知识&#xff0c;现在已经有了一定的代码能力和对数据结构也有了基础的认识&#xff0c;接下来我们将进入到新的专题当中&#xff0c;这个专题就是C。在C中我们需要花费更大的精力和更长的时间去学习这门建立在C语言基础之上的计算机…