day04-SpringBootWeb入门

一、SpringBootWeb快速入门

1 需求

需求:基于 SpringBoot 的方式开发一个 web 应用,浏览器发起请求 /hello后,给浏览器返回字符串“Hello World ~”。
在这里插入图片描述

2 开发步骤

第1步:创建 SpringBoot 工程项目
第2步:定义 HelloController 类,添加方法 hello,并添加注解
第3步:测试运行
在这里插入图片描述

二、HTTP协议

1 HTTP-概述

概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
在这里插入图片描述

特点:

  1. 基于TCP协议:面向连接,安全
  2. 基于请求-响应模型的:一次请求对应一次响应
  3. HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
    1️⃣缺点:多次请求间不能共享数据。
    2️⃣优点:速度快

2 HTTP-请求协议

在这里插入图片描述

在这里插入图片描述

GET请求和POST请求的区别:
在这里插入图片描述

3 HTTP-响应协议

在这里插入图片描述
在这里插入图片描述

3.1 响应状态码

在这里插入图片描述

3.2 常见的响应状态码

状态码英文描述解释
200OK客户端请求成功,即处理成功,这是我们最想看到的状态码
302Found指示所请求的资源已移动到由Location响应头给定的 URL,浏览器会自动重新访问到这个页面
304Not Modified告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400Bad Request客户端请求有语法错误,不能被服务器所理解
403Forbidden服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
404Not Found请求资源不存在,一般是URL输入有误,或者网站资源被删除了
405Method Not Allowed请求方式有误,比如应该用GET请求方式的资源,用了POST
428Precondition Required服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429Too Many Requests指示用户在给定时间内发送了太多请求(“限速”),配合 Retry-After(多长时间后可以请求)响应头一起使用
431 Request Header Fields Too Large请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
500Internal Server Error服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503Service Unavailable服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好

状态码大全:https://cloud.tencent.com/developer/chapter/13553

三、WEB服务器-Tomcat

1 简介

1.1 Web服务器

Web 服务器是一个软件程序,对 HTTP 协议的操作进行封装,使得程序员不必直接对协议进行操作,让 Web 开发更加便捷。主要功能是 “提供网上信息浏览服务” 。

Web服务器软件使用步骤

  1. 准备静态资源
  2. 下载安装 Web 服务器软件
  3. 将静态资源部署到 Web 服务器上
  4. 启动Web服务器使用浏览器访问对应的资源

1.2 Tomcat

概念: Tomcat 是 Apache 软件基金会一个核心项目,是一个开源免费的轻量级Web 服务器,支持 Servlet/JSP 少量 JavaEE 规范。

JavaEE:Java Enterprise Edition,Java 企业版。指 Java 企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF

Tomcat 也被称为 Web容器、Servlet 容器。Servlet 程序需要依赖于 Tomcat 才能运行

官网:https://tomcat.apache.org/

2 基本使用

2.1 下载

直接从官方网站下载:https://tomcat.apache.org/download-90.cgi

Tomcat软件类型说明:

  1. tar.gz 文件,是 linux 和 mac 操作系统下的压缩版本
  2. zip文件,是 window 操作系统下压缩版本(我们选择zip文件)

2.2 安装与卸载

安装: Tomcat是绿色版,直接解压即安装

在这里插入图片描述

bin:目录下有两类文件,一种是以 .bat 结尾的,是 Windows 系统的可执行文件,一种是以 .sh 结尾的,是 Linux 系统的可执行文件。

卸载:卸载比较简单,可以直接删除目录即可

2.3 启动与关闭

启动 Tomcat
双击 tomcat 解压目录 /bin/startup.bat 文件即可启动 tomcat

注意: tomcat 服务器启动后,黑窗口不会关闭,只要黑窗口不关闭,就证明 tomcat 服务器正在运行。

注意事项 :Tomcat 启动的过程中,遇到控制台有 中文乱码 时,可以通常修改 conf/logging.prooperties 文件解决
在这里插入图片描述

关闭:关闭有三种方式

  1. 强制关闭:直接x掉Tomcat窗口(不建议)
  2. 正常关闭:bin\shutdown.bat
  3. 正常关闭:在Tomcat启动窗口中按下 Ctrl+C

2.4 常见问题

问题1:Tomcat 启动时,窗口一闪而过
检查 JAVA_HOME 环境变量是否正确配置

问题2:端口号冲突
发生问题的原因:Tomcat 使用的端口被占用了。
解决方案:换 Tomcat 端口号
要想修改 Tomcat 启动的端口号,需要修改 conf/server.xml 文件
在这里插入图片描述
在这里插入图片描述

2.5 Tomcat 部署项目

将项目放置到 webapps 目录下, 即部署完成

3 入门程序解析

3.1 Spring官方骨架

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

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

官方骨架页面 : https://start.spring.io/

3.2 起步依赖

spring-boot-starter-xxx 这类的依赖,都为起步依赖。

在这里插入图片描述
起步依赖:

  1. spring-boot-starter-web:包含了web应用开发所需要的常见依赖。
  2. spring-boot-starter-test:包含了单元测试所需要的常见依赖。
  3. 官方提供的starter:https://docs.spring.io/spring-boot/docs/2.7.4/reference/htmlsingle/#using.build-systems.starters

3.3 SpringBoot 父工程

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

为什么没有指定版本号,可以正常使用呢?
因为每一个 SpringBoot 工程,都有一个父工程。依赖的版本号,在父工程中统一管理。在这里插入图片描述

3.4 内嵌 Tomcat

在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年k8s最新版本安装教程

k8s安装教程 1 k8s介绍2 环境搭建2.1 主机准备2.2 主机初始化2.2.1 安装wget2.2.2 更换yum源2.2.3 常用软件安装2.2.4 关闭防火墙2.2.5 关闭selinux2.2.6 关闭 swap2.2.7 同步时间2.2.8 修改Linux内核参数2.2.9 配置ipvs功能 2.3 容器安装2.3.1 设置软件yum源2.3.2 安装docker软…

Claude3、Gemini、Sora VS GPT-4:AI技术如何助力科研与产业发展?

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚…

【Java EE】文件内容的读写⸺数据流

目录 🌴数据流的概念🌸数据流分类 🌳字节流的读写🌸InputStream(从文件中读取字节内容)🌻示例1🌻示例2🌻利用 Scanner 进行字符读取 🌸OutputStream(向文件中写内容&…

阿里云重新更新系统导致秘钥失效

报错解决方案: ssh-keygen -f "/Users/pengzhanliang/.ssh/known_hosts" -R "39.105.149.49"这个命令会从~/.ssh/known_hosts文件中移除与IP地址39.105.149.49相关的所有条目 再次尝试连接到远程服务器。这次,SSH将提示您接受新的主…

简单、透明、安全、高度集成!龙蜥可信 SBOM 能力探索与实践

近两年,软件供应链有非常多安全事件,包括软件供应链的各个阶段开发、构建、交付、使用等每个环节都有很多的软件供应链的安全事件发生。在 2023 龙蜥操作系统大会全面建设安全生态分论坛上,阿里云技术专家郑耿、周彭晨分享了龙蜥社区在构建 S…

企业计算机服务器中了faust勒索病毒怎么解密,faust勒索病毒解密流程

网络在为企业提供便利的同时,也为企业的数据安全问题带来严重威胁,网络安全是众多企业关系的主要话题,近期,云天数据恢复中心接到一大波企业的求助,企业的计算机服务器都被faust后缀勒索病毒攻击,导致企业计…

Electron 多显示器渲染

Electron打出的包,如果当前有俩个显示器,则可以配置当前显示倒哪个显示器上,或者可以配置不同的显示器,启动不同的项目,只在Windows和Linux下测试过,Mac没有真机,可以利用docker安装MacOS环境&a…

Jmeter性能测试 -3数据驱动实战

什么是数据驱动? 从数据文件中读取测试数据,驱动测试过程的一种测试方法。数据驱动可以理解为更高级的参数化。 特点:测试数据与测试代码分离;数据控制过程 好处:降低开发和维护成本,减少代码量&#xf…

如何做代币分析:以 LDO 币为例

作者:lesleyfootprint.network 编译:mingfootprint.network 数据源:LDO 代币仪表板 (仅包括以太坊数据) 在加密货币和数字资产领域,代币分析起着至关重要的作用。代币分析指的是深入研究与代币相关的数据…

数字社交时代的引领者:Facebook的元宇宙探索

引言: 在当今数字社交时代,人们的社交方式正在经历着翻天覆地的变化。随着虚拟现实技术的不断发展和元宇宙概念的崛起,社交网络正朝着一个全新的未来迈进。作为全球最大的社交网络平台之一,Facebook正在积极探索元宇宙时代的社交…

理解npm run dev 和 npm run serve的区别

文章目录 1. 分析npm run2. dev与serve的区别 1. 分析npm run npm npm 是 Node.js 的包管理器,它允许你安装、更新、删除和管理 Node.js 的模块和应用程序。 run run 是 npm 的一个子命令,用于执行在 package.json 文件的 scripts 部分定义的脚本。 dev…

C++初阶篇----类与对象下卷

目录 1.再谈析构函数1.1构造函数体赋值1.2 初始化列表1.3 explicit关键字 2.Static成员2.1概念2.2 特性 3.友元3.1 概念3.2友元函数3.3 友元类 4.内部类4.1 概念 5.匿名对象5.1 概念 6.拷贝对象时的一些编译器优化7.再次理解封装 1.再谈析构函数 1.1构造函数体赋值 在对类的实…

ssm基于javaEE+springboot校园闲置二手物品拍卖交易平台_ngad7

为提升浏览用户观感及使用体验,本系统要具有易用性和美观性。通过页面的简单提示就可完成操作,校园闲置物品交易平台展示界面应该清楚简洁,使用户通过美观的前台页面能快速定位想要浏览的校园闲置物品交易平台信息。后台界面也应简约&#xf…

Ubuntu22.04系统 安装cAdvisor提示找不到 CPU 的挂载点错误解决办法。

如果我们在安装cAdvisor时容器启动不起来 查看日志如下图所示 1、查看cgroup文件系统是v2 还是 v1 mount | grep cgroup 如图所示我的是v2 , cAdvisor 目前的最新版本(v0.39.0)仍然只支持 cgroup v1,不支持 cgroup v2。因此&#…

CAN通信篇 - ComM模块配置(六)

文章目录 ComMConfigSetComMChannelComMUserPerChannelComMNetworkManagementComMPncComMGeneralComMGeneration总结ComM模块时通信控制模块。在ComM模块中存在三个概念:通道、用户、Pnc,但在本文我们暂时先不介绍Pnc相关功能需要的配置,仅关注基本CAN通信需要的配置。ComM模…

本机虚拟机centos7设置固定ip

一、配置虚拟机网络 1、点击编辑 2、点击更改设置 记住子网地址:192.168.121.0 点击确定 二、配置虚拟机网络配置文件 首先进去root中,然后进入vim编辑器中 (1)su - root (2) vim /etc/sysconfig/network-scripts/ifcfg-ens33 在VIM编辑器中修改并添加…

MATLAB环境下基于离散小波变换的体外血管图像处理

下面简要介绍小波变换的部分应用。 信号去噪。小波去噪是根据有效信号和噪声信号在小波变换后表现出的不同特性实现的,一般可用于去除语音、图像、视频等中的噪声信号。小波去噪方法根据对小波系数的非线性处理方式分为三类,分别是小波变换模极大值去噪…

【C++】string 类

1. 标准库中的string类 注意: 1. string是表示字符串的字符串类 2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。 比特就业课 3. string在底层实际是:basic_string模板类的别名,typedef b…

HBuilder X 关于404问题

大家好,我是晴天学长,本次分享来自昨天的bug调试,本分享感谢一位友友的支持,提供了样例图片。💪💪💪 1) .先项目再html文件 创建项目再创建html,实也不复杂,就是一个库的事情&#…

力扣经典题目解析--反转链表

原题地址: . - 力扣(LeetCode) 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 题目解析 链表(Linked List&…