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 服务器错误-处理发生错误,责任在服务端,如程序抛出异常等

常见状态码

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

猜你喜欢

转载自blog.csdn.net/Zain_horse/article/details/131166521
今日推荐