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://www.hqwc.cn/news/494317.html

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

相关文章

华为手动ipv6-to-ipv4隧道

中间r2的两个接口配置两个地址就行了&#xff0c;其它什么都不用配置 两边出接口R1和R3手动隧道建立&#xff1a;先把IPV4打通&#xff0c;并配置默认路由 再起隧道接口上进行配置&#xff0c;再配置带隧道的默认路由 PC上和上联接口网关只有IPV6地址 最终两个PC可以ping通 …

【Datawhale组队学习:Sora原理与技术实战】Sora技术原理

Sora能力边界探索 最大支持60秒高清视频生成&#xff0c;以及基于已有短视频的前后扩展&#xff0c;同时保持人物/场景的高度一致性如奶茶般丝滑过渡的视频融合能力同一场景的多角度/镜头的生成能力具有动态摄像机运动的视频。随着摄像机的移动和旋转&#xff0c;人和其 他场景…

Stable Diffusion 绘画入门教程(webui)-ControlNet(NormalMap)

法线贴图NormalMap可以把参考图的光影分布关系,法线贴图可以实现在不改变物体真实结构的基础上也能反映光影分布的效果&#xff0c;被广泛应用在 CG 动画渲染和游戏制作等领域 简单来讲可以参考原图的光影明暗关系并还原原图姿态&#xff0c;如下图&#xff1a;左边为原图&…

Java向ES库中插入数据报错:I/O reactor status: STOPPED

Java向ES库中插入数据报错&#xff1a;java.lang.IllegalStateException: Request cannot be executed; I/O reactor status: STO 一、问题问题原因 二、解决思路 一、问题 在使用Java向ES库中插入数据时&#xff0c;第一次成功插入&#xff0c;第二次出现以下错误&#xff1a…

StarRocks之监控管理(内含DashBoard模板)

先看下最终效果图 架构 Prometheus 是一个拥有多维度数据模型的、灵活的查询语句的时序数据库。它可以通过 Pull 或 Push 采集被监控系统的监控项,存入自身的时序数据库中。并且通过丰富的多维数据查询语言,满足用户的不同需求。 Grafana 是一个开源的 Metric 分析及可视化系…

RK3568平台开发系列讲解(基础篇)如何快速学习一套 Linux开发板源码

🚀返回专栏总目录 文章目录 一、基础代码二、驱动代码沉淀、分享、成长,让自己和他人都能有所收获!😄 拿到一份源码和一块评估板,如何快速找到与这块板相关的源码,是很多研发人员都曾遇到过的问题。如果对内核源码结构有大概了解,要完成这些事情也不难,通常可按照基础…

java:关于类的基础知识

一、类和对象 1.什么是类 类是对现实生活中一类具有共同属性和行为的事物的抽象。 2.类的特点&#xff1a; 类是对象的数据类型类是具有相同属性和行为的一组对象的集合 3.什么是对象的属性 属性&#xff1a;对象具有的各种特征&#xff0c;每个对象的每个属性都拥有特定…

GDB之(1)入门指令参数介绍

GDB之(1)基础入门指令参数介绍 Author&#xff1a;Once Day Date: 2022年7月29日/2024年2月26日 漫漫长路&#xff0c;才刚刚开始… 全系列文章请查看专栏: Linux实践记录_Once-Day的博客-CSDN博客 推荐参考文档&#xff1a; GDB: The GNU Project Debugger (sourceware.o…

java数据结构与算法刷题-----LeetCode530. 二叉搜索树的最小绝对差

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 解题思路&#xff1a;时间复杂度O(n)&#xff0c;空间复杂度O(n) 一个有序…

Day02:Web架构前后端分离站Docker容器站集成软件站建站分配

目录 常规化站点部署 站库分离 前后端分离 集成软件搭建Web应用 Docker容器搭建Web应用 建立分配站 静态 与 伪静态 总结 章节知识点&#xff1a; 应用架构&#xff1a;Web/APP/云应用/三方服务/负载均衡等 安全产品&#xff1a;CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等 渗…

docker创建mongodb数据库容器

介绍 本文将通过docker创建一个mongodb数据库容器 1. 拉取mongo镜像 docker pull mongo:3.63.6版本是一个稳定的版本&#xff0c;可以选择安装此版本。 2. 创建并启动主数据库 容器数据卷配置 /docker/mongodb/master/data # 数据库数据目录&#xff08;宿主机&am…

顺丰科技2024届春季校园招聘常见问题解答及SHL测评题库

顺丰科技2024届春季校园招聘常见问题解答及SHL测评题库 Q&#xff1a;顺丰科技2024届校园招聘面向对象是&#xff1f; A&#xff1a;2024届应届毕业生&#xff0c;毕业时间段为2023年10月1日至2024年9月30日&#xff08;不满足以上毕业时间的同学可以关注顺丰科技社会招聘或…