SpringBoot快速入门(黑马学习笔记)

需求

需求:基于SpringBoot的方式开发一个Web应用,浏览器发起请求/hello后,给浏览器返回字符串"Hello World~"。

开发步骤

第一步:创建SpringBoot工程项目

第二步:定义HelloController类,添加方法hello,并添加注解

第三部:测试运行

创建SpringBoot工程(需要联网)

基于Spring官方骨架,创建SpringBoot工程。

基本信息描述完后,勾选Web开发相关依赖。

点击Finish之后,就会联网创建这个SpringBoot工程,创建好之后,结构如下:

● ==注意:在联网创建过程中,会下载相关资源(请耐心等待)==

定义请求处理类

在com.itheima这个包下创建一个子包controller

然后在controller包下新建一个类:HelloController

package com.itheima.controller;
import org.springframework.web.bind.annotation.*;@RestController
public class HelloController {@RequestMapping("/hello")public String hello(){System.out.println("Hello World ~");return "Hello World ~";}}    

运行测试

运行SpringBoot自动生成的引导类

打开浏览器,输入http://localhost:8080/hello

Web分析

浏览器:

● 输入网址:http://192.168.100.11:8080/hello

    ○ 通过IP地址192.168.100.11定位到网络上的一台计算机

    我们之前在浏览器中输入的localhost,就是127.0.0.1(本机)

    ○ 通过端口号8080找到计算机上运行的程序

    localhost:8080,意思是在本地计算机中找到正在运行的8080端口的程序

    ○ /hello是请求资源位置

        ■ 资源:对计算机而言资源就是数据

            ■ web资源:通过网络可以访问到的资源(通常是指存放在服务器上的数据)

       localhost:8080/hello,意思是向本地计算机的8080端口程序,获取资源位置是/hello的数据

            ■ 8080端口程序,在服务器找/hello位置的资源数据,发给浏览器

服务器:(可以理解为ServerSocket)

    ● 接收到浏览器发送的信息(如:/hello)

    ● 在服务器上找到/hello资源

    ● 把资源发送给服务器

    我们在JavaSE阶段学习网络编程时,有讲过网络三要素:

        ● IP:网络中计算机的唯一标识

        ● 端口:计算机中运行程序的唯一标识

        ● 协议:网络中计算机之间交互的规则

        问题:浏览器和服务器两端进行数据交互,使用什么协议?

        答案:http协议

入门程序解析

下面呢,我们在基于今天的核心技术点SpringBoot快速入门案例进行分析。

Spring官方骨架

之前我们创建的SpringBoot入门案例,是基于Spring官方提供的骨架实现的。

Spring官方骨架,可以理解为Spring官方为程序员提供一个搭建项目的模版。

我们可以通过访问:https://start.spring.io/,进入到官方骨架页面

Spring官方生成的SpringBoot项目,怎么使用呢?

● 解压缩后,就会得到一个SpringBoot项目工程

打开pom.xml文件,我们可以看到springboot项目中引入了web依赖和test依赖

结论:不论使用IDEA创建SpringBoot项目,还是直接在官方网站利用骨架生成SpringBoot项目,项目的结构和pom.xml文件中内容是相似的。

起步依赖

在我们之前讲解的SpringBoot快速入门案例中,同样也引用了:web依赖和test依赖

spring-boot-starter-web和spring-boot-starter-test,在SpringBoot中又称为:起步依赖

而在SpringBoot的项目中,有很多的起步依赖,他们有一个共同的特征:就是以spring-boot-starter-作为开头。在以后大家遇到spring-boot-starter-xxx这类的依赖,都为起步依赖。

起步依赖有什么特殊之处呢,这里我们以入门案例中引入的起步依赖做为讲解:

● spring-boot-starter-web:包含了web应用开发所需要的常见依赖

● spring-boot-starter-test:包含了单元测试所需要的常见依赖

spring-boot-starter-web内部把关于Web开发所有的依赖都已经导入并且指定了版本,只需引入spring-boot-starter-web依赖就可以实现Web开发的需要的功能

Spring的官方提供了很多现成的starter(起步依赖),我们在开发相关应用时,只需要引入对应的starter即可。

官方地址:https://docs.spring.io/spring-boot/docs/2.7.2/reference/htmlsingle/#using.build-systems.starters

每一个起步依赖,都用于开发一个特定的功能。

举例:当我们开发中需要使用redis数据库时,只需要在SpringBoot项目中,引入:spring-boot-starter-redis,即可导入redis开发所需要的依赖。

SpringBoot父工程

在我们之前开发的SpringBoot入门案例中,我们通过maven引入的依赖,是没有指定具体的依赖版本号的。

为什么没有指定<version>版本号,可以正常使用呢?

● 因为每一个SpringBoot工程,都有一个父工程。依赖的版本号,在父工程中统一管理。

内嵌Tomcat

问题:为什么我们之前书写的SpringBoot入门程序中,并没有把程序部署到Tomcat的webapps目录下,也可以运行呢?

原因呢,是因为在我们的SpringBoot中,引入了web运行环境(也就是引入spring-boot-starter-web七步依赖),其内部已经集成了内置的Tomcat服务器。

我们可以通过IDEA开发工具右侧的maven面板中,就可以看到当前工程引入的依赖。其中已经将Tomcat的相关依赖传递下来了,也就是说在SpringBoot中可以直接使用Tomcat服务器。

当我们运行SpringBoot的引导类时(运行main方法),就会看到命令行输出的日志,其中占用8080端口的就是Tomcat。

​​​​​​​

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

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

相关文章

虚拟机JVM

虚拟机 1、定义jvm 假想计算机 运行在操作系统之上 和硬件之间没有直接交互 包括 一套字节码指令、寄存器、栈、垃圾回收、堆 一个存储方法域 jvm:承担一个翻译工作&#xff0c;动态的将java代码编译成操作系统可以识别的机器码。 从软件层面屏蔽了不同操作系统在底层硬件与指…

yolov9,使用自定义的数据训练推理

[源码 &#x1f40b;]( GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information) [论文 &#x1f4d8;](arxiv.org/pdf/2402.13616.pdf) 论文摘要&#xff1a;本文介绍了一种新的目标检测…

计算机网络-网络互连与互联网(三)

1.地址解析协议ARP&#xff1a; IP查询MAC地址&#xff0c;询问/回答机制。ARP缓存表、ARP欺骗、ARP病毒、代理ARP、反向RARP。 ARP、RARP分组格式如下&#xff1a; 2.地址解析协议ARP&#xff1a; 缓存表&#xff1a;开始-运行-cmd&#xff0c;输入arp -a(-s&#xff08;绑…

MySQL的事务与隔离级别

1. 什么是事务&#xff1f; 数据库中的事务是指对数据库执行一批操作&#xff0c;而这些操作最终要么全部执行成功&#xff0c;要么全部失败&#xff0c;不会存在部分成功的情况。这个时候就需要用到事务。 最经典的例子就是转账&#xff0c;你要给朋友小白转 1000 块钱&…

JMeter学习(一)工具简单介绍

一、JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序&#xff0c;被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能&#xff0c;例如&#xff1a;静态文件&#xff0c;Java Servlet,CGI Scripts,Java Object,数据库和FTP服务…

swagger-ui.html报错404,解决办法

swagger-ui.html报错404,解决办法&#xff01;现在后端开发项目中&#xff0c;为了节省时间&#xff0c;使用swagger插件&#xff0c;可以方便的快捷生成接口文档。但是如果你在请求前端页面路径比如&#xff1a;http://127.0.0.1:7777/swagger-ui.html。找不到。那是因为你的配…

GEE错误——sentinel-2数据处理过程出现‘QA60‘ did not match any bands

在GEE中出现"QA60 did not match any bands"错误的原因可能是因为在GEE中搜索的数据信息中找不到与"QA60"相匹配的波段。这可能是由于以下几个原因导致的: 1. 数据库中没有包含"QA60"波段的信息。如果影像使用的日期较为新,可能会导致无法在…

k8s 进阶实战笔记 | NFS 动态存储类的部署与使用

文章目录 NFS 动态存储类的部署与使用演示环境说明NFS subdir external provisioner准备 NFS 服务器手动部署 NFS Subdir External Provisioner部署 StorageClass验证使用更多信息 NFS 动态存储类的部署与使用 演示环境说明 演示环境信息&#xff1a;单机K3s 1.28.2 操作系统…

Rust-windows安装环境

文章目录 前言一、Using rustup (Recommended)二、配置vscode解决办法&#xff1a;在终端依次运行如下两条指令&#xff1a; 总结 前言 Rust学习系列&#xff0c;之前介绍了macOS环境下的rust安装方式macOS rust安装。这篇学习windows的rust安装方式。 提示&#xff1a;以下是…

注解@requestBody @requestParam@RequestHeader的区别和使用方式

总的来说&#xff0c;RequestBody用于接收请求体数据&#xff0c;RequestParam用于获取请求参数&#xff0c;RequestHeader用于获取请求头信息 requestBody requestBody 通常在POST请求中&#xff0c;用于指示一个方法参数应该绑定到Web请求的正文部分。通常用于接收JSON或XM…

几种常见的数据模型

什么式数据模型&#xff1a;数据如果要被存储记录或者分析&#xff0c;要有一个组织形式&#xff0c;那么&#xff0c;怎么把数据按照一定规律组织呢&#xff0c;这个就是数据模型数据模型分类 平面模型&#xff1a;或者称为二维模型&#xff0c;通过行列坐标确定数据的形式 纵…

银河麒麟桌面版操作系统密码复杂度设置

这里是桌面版的使用&#xff0c;资深使用者可以使用命令一键修改&#xff0c;这里面不涉及 1密码复杂度设置 1.1开始菜单&#xff0c;选择设置 快捷键wini也可以 1.2打开账户设置 1.3在安全中心的账号保护中 1.4推荐的是默认的策略 密码强度使用默认推荐的就可以&#xf…

电脑缺失XInput1_4.dll文件的解决办法

在电脑操作中&#xff0c;有用户遇到了XInput1_4.dll文件缺失的问题&#xff0c;导致一些依赖该文件的电脑应用无法正常运行&#xff0c;从而影响用户正常使用。接下来小编分享不同的解决方法&#xff0c;帮助用户轻松解决该问题&#xff0c;找回XInput1_4.dll文件&#xff0c;…

单片机文件系统

下载地址 FatFs - Generic FAT Filesystem Module (elm-chan.org)

四川尚熠电子商务有限公司抖音带货可靠吗?

在当今数字化时代&#xff0c;电子商务的兴起使得越来越多的企业开始涉足这一领域。四川尚熠电子商务有限公司作为其中的一员&#xff0c;提供抖音带货服务&#xff0c;吸引了众多商家的关注。那么&#xff0c;四川尚熠电子商务有限公司的抖音带货服务究竟可靠吗&#xff1f;本…

分享泰国市场的一些现状

最近和一个泰国的客户聊天&#xff0c;然后聊起来说从去年开始很多的中国人来到他们那边去建设工厂&#xff0c;因此还在当地形成了一个中国村&#xff0c;在这个中国村里有中国的各种商店&#xff0c;而且居住的也主要是中国人。 从前年开始我们都在讨论中国的一些工厂可能因为…

算法--贪心

这里写目录标题 区间问题区间选点引入算法思想例题代码 最大不相交区间的数量算法思想例题代码 区间分组算法思想例题代码 一级目录二级目录二级目录二级目录 区间问题 区间选点 引入 区间问题会给定几个区间&#xff0c;之后要求我们在数轴上选取尽量少的点&#xff0c;使得…

掌握微信小程序开发的核心要点:从基础到进阶

文章目录 掌握微信小程序开发的核心要点&#xff1a;从基础到进阶一、数据绑定和事件处理1.1 理解小程序的数据绑定机制&#xff0c;实现数据和视图的同步更新1.2 学习如何处理用户交互事件和触发相应的响应逻辑 二、网络请求和数据交互2.1 使用小程序的网络请求API与后端服务器…

智能充电桩案例分析——交流充电桩

随着电动汽车的发展&#xff0c;充电桩也成为当下的一个很热门的工业产品。我们初步接触充电桩&#xff0c;有了点滴的感受。 先简单说说容易一点的交流充电桩。就是通过市电&#xff08;220V,50赫兹&#xff09;给电动汽车提供充电的能源来源。很容易理解&#xff0c;交流…

亿道丨三防平板丨如何从多方面选择合适的三防加固平板?

在如今这个信息爆炸的时代&#xff0c;移动设备已经成为我们生活和工作的必备工具。然而&#xff0c;在一些特殊的场合中&#xff0c;普通的平板电脑可能无法满足需求&#xff0c;比如工厂车间、野外作业、极端天气等环境下。此时&#xff0c;三防平板就成了不二之选。那么&…