JavaWeb--day4--WebHttp协议Tomcat

请添加图片描述
(以下内容全部来自上述课程及课件)

这里maven我学过了,可见:Maven项目管理–基础篇,所以跳过

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

SpringBootWeb

1. 需求

需求:基于SpringBoot的方式开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串 “Hello World ~”。
在这里插入图片描述

2. 开发步骤

第1步:创建SpringBoot工程项目
第2步:定义HelloController类,添加方法hello,并添加注解
第3步:测试运行

2.1 创建SpringBoot工程(需要联网)

基于Spring官方骨架,创建SpringBoot工程。
在这里插入图片描述
基本信息描述完毕之后,勾选web开发相关依赖。
在这里插入图片描述
点击Finish之后,就会联网创建这个SpringBoot工程,创建好之后,结构如下:
在这里插入图片描述

注意:在联网创建过程中,会下载相关资源(请耐心等待)

2.2 定义请求处理类

在com.itheima这个包下创建一个子包controller
在这里插入图片描述
然后在controller包下新建一个类:HelloController
在这里插入图片描述

package com.itheima.controller;import org.springframework.web.bind.annotation.*;@RestControllerpublic class HelloController {@RequestMapping("/hello")public String hello(){System.out.println("Hello World ~");return "Hello World ~";}	 }    

2.3 运行测试

运行SpringBoot自动生成的引导类
在这里插入图片描述
在这里插入图片描述
打开浏览器,输入 http://localhost:8080/hello
在这里插入图片描述

3. Web分析

在这里插入图片描述
浏览器:
输入网址:http://192.168.100.11:8080/hello

  • 通过IP地址192.168.100.11定位到网络上的一台计算机

我们之前在浏览器中输入的localhost,就是127.0.0.1(本机)

  • 通过端口号8080找到计算机上运行的程序

localhost:8080 , 意思是在本地计算机中找到正在运行的8080端口的程序

  • /hello是请求资源位置
    资源:对计算机而言资源就是数据
    web资源:通过网络可以访问到的资源(通常是指存放在服务器上的数据)

localhost:8080/hello ,意思是向本地计算机中的8080端口程序,获取资源位置
是/hello的数据

  • 8080端口程序,在服务器找/hello位置的资源数据,发给浏览器

服务器:(可以理解为ServerSocket)

  • 接收到浏览器发送的信息(如:/hello)
  • 在服务器上找到/hello的资源
  • 把资源发送给浏览器

我们在JavaSE阶段学习网络编程时,有讲过网络三要素:

  • IP :网络中计算机的唯一标识
  • 端口 :计算机中运行程序的唯一标识
  • 协议 :网络中计算机之间交互的规则

问题:浏览器和服务器两端进行数据交互,使用什么协议?
答案:http协议

Http协议

1. 介绍

在这里插入图片描述
HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输的规则。

  • http是互联网上应用最为广泛的一种网络协议

  • http协议要求:浏览器在向服务器发送请求数据时,或是服务器在向浏览器发送响应数据时,都必须按照固定的格式进行数据传输

  • 浏览器向服务器进行请求时:服务器按照固定的格式进行解析
    在这里插入图片描述

  • 服务器向浏览器进行响应时:浏览器按照固定的格式进行解析
    在这里插入图片描述

2. 特点

  • 基于TCP协议: 面向连接,安全

TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全

  • 基于请求-响应模型: 一次请求对应一次响应(先请求后响应)

请求和响应是一一对应关系,没有请求,就没有响应

  • HTTP协议是无状态协议: 对于数据没有记忆能力。每次请求-响应都是独立的

无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。

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

请求之间无法共享数据会引发的问题:

  • 如:京东购物。加入购物车和去购物车结算是两次请求
  • 由于HTTP协议的无状态特性,加入购物车请求响应结束后,并未记录加入购物车是何商品
  • 发起去购物车结算的请求后,因为无法获取哪些商品加入了购物车,会导致此次请求无法正确展示数据

3. HTTP-请求协议

请添加图片描述
在这里插入图片描述
GET请求和POST请求的区别:
在这里插入图片描述

4. HTTP-响应协议

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

5. HTTP-协议解析

这里是用代码演示服务器可以使用java完成编写,是可以接受页面发送的请求和响应数据给前端浏览器
的,而在开发中真正用到的Web服务器,我们不会自己写的,都是使用目前比较流行的web服务器。
如:Tomcat。
想具体了解可看视频:HTTP-协议解析

Tomcat

1. 服务器介绍

服务器硬件
指的也是计算机,只不过服务器要比我们日常使用的计算机大很多。

服务器,也称伺服器。是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

在网络环境下,根据服务器提供的服务类型不同,可分为:文件服务器,数据库服务器,应用程序服务器,WEB服务器等。

服务器只是一台设备,必须安装服务器软件才能提供相应的服务。

服务器软件
服务器软件:基于ServerSocket编写的程序

  • 服务器软件本质是一个运行在服务器设备上的应用程序
  • 能够接收客户端请求,并根据请求给客户端响应数据

在这里插入图片描述

2. Web服务器

Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作
(不用程序员自己写代码去解析http协议规则),让Web开发更加便捷。主要功能是"提供网上信息浏览服务"。
在这里插入图片描述
Web服务器是安装在服务器端的一款软件,将来我们把自己写的Web项目部署到Tomcat服务器软件中,当Web服务器软件启动后,部署在Web服务器软件中的页面就可以直接通过浏览器来访问了。

Web服务器软件使用步骤

  • 准备静态资源
  • 下载安装Web服务器软件
  • 将静态资源部署到Web服务器上
  • 启动Web服务器使用浏览器访问对应的资源

3. Tomcat

请添加图片描述
官网: https://tomcat.apache.org/
下载:https://tomcat.apache.org/download-90.cgi
在这里插入图片描述

Tomcat软件类型说明:

  • tar.gz文件,是linux和mac操作系统下的压缩版本
  • zip文件,是window操作系统下压缩版本(我们选择zip文件)

在这里插入图片描述

注意,Tomcat在解压缩的时候,解压所在的目录可以任意,但最好解压到一个不包含中文和空格的目录,因为后期在部署项目的时候,如果路径有中文或者空格可能会导致程序部署失败。

在这里插入图片描述

IDEA部署可见:IntelliJ IDEA 新手入门教程-Java、Web、Maven创建(带图解)

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

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

相关文章

网络相关知识整理

负载均衡负载均衡(Load Balancing)是一种分布式系统技术,核心作用是将网络流量、计算任务或数据请求均匀分配到多个服务器(或资源节点),避免单个节点因负载过高而性能下降或崩溃,从而提升系统的…

C++(继承和多态)

目录 访问权限: 继承: 示例: 构造和析构顺序: 多态: 示例: 非虚函数重写: 虚函数: 示例: 纯虚函数: 继承是C中面向对象编程的核心特性之一&#xf…

07_Softmax回归、损失函数、分类

1. Softmax回归 ① Softmax回归虽然它的名字是回归,其实它是一个分类问题。2. 回归VS分类3. Kaggle分类问题4. 回归到分类5. 交叉熵损失6. 总结7. 损失函数 ① 三个常用的损失函数 L2 loss、L1 loss、Huber’s Robust loss。8. L2 Loss ① 蓝色曲线为当y0时&#xf…

UFO²:微软推出的新一代桌面 Agent 操作系统,深度整合 Windows 与智能自动化

本文转载自:https://www.hello123.com/ufo ** 一、微软 UFO:Windows 桌面智能体操作系统的革新与实战解析 💻 微软 UFO(Unified Functional Optimization Operating System)是微软在 2025 年对其开源智能体系统 Agen…

C语言入门指南:字符函数和字符串函数

目录 前言: 一. 字符分类函数:精准识别字符的“身份” 1.1 ​​​​​​​核心函数 1.2 经典应用示例: 二、 字符转换函数:优雅地改变字符形态 三、strlen:计算长度的基石与无符号陷阱 3.1 关键特性 3.2 致命陷…

闪电科创-交通信号灯仿真SUMO

闪电科创计算机人工智sci/ei会议/ccf/核心,擅长机器学习,深度学习,神经网络,语义分割等计算机视觉,精通大小论文润色修改,代码复现,创新点改进等等

2025智能制造研发效率提升指南:从“项目-流程-数据”闭环看工具选型

一、引言:12年智能制造老兵的一线观察我在智能制造领域从业12年,先后主导过5家制造企业的研发流程数字化转型,从汽车零部件到高端装备制造,见证了太多研发团队因工具选型不当导致的效率损耗:项目进度卡在审批流程里、测…

spring中case一直返回else中的值-问题和原理详解

目录 案例背景 问题现象 问题根源 解决过程 最终结论 经验总结 案例背景 在基于 Spring Boot MyBatis 的项目中,需要通过 SQL 的 CASE WHEN 语句生成 user_Name字段(表示是否有关联用户名称,1 为有关联,0 为无关联&#xf…

Apache IoTDB V1.3.5 发布|优化加密算法,优化内核稳定性,修复社区反馈问题

Release AnnouncementVersion 1.3.5 Apache IoTDB V1.3.5 已经发布!V1.3.5 作为之前 1.3.x 的 bugfix 版本升级,主要调整用户密码加密算法,进一步强化数据访问安全,同时优化内核稳定性,修复社区反馈问题。欢迎点击阅读…

开源好用的博客系统简介和详细安装教程

目录 看效果 ① 搜索一键安装包 ② 填写安装信息 ③ 使用界面安装向导 ④ 安装完成 使用普通模式安装 看效果 下面直接来安装教程 ① 搜索一键安装包 登录宝塔后台系统,进入软件商店 → 一键部署,搜索 “ModStart”。 ② 填写安装信息 点击“一键…

医院高值耗材智能化管理路径分析(下)

医保协同:政策适配与编码联动的精准付费 国家医保局"带码采购、带码使用、带码结算"政策推动下,AI系统通过编码映射与实时规则引擎实现医保支付的动态适配。国医科技构建的UDI编码、医保编码与收费编码三码联动体系,可在耗材使用时自动匹配国家医保医用耗材分类与…

硬件开发2-ARM裸机开发1-I.MX6ULL - 汇编点灯

一、概念概要1、LED原理图2、内核中对应的引脚 — GPIO(1)概念GPIO(通用输入/输出)详解GPlO(General-PurposeInput/Output)是嵌入式系统和微控制器中最基本的外设接口,用于 实现数字信号的输入和…

Qwen3-80B-A3B混合注意力机制

一、注意力机制背景: 在Transformer架构中,自注意力(Self-Attention)是核心组件。其基本公式为: 其中: Q (Query):查询向量,表示问询量。用于与其他位置的Key交互&#xff0…

数据库(一)数据库基础及MySql 5.7+的编译安装

文章目录前言一、数据库概述1.1 前置知识1.1.1 LAMP / LNMP 架构1.1.2 数据库的定位1.2 数据库基本概念1.2.1 数据1.2.2 表1.2.3 数据库1.2.4 数据库管理系统(DBMS)1.2.5 数据库系统(DBS)1.3 数据库发展史1.3.1 第一阶段&#xff…

Elasticsearch HTTPS访问错误解决指南

文章目录🔍 原因分析✅ 正确的访问方式:使用 curl -k https://...🔐 你需要知道 elastic 用户的密码方法 1:查看首次生成的密码(如果刚安装)方法 2:重置密码✅ 成功示例🎉 总结&…

Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节

对于神经网络来说,我们已经习惯了层状网络的思维:数据进来,经过第一层,然后第二层,第三层,最后输出结果。这个过程很像流水线,每一步都是离散的。 但是现实世界的变化是连续的,比如…

Elasticsearch面试精讲 Day 16:索引性能优化策略

【Elasticsearch面试精讲 Day 16】索引性能优化策略 在“Elasticsearch面试精讲”系列的第16天,我们将深入探讨索引性能优化策略。这是Elasticsearch高频面试考点之一,尤其在涉及高并发写入、海量日志处理或实时数据分析场景时,面试官常通过…

ESP32-C3 入门09:基于 ESP-IDF + LVGL + ST7789 的 1.54寸 WiFi 时钟(SquareLine Studio 移植)

一. https://github.com/nopnop2002/esp-idf-st7789 1. 前言 2. 开发环境准备 2.1 硬件清单 ESP32-C3 开发板ST7789 1.54 寸 LCD其他辅助元件(杜邦线、电源) 2.2 软件安装 ESP-IDF 环境安装(WindowsVScode)VSCode 插件配置LV…

PINN物理信息神经网络驱动的三维声波波动方程求解MATLAB代码

MATLAB 代码实现了一个基于物理信息神经网络(Physics-Informed Neural Network, PINN)的三维波动方程求解器。以下是详细分析:🧠 一、主要功能🔗 二、逻辑关联 代码结构清晰,分为五个主要部分: …

leetcode33(最小栈)

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin(…