Javaweb学习路线(3)——SpringBoot入门、HTTP协议与Tomcat服务器

一、SpringBoot入门

(一)第一个Springboot案例
1、创建Springboot工程,添加依赖。
2、定义类,添加方法并添加注释
3、运行测试。

pom.xml(框架自动生成)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.12</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zengoo</groupId>
    <artifactId>JavaEEpro</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>JavaEEpro</name>
    <description>JavaEEpro</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

控制类Controller

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("Hello World!");
        return "Hello World!";
    }
}

启动Springboot

在这里插入图片描述

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

二、HTTP协议

(一)概述
1、概念: HTTP(Hyper Text Transfer Protocal),超文本传输协议,规定了浏览器和服务器之间传输数据的规则。

2、特点
(1)基于TCP协议: 面向连接、安全
(2)基于请求-响应型: 一次请求对应一次响应
(3)HTTP是一种无状态协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。

3、优缺点

  • 优点: 速度快。
  • 缺点: 多次请求间不能共享数据。

2、数据头
(1)数据传输状态

Request URL: http://localhost:8080/hello
Request Method: GET
Status Code: 200
Remote Address: [::1]:8080
Referrer Policy: strict-origin-when-cross-origin

(2)请求头

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,
image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Cookie: Idea-215396a0=c0d39e88-d7fa-44d7-9967-81f5a14b6018
Host: localhost:8080
Sec-Ch-Ua: "Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML
, like Gecko) Chrome/114.0.0.0 Safari/537.36

(3)响应头

Connection: keep-alive
Content-Length: 12
Content-Type: text/html;charset=UTF-8
Date: Mon, 12 Jun 2023 06:30:01 GMT
Keep-Alive: timeout=60

(二)请求协议

1、请求行: 是指请求数据的第一行(请求方式+资源路径+协议)

2、请求头: 是指请求数据的第二行开始的请求数据以 【key: value】的形式存储。

描述说明
Host请求的主机名
User-Agent浏览器版本
Accept浏览器接收资源类型
Accept-Language浏览器偏好语言
Accept-Encoding浏览器可支持的压缩类型
Content-Type请求主体类型
Content-Length请求主体大小(Byte)

3、请求体: post请求存放请求数据的区域。

以Post请求之后的控制台输出

在这里插入图片描述
4、补充知识:
(1)GET请求: 请求数据大小有限,范围为地址栏字符串输入长度
(2)POST请求: 请求数据没有限制,使用JSON格式进行传输

(三)响应协议

1、响应行: 响应数据的第一行。(协议+状态码+描述)
(1)状态码

状态码说明
1xx响应中-临时状态码,表示数据已接收,告诉客户端应该继续请求或如果已完成请忽略它
2xx成功-表示请求已成功接收,处理已完成
3xx重定向-重定向到其它地方,让客户端重新发起请求以完成整个处理
4xx客户端错误-处理发生错误,责任在客户端,如请求了不存在的资源,客户端未被授权,禁止访问等
5xx服务器错误-处理发生错误,责任在服务端,如程序抛出异常等

常见状态码

状态码英文描述解释
200OK客户端请求成功
302Found表示请求的资源已由Location响应头给定的URL
304Not Modified表示缓存中已有数据,可以直接获取
400Bad Request请求有语法错误,服务器无法解析
403Forbidden请求已收到,但拒绝服务
404Not Found请求资源不存在。一般是URL输入错误或网站资源被删除
405Method Not Allowed请求方法错误。应使用GET方法的资源,使用了POST方法
428Procondition Required服务器要求必须带有特殊请求头的请求才能访问
429Too Many Request请求过多错误。配合Retry-After(间隔后使用)响应头一起使用
431Request Header Fields Too Large请求头过大。服务器无法接受。
500Internal Server Error服务器发生不可预测的异常
503Server Unavailable服务器尚未准备好

响应码大全: https://cloud.tencent.com/developer/chapter/13553

2、响应头: 相应数据的第二行开始的对相应数据端的描述,以 【key: value】的形式存储

描述说明
Content-Type响应主体类型
Content-Length响应主体大小(Byte)
Content-Encoding响应压缩算法
Cache-Control客户端缓存配置
Set-Cookie告诉浏览器当前页面所在域设置cookie

3、响应体: 响应具体数据

(四)协议解析

1、协议解析是指,自定义一个web服务器接收客户端发送的请求,并利用ServerSocket返回响应体的过程。
2、分装了协议解析的服务器: Tomcat、Jetty、WebLogic、WebSphere等等…

三、Tomcat服务器

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

(二)官网: https://tomcat.apache.org/

(三)基本使用

  • 下载 Tomcat 8.0
  • 安装:Tomcat解压即可
  • 卸载:直接删除目录
  • 启动: 点击bin\startup.bat
    • 控制台中文乱码问题:修改conf/logging.properties
      在这里插入图片描述
  • 关闭
    • 直接windows窗口关闭:强制关闭
    • bin\shutdown.bat:正常关闭
    • Ctrl+C:正常关闭
  • 修改Tomcat端口号
    在这里插入图片描述
  • 部署项目:将项目打包后放置在webapps目录下即可

开启效果图
在这里插入图片描述
在这里插入图片描述

(四)Tomcat文件目录表

在这里插入图片描述

文件夹名说明
bin可执行文件目录
conf配置文件目录
lib依赖文件目录
logs运行日志文件目录
temp临时文件目录
webapps应用发布目录
work工作目录

(五)Tomcat启动的常见问题

常见问题处理方法
启动窗口一闪而过检查JAVA_HOME环境变量是否正确
端口号冲突找到对应程序并且kill掉 或 修改Tomcat端口号( conf/server.xml )

四、内嵌Tomcat

Spring官方给我们做了一个可以创建Maven项目骨架的网站 https://start.spring.io/
在这里插入图片描述
在这里插入图片描述
点击Genarate获取压缩包
在这里插入图片描述

点击Explore在网页内查看骨架内容
在这里插入图片描述

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

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

相关文章

不同等级的Pads工程师,薪资差距有多大?

作为一种广泛应用在PCB设计的EDA工具&#xff0c;Pads软件在中国的电子设计行业中有着重要地位&#xff0c;尤其是不同等级的Pads工程师&#xff0c;在薪资、工作范围等有很大的差异&#xff0c;本文将从中国出发&#xff0c;多方面分析对比不同等级的Pads工程师&#xff0c;希…

24个Jvm面试题总结及答案

1.什么是Java虚拟机&#xff1f;为什么Java被称作是“平台无关的编程语言”&#xff1f; Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台&#xff0c;而不需要程序员为每…

【VMware】虚拟机安装centos7

目录 一、创建虚拟机 1、自定义 2、选择需要安装的操作系统 3、选择虚拟机安装位置 4、选择处理器配置&#xff08;可先默认&#xff09; 5、设置虚拟内存&#xff08;一般4096&#xff09; 6、选择网络连接方式 7、选择I/O控制器 8、选择磁盘类型 9、选择磁盘 10、指定磁盘容…

国内云服务器全面对比

想要领取优惠券购买云服务可以前往我的云服务器领券购买。 经过疫情三年&#xff0c;大多行业开始复苏&#xff0c;企业开始布局以后得发展&#xff0c;云服务器作为企业发展几乎是必须的&#xff0c;一个企业从无到有&#xff0c;要经历很多&#xff0c;比如企业官网搭建&…

解密混沌工程——混沌工程价值

在数字化转型、十四五规划的大背景 下&#xff0c;大规模上云、分布式的核心改造等“云化”逐渐走进企业。 但是&#xff0c;云化的发展&#xff0c;使企业系统的复杂度呈指数级增长&#xff0c;故障越来越多。 企业在数字化转型中拥抱云计算、 信创国产化、分布式核心等新技…

DVWA-Command Injection

大约 命令注入攻击的目的是在易受攻击的应用程序中注入和执行攻击者指定的命令。 在这种情况下&#xff0c;执行不需要的系统命令的应用程序就像一个伪系统外壳&#xff0c;攻击者可能会使用它 作为任何授权的系统用户。但是&#xff0c;命令的执行权限和环境与 Web 服务具有的…

JVM 调优分析 如何进行JVM调优

文章目录 1.为什么需要进行JVM调优&#xff1f;2.什么情况下可能需要JVM调优3.JVM调优参数4.JVM调优参数设置参考5.JVM内部结构1. 类加载器&#xff08;Class Loader&#xff09;2. 运行时数据区&#xff08;Runtime Data Area&#xff09;3. 垃圾收集器&#xff08;Garbage Co…

jmeter如何将上一个请求的结果作为下一个请求的参数

目录 1、简介 2、用途 3、下载、简单应用 4、如何将上一个请求的结果作为下一个请求的参数 1、简介 在JMeter中&#xff0c;可以通过使用变量来将上一个请求的结果作为下一个请求的参数传递。 ApacheJMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测…

adb shell 调试 Android 串口 百度AI也很

在 Android 平台上进行串口调试需要使用 Android Debug Bridge (ADB) 工具。ADB 是一个命令行工具&#xff0c;可以通过 USB 连接 Android 设备&#xff0c;并执行各种命令来调试应用程序。 以下是使用 ADB shell 进行 Android 串口调试的步骤&#xff1a; 连接 Android 设备…

低代码开发平台介绍

低代码开发平台近两年发展迅猛&#xff0c;并迅速渗透到各个细分领域。本文简要介绍低代码开发的概念以及特性&#xff0c;并结合低代码开发的应用场景介绍两个低代码开发平台。 1、低代码开发概念 1.1 低代码开发介绍 低代码开发&#xff08;Low-code Development&#xff0…

3D格式转换工具HOOPS Exchange​助力Zuken打造电子设计自动化产品

行业&#xff1a;电子制造 挑战&#xff1a;对制造商来说&#xff0c;电子设计变得越来越复杂 - 电气和机械设计的融合需要将二维和三维数据结合起来 - 需要提供对多种不同CAD格式的支持 解决方案&#xff1a;HOOPS Exchange是用于快速、准确的CAD数据转换的领先SDK&#xff…

vue Electron ArcGis 桌面应用 Sqllite3 node-grp:老旧项目的起死回生

最近接收了一个三四年前做的项目。主要技术栈就是vue2electronsqllite3node-gyp。看到这个技术栈&#xff0c;基本可以知道感知这个项目的关键词&#xff1a;vue、Gis地图、本地数据库、桌面客户端。顿时深感亚历山大。 不多说&#xff0c;开干。 第一步&#xff0c;查看项目…

商家必备!餐饮外卖回评话术

我认识过很多做餐饮外卖的商家&#xff0c;他们总是有相同苦恼的问题&#xff0c;尤其是回复食客们的评价&#xff0c;尤其是差评。小编在这里就为各位商家提供了一些餐饮外卖回评的话术&#xff0c;希望能给有需要的小伙伴们提供帮助哦~ 一、好评回复模板 1.叮~您的好评我们已…

什么是大数据,常见的大数据应用领域?

现在大数据发展的如火如荼&#xff0c;也有不少小伙伴对于什么是大数据比较感兴趣&#xff0c;那么大数据在比较官方的定义是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力…

Linux -- 用户和组

目录 一、root用户&#xff08;超级管理员&#xff09; 1.1 切换用户命令&#xff1a;su 和 exit 命令 1.2 sudo命令 二、用户、用户组 2.1 用户组管理 2.1.1 创建用户组 2.1.2 删除用户组 2.2 用户管理 2.2.1 创建用户 2.2.2 删除用户 2.2.3 查看用户所属组 2.2.…

ReentrantLock实现原理-条件锁

在前两篇文章中&#xff0c;我们了解了ReentrantLock内部公平锁和非公平锁的实现原理&#xff0c;可以知道其底层基于AQS&#xff0c;使用双向链表实现&#xff0c;同时在线程间通信方式(2)中我们了解到ReentrantLock也是支持条件锁的&#xff0c;接下来我们来看下&#xff0c;…

安卓期末考试知识总结(2)

文章目录 第四章&#xff1a;程序活动单元Activity四大组件Activity生命周期Activity的启动模式standardsingleTopsingleInstancesingleTask IntentIntentFilterActivity之间的数据传递putExtra()方法传递数据Bundle类传递数据Activity之间的数据回传 练习总结 第四章&#xff…

如何管理与改进低质供应商?帮助供应商提升自身质量能力?

管理和改进低质量的供应商可能是一项具有挑战性的任务&#xff0c;但与他们合作以提高他们的能力是可能的。可以采取一些步骤来管理和帮助提高供应商的质量&#xff1a; 确定根本原因&#xff1a;了解供应商产品或服务质量低下的原因。对他们的流程、资源和能力进行全面评估&am…

EFDC建模方法及在地表水环境评价、水源地划分、排污口论证应用

目录 专题一、软件安装 专题二、EFDC模型讲解 专题三、一维河流模拟实操 专题四、建模前处理 专题五、EFDC网格剖分介绍 专题六、EFDC二维湖库水动力模拟/非保守染色剂模拟 专题七、EFDC水质模型参数及原理介绍 专题八、EFDC一、二、三维湖库水质模拟 专题九、基于EFD…

window下安装docker并运行angular项目

window下安装docker并运行angular项目 1、使用场景 本地有一个node项目&#xff0c;node 版本是 v16.13.2&#xff0c;在本地安装的angular 是 15.2.4 但是测试服上面的node 版本是 14.19.3&#xff0c;angular 是1.0.0-beta.28.3 &#xff0c;会导致angular项目的 ng build …