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。在这里插入图片描述

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

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

相关文章

【Python】3. 基础语法(2)

顺序语句 默认情况下, Python 的代码执行顺序是按照从上到下的顺序, 依次执行的. print("1") print("2") print("3")执行结果一定为 “123”, 而不会出现 “321” 或者 “132” 等. 这种按照顺序执行的代码, 我们称为 顺序语句. 这个顺序是很关…

redis主从架构

Redis主从架构 单节点Redis的并发能力是有上限的,要进一步提高redis的并发能力,就需要搭建主从集群,实现读写分离。 修改每个文件夹内的配置文件,将端口分别修改为7001、7002、7003,将rdb文件保存位置都修改为自己所在…

go 程序被意外kill后出现僵尸进程解决方案

go 管理自身子进程(防止僵尸进程出现) 写这篇文章是因为最近有同事竟然会知道异步启动子进程,不会关闭,最后导致导致僵尸进程出现,而且由于子进程会随着业务的使用越开越多,主进程一旦被kill掉就会不得不手动一个一个kill。 大概…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:多态样式)

设置组件不同状态下的样式。 说明: 从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 从API Version 11开始支持另一种写法attributeModifier,可根据开发者需要动态设置属性。 stateStyles stateStyl…

16:00面试,16:06就出来了,问的问题过于变态了。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到2月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

微信报修小程序源码

源码获取方式: 1、搜一搜 万能工具箱合集 然后点击资料库,即可获取资源 一、先看Demo(已更新至4.0.0) 想看界面图片的,辛苦你爬一下楼,点击下方查看资源,进入官方demo 二、功能介绍 1、当前版…

什么是AJAX?它的运用场景有哪些?

文章目录 前言一、什么是AJAX二、AJAX原理是什么三、为什么需要AJAX四、AJAX的使用五、AJAX的应用场景 前言 AJAX 即 Asynchronous Javascript And XML(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。 AJAX 是一种用于创…

LLM(十一)| Claude 3:Anthropic发布最新超越GPT-4大模型

2024年3月4日,Anthropic发布最新多模态大模型:Claude 3系列,共有Haiku、Sonnet和Opus三个版本。 Opus在研究生水平专家推理、基础数学、本科水平专家知识、代码等10个维度,超过OpenAI的GPT-4。 Haiku模型更注重效率,能…

稀碎从零算法笔记Day7-LeetCode:罗马数字转整数

题型:字符串转化、找规律 链接:13. 罗马数字转整数 - 力扣(LeetCode) 来源:LeetCode 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 …

关于我使用numpy.random.choice()遇到坑这件事

做仿真时经常使用到随机数,下面是一个场景:使用np.random.choice([0,1],p[0.5,0.5],size1)去进行随机的二选一,假设需要随机选择1000次,为了保证结果的稳健性,对前述过程重复50次,为了保证可复现性&#xf…

collection及迭代遍历

Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。 package myCollection;import java.util.ArrayList; import java.util.Collection;public class A01CollectionDemo1 {public static void main(String[] args) {//collection是一个接口…

《PyTorch深度学习实践》第十一讲卷积神经网络进阶

一、 1、卷积核超参数选择困难,自动找到卷积的最佳组合。 2、1x1卷积核,不同通道的信息融合。使用1x1卷积核虽然参数量增加了,但是能够显著的降低计算量(operations) 3、Inception Moudel由4个分支组成,要分清哪些是在Init里定义…

基于springboot+vue的精简博客系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

Nginx配置文件的整体结构

一、Nginx配置文件的整体结构 从图中可以看出主要包含以下几大部分内容: 1. 全局块 该部分配置主要影响Nginx全局,通常包括下面几个部分: 配置运行Nginx服务器用户(组) worker process数 Nginx进程PID存放路径 错误…

Linux 防火墙 操作命令【实用】

防火墙操作: 描述命令查看防火墙状态systemctl status firewalld、firewall-cmd --state暂时关闭防火墙systemctl stop firewalld永久关闭防火墙systemctl disable firewalld开启防火墙systemctl start firewalld开放指定端口firewall-cmd --zonepublic --add-port…

080|为什么阿里的价值观值得你关注?

在阿里巴巴20周年年会现场,万众瞩目之下,马云和张勇完成了阿里巴巴董事长职务的交接。 不过你也知道,这次接棒在一年前就已经公布了,在年会上只是一个仪式。在20周年年会过后,我找到了互联网圈的资深媒体人阳淼&#…

爬虫逆向网站案例

一、相关网页 东方财富人气排行榜 二、查找url 三、寻找curl并复制 四、打开Convert curl commands to code (curlconverter.com) 五、修改并执行代码 import requestscookies {st_si: 73974981954644,st_pvi: 39724919122964,st_sp: 2024-03-05%2018%3A27%3A22,st_inirUrl:…

8个优秀的CSS实践,开发web应用

HTML面试题部分 1.H5的新特性有哪些 2.Label的作用是什么?是怎么用的? 3.HTML5的form如何关闭自动完成功能 4.dom如何实现浏览器内多个标签页之间的通信? 5.实现不使用 border 画出1px高的线,在不同浏览器的标准模式与怪异模式下都 能保持一…

【go语言开发】redis简单使用

本文主要介绍redis安装和使用。首先安装redis依赖库,这里是v8版本;然后连接redis,完成基本配置;最后测试封装的工具类 文章目录 安装redis依赖库连接redis和配置工具类封装代码测试 欢迎大家访问个人博客网址:https://…

Linux进程详细介绍

文章目录 Linux进程1、计算机体系结构和操作系统管理1.1、计算机体系结构 -- 硬件1.2、操作系统(Operator System) -- 软件 2、进程2.1、进程基本概念2.2、进程标识符2.2.1、获取当前进程标识符和当前进程的父进程标识符2.2.2、通过系统调用创建进程 -- …