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.hqwc.cn/news/513049.html

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

相关文章

Nodejs 第四十六章(redis持久化)

redis持久化 Redis提供两种持久化方式: RDB(Redis Database)持久化:RDB是一种快照的形式,它会将内存中的数据定期保存到磁盘上。可以通过配置Redis服务器,设置自动触发RDB快照的条件,比如在指…

低代码与数字经济:推动软件开发创新的新引擎

随着数字经济的飞速发展,传统的软件开发方式已经难以满足快速变化的市场需求。在这一背景下,低代码开发平台应运而生,以其高效、灵活的特性,成为推动数字经济创新发展的重要力量。本文将探讨低代码与数字经济的关系,分…

在 Flutter 中使用 flutter_gen 简化图像资产管理

你是否厌倦了在 Flutter 项目中手动管理图像资产的繁琐任务? 告别手工输入资源路径的痛苦,欢迎使用“Flutter Gen”高效资源管理的时代。在本文中,我将带您从手动处理图像资源的挫折到动态生成它们的便利。 选择1:痛苦手动添加–…

自动化测试环境搭建--Linux内网环境【实操经验】

环境信息 Python版本3.6.8 Jenkins版本2.346.3 Allure版本 2.13.2 环境准备 一、Python需要安装库 allure-pytest (2.13.2) pytest (7.0.1) jsonpath (0.82.2) pytest-html (3.2.0) pytest-ordering (0.6) …

Pytorch学习 day03(Tensorboard、Transforms)

Tensorboard Tensorboard能够可视化loss的变化过程,便于我们查看模型的训练状态,也能查看模型当前的输入和输出结果 在Pycharm中,可以通过按住ctrl,并左键点击某个库来进入源文件查看该库的使用方法SummaryWriter是用来向log_dir…

USB - Linux Kernel Menuconfig

Linux kernel,make menuconfig,和USB相关的,在主菜单选择Device Drivers。 Device Drivers下面,找到USB support。 在USB support下面,就可以对USB相关的item进行设置。 按照从上到下的顺序,打开的设置依次…

数据结构学习(四)高级数据结构

高级数据结构 1. 概念 之所以称它们为高级的数据结构,是因为它们的实现要比那些常用的数据结构要复杂很多,能够让我们在处理复杂问题的过程中, 多拥有一把利器,同时掌握好它们的性质,以及所适应的场合,在…

Linux常用命令(超详细)

一、基本命令 1.1 关机和重启 关机 shutdown -h now 立刻关机 shutdown -h 5 5分钟后关机 poweroff 立刻关机 重启 shutdown -r now 立刻重启 shutdown -r 5 5分钟后重启 reboot 立刻重启 1.2 帮助命令 –help命令 shutdown --help: ifconfig --help:查看…

大模型总结

抛开大模型基座训练,我们还可以关注什么? - 知乎 大模型LLM领域,有哪些可以作为学术研究方向? 方向一:大模型的基础理论问题 大力出奇迹,涌现,目前还需要科学家继续研究理论基础 也就是先有…

Spring中@import注解终极揭秘!

技术概念 它能干啥 Import注解在Spring框架中主要用于解决模块化和配置管理方面的技术问题,它可以帮助开发者实现以下几个目标: 模块化配置:在大型项目中,通常需要将配置信息分散到多个配置类中,以便更好地组织和管…

无名管道数据交换

#include<stdio.h> #include <sys/types.h> #include <sys/stat.h> #include<errno.h> #include <unistd.h> #include<fcntl.h> #include<string.h>int main(int argc, const char *argv[]) {//开辟写入管道1if(mkfifo("./AAA&…

在nginx 服务器部署vue项目

以人人快速开发的开源项目&#xff1a;renren-fast-vue 为例 注&#xff1a;这里开始认为各位都会使用nginx 打包vue项目 npm run build 测试打包的项目是否可以运行 serve dist 可以正常运行 编译报错请移步到&#xff1a;renren-fast-vue1.2.2 项目编译报错: build g…