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

news2024/11/24 23:00:31

一、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在网页内查看骨架内容
在这里插入图片描述

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

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

相关文章

linux上安装es、Kibana、ik分词

基本概念 ES是什么&#xff1f;我们可以把ES比作一个Mysql数据库&#xff0c;同样用来存储数据&#xff0c;不过比Mysql提供了更多的搜索功能,例如分词搜索&#xff0c;关联度搜索等&#xff0c;而且搜索速度也不是同一级别的&#xff0c; ES能够实现百万数据/秒的查询速度。接…

【Java|golang】1171. 从链表中删去总和值为零的连续节点

给你一个链表的头节点 head&#xff0c;请你编写代码&#xff0c;反复删去链表中由 总和 值为 0 的连续节点组成的序列&#xff0c;直到不存在这样的序列为止。 删除完毕后&#xff0c;请你返回最终结果链表的头节点。 你可以返回任何满足题目要求的答案。 &#xff08;注意…

Linux内核中内存管理相关配置项的详细解析9

接前一篇文章&#xff1a;Linux内核中内存管理相关配置项的详细解析8 十三、Enable recovery from hardware memory errors 对应配置变量为&#xff1a;CONFIG_MEMORY_FAILURE。 此项只有选中和不选中两种状态&#xff0c;默认为选中。 内核源码详细解释为&#xff1a; Enab…

HTML5 input元素新的特性

在HTML5中&#xff0c;<input>元素增加了许多新的属性、方法及控件。本文章分别对这三方面进行介绍。 目录 1. 属性 2. 方法 3. 新控件 1. 属性 <input>元素在HTML5中新增加的属性有&#xff1a;autocomplete 、autofocus、form、formaction、formenctype、f…

人工智能网站KameAI

人工智能网站KameAI 前言 人工智能的崛起与发展随着科技的飞速发展&#xff0c;人工智能(AI)已经逐渐成为我们生活中不可或缺的一部分。它的出现不仅改变了我们与世界的互动方式&#xff0c;还为各行各业带来巨大的便利。今天&#xff0c;我们就来聊一聊一个人工智能网站—Ka…

合并两个排序的链表

题目&#xff1a; 输入两个递增排序的链表&#xff0c;合并着两个链表并使新链表中的结点仍然是按照递增顺序的。例如输入的链表1和链表2如下&#xff0c;合并后的为链表3。链表的结点定义如下&#xff1a; struct ListNode {int value;ListNode *next; }; 复制 解题思路&…

APP性能测试,你需要关注哪些指标?

一、Android客户端性能测试常见指标 1、内存 2、CPU 3、流量 4、电量 5、启动速度 6、滑动速度、界面切换速度 7、与服务器交互的网络速度 二、预期标准指定原则 1、分析竞争对手的产品&#xff0c;所有指标要强于竞品 2、产品经理给出的预期性能指标数据 3、符合业…

Unity3D:Scene 视图导航

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 Scene 视图导航 场景视图具有一组导航控件&#xff0c;可帮助您高效地四处移动&#xff1a; 场景视图辅助图标移动、旋转和缩放工具居中工具 场景视图辅助图标 场景辅助图标将显…

MySQL性能优化:索引优化

一、索引基础知识 &#xff08;一&#xff09;辅助索引/二级索引 叶子节点除了包含键值以外&#xff0c;每个叶子节点中的索引行中还包含了一个书签( bookmark) &#xff08;每个索引一颗B树&#xff0c;不包含行记录的全部数据&#xff09; &#xff08;二&#xff09; 回表…

docker-harbor私有仓库部署

什么是Harbor Harbor 是 VMware 公司开源的企业级 Docker Registry 项目&#xff0c;其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。 Harbor以 Docker 公司开源的 Registry 为基础&#xff0c;提供了图形管理 UI 、基于角色的访问控制(Role Based AccessContr…

HTML5 语义元素(一)页面结构

本篇主要介绍HTML5增加的语义元素中关于页面结构方面的&#xff0c;包含&#xff1a; <article>、<aside>、<figure>、<figcaption>、<footer>、<header>、<main>、<nav>、<section>等元素。 目录 1. 语义元素介绍 1.…

01-SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用(了解))

文章目录 什么是SPA二、SPA和MPA的区别实现一个SPA1.引入库2.读入数据 总结 什么是SPA (single-page application),是一种网络应用程序或网站的模型&#xff0c;它通过动态重写当前页面来与用户交互&#xff0c;这种方法避免了页面之间切换打断用户体验,在单页应用中&#xff…

文心一言 VS 讯飞星火 VS chatgpt (39)-- 算法导论5.4 3题

三、在生日悖论的分析中&#xff0c;要求各人生日彼此独立是否很重要?或者&#xff0c;是否只要两两成对独立就足够了?证明你的答案。 文心一言&#xff1a; 在生日悖论的分析中&#xff0c;要求各人生日彼此独立是非常重要的。这是因为&#xff0c;如果各人生日不是独立的…

名号响亮的BBA,为什么在电车市场上“消失匿迹”了?

6月初&#xff0c;各大新能源车企公布了5月份的新车交付情况。整体来看&#xff0c;原本就“打得火热”的车市持续升温&#xff0c;多家车企月度销量环比涨幅超过10%&#xff0c;其中比亚迪更是拿出了超24万辆的“惊人表现”领跑市场。作为新势力的理想汽车&#xff0c;也打破单…

AntDB 企业增强特性介绍——同步异步自适应流复制

AntDB 提供了 hot-standby 的能力&#xff0c;功能与 Oracle 11g 的active standby 类似。并且通过流复制的方式&#xff0c;大大地缩短了备份库与主库的事务间隔。 传统流复制分为同步和异步两种模式。同步复制&#xff0c;即主机的事务要等到备机提交成功后才会提交并结束事…

2023-6-12-第三式单例模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

前端vue可以左右滚动的切换的tabs tabs选项卡 滑动动画效果 自动宽度

前端vue可以左右滚动的切换的tabs tabs选项卡 滑动动画效果 自动宽度, 下载完整代码请访问https://ext.dcloud.net.cn/plugin?id13003 效果图如下: #### 使用方法 使用方法 swiperTabList: ["2023-06-10","2023-06-11","2023-06-12","2…

ICASSP 2023丨基于 CTC 的模型改进,实现更强的模型结构

分享一篇网易智企易盾 AI Lab 团队在ICASSP 2023被收录的语音识别方向的论文《Improving CTC-based ASR Models with Gated Interplayer Collaboration&#xff08;基于 CTC 的模型改进&#xff0c;实现更强的模型结构&#xff09;》 论文地址&#xff1a;https://arxiv.org/ab…

UnityVR--组件10--UGUI简单介绍

目录 前言 UI基础组件 1. Canvas 2. EventSystem 3. Image 4. Text/TextMeshPro/InputField 5. Button控件 其他 前言 UGUI是Unity推出的新的UI系统&#xff0c;它与Unity引擎结合得更紧密&#xff0c;并拥有强大的屏幕自适应和更简单的深度处理机制&#xff0c;更容易使用和…