【JavaWeb】基本概念、web服务器、Tomcat、HTTP协议

news2025/6/4 11:28:14

目录

  • 1. 基本概念
    • 1.1 基本概念
    • 1.2 web应用程序
    • 1.3 静态web
    • 1.4 动态web
  • 2. web服务器
  • 3. tomcat详解
    • 3.1 安装
    • 3.2 启动
    • 3.3 配置
      • 3.3.1 配置启动的端口号
      • 3.3.2 配置主机的名称
      • 3.3.3 其他常用配置项
        • 日志配置
        • 数据源配置
        • 安全配置
    • 3.4 发布一个网站
  • 4. Http协议
    • 4.1 什么是http
    • 4.2 http的两个时代
    • 4.3 http请求
    • 4.4 http响应

1. 基本概念

1.1 基本概念

  1. 静态web:html,css(提供给所有人看的数据,始终不会发生变化)
  2. 动态web:Servlet/JSP,ASP,PHP,淘宝等几乎所有的网站
    (提供给所有人看的数据,始终会发生变化,每个人在不同时间,不同地方看到的都不同)

1.2 web应用程序

web应用程序:可以提供浏览器访问的程序

  • a.html、b.html等多个web资源,这些web资源可以被外界访问,对外界提供服务。
  • 你们能访问到的任何一个页面或者资源,都存在于这个世界的某一个角落的计算机上。
  • URL:统一资源定位符。
  • 这个统一的web资源会被放在同一个文件夹下,web应用程序—>Tomcat:服务器。
  • web应用程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理。

1.3 静态web

_ .htm, _ .html,这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取。

画板

1.4 动态web

页面会动态展示:Web的页面展示的效果因人而异。

画板

2. web服务器

服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息。
** IIS ** :

** IIS(Internet Information Services) ** 是微软开发的一款Web服务器软件,专为Windows操作系统设计。它主要用于托管网站、提供Web服务以及支持多种协议如HTTP、HTTPS等。IIS不仅易于安装和配置,还提供了强大的功能集,包括安全性控制、性能优化以及对多种Web技术的支持。

** Tomcat ** :

** Tomcat ** 则是Apache软件基金会下的一个项目,旨在提供一个运行Java Servlets和JavaServer Pages (JSP) 的环境。由于有Sun Microsystems(现Oracle Corporation)以及其他各方的支持,最新的Servlet和JSP规范通常能够在Tomcat中得到体现。例如,Tomcat 5支持了当时的最新标准Servlet 2.4和JSP 2.0规范。作为一个免费且开源的Web应用服务器,Tomcat因其轻量级特性而在中小型系统中被广泛采用,特别是在并发访问用户数量有限的情况下,它是开发和调试JSP程序的理想选择。

当在一台机器上配置好Apache服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache 独立的进程单独运行的。

虽然Tomcat起源于Apache项目,并且能够与Apache HTTP服务器协同工作以处理静态和动态内容,但它本身是一个独立的Servlet容器,专注于Java Web应用程序的执行。因此,在使用Tomcat进行Web开发时,开发者可以根据需要选择是否将其与Apache结合使用,或者单独利用Tomcat来满足项目需求。这种灵活性使得Tomcat成为Java Web应用开发中的重要工具。

3. tomcat详解

3.1 安装

3.2 启动

3.3 配置

Tomcat的配置主要通过编辑其配置文件来完成,这些文件通常位于conf目录下。

3.3.1 配置启动的端口号

Tomcat默认使用8080端口作为HTTP服务端口。如果需要更改这个端口号,可以在conf/server.xml文件中找到相应的<Connector>元素并修改port属性。

例如,将Tomcat的HTTP端口更改为8081:

<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
  • port: 指定Tomcat监听的端口号,mysql:3306;http:80;https:443。
  • protocol: 指定使用的协议类型,这里为HTTP/1.1。
  • connectionTimeout: 设置连接超时时间(毫秒),超过该时间未处理完请求则断开连接。
  • redirectPort: 当客户端请求的是HTTPS服务时,会重定向到此端口。

3.3.2 配置主机的名称

server.xml文件中,可以通过<Host>元素配置虚拟主机。默认情况下,Tomcat使用localhost作为主机名,并将其映射到127.0.0.1

例如,配置一个名为www.none.com的虚拟主机:

<Host name="www.none.com" appBase="webapps"
      unpackWARs="true" autoDeploy="true">
</Host>

  • name: 虚拟主机的域名。
  • appBase: 应用程序的基本目录,默认为webapps
  • unpackWARs: 是否自动解压WAR包,默认为true
  • autoDeploy: 是否自动部署新的应用程序,默认为true

3.3.3 其他常用配置项

日志配置

日志文件通常位于logs目录下,可以通过编辑conf/logging.properties文件来调整日志级别和输出格式。

数据源配置

如果应用需要连接数据库,可以在conf/context.xml或应用的META-INF/context.xml中配置数据源。

例如,配置MySQL数据源:

<Resource name="jdbc/myDB" auth="Container" type="javax.sql.DataSource"
          maxTotal="100" maxIdle="30" maxWaitMillis="10000"
          username="dbuser" password="dbpass" driverClassName="com.mysql.none.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/mydatabase"/>
安全配置

为了提高安全性,可以配置SSL/TLS以启用HTTPS服务。这通常涉及到生成证书并在server.xml中配置<Connector>元素。

例如,配置HTTPS连接器:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keystoreFile="/path/to/keystore.jks" keystorePass="changeit"/>

** 请你谈谈网站是如何访问的? **

三次握手,交互。

  1. 输入URL:用户在浏览器地址栏中输入一个URL(统一资源定位符),比如http://www.example.com。这个URL包含了协议(如HTTP或HTTPS)、域名(如www.example.com)和可能的路径(如/path/page.html)。
  2. DNS解析:浏览器需要知道对应域名的IP地址才能建立连接。它首先会在本地缓存或者操作系统缓存中查找该域名对应的IP地址。如果找不到,就会向配置的DNS服务器发送请求查询该域名的IP地址。DNS服务器通过递归查询的方式找到正确的IP地址并返回给浏览器。
  3. 建立TCP连接:获取到目标服务器的IP地址后,浏览器会尝试与服务器建立TCP连接。这通常涉及到**三次握手 **的过程,以确保客户端和服务器双方都准备好进行数据传输。
  4. TLS握手(如果是HTTPS):如果使用的是HTTPS协议,还需要额外进行一次TLS(Transport Layer Security)握手来加密通信。这一步骤包括客户端和服务器之间的密钥交换、证书验证等操作,确保通信的安全性。
  5. 发送HTTP请求:一旦TCP连接建立完成(对于HTTPS还需完成TLS握手),浏览器会构造并发送一个HTTP请求报文到服务器。这个请求报文中包含诸如请求方法(GETPOST等)、请求的URL、头部信息(Headers)以及可能的主体内容(Body)。
  6. 服务器处理请求:Web服务器接收到请求后,会根据请求的内容进行处理。如果是静态文件,服务器直接返回文件;如果是动态内容,则服务器可能会调用相应的脚本或应用程序来生成响应内容。
  7. 发送HTTP响应:服务器处理完请求后,会构建一个HTTP响应报文发回给浏览器。响应报文中包含状态行(表明请求的结果)、头部信息和响应体(通常是HTML文档或其他类型的数据)。
  8. 浏览器接收响应:浏览器接收到响应后,开始解析HTML文档,并根据文档中的指令加载CSS样式表、JavaScript脚本以及其他资源(如图片、视频等)。在这个过程中,浏览器可能会发起更多的HTTP请求来获取这些资源。
  9. 渲染页面:随着资源逐步加载完毕,浏览器开始构建DOM树、应用CSS样式,并执行JavaScript代码,最后将内容渲染到屏幕上供用户查看。

整个流程涉及了多种网络协议(如HTTP、HTTPS、TCP/IP)、技术栈(如HTML、CSS、JavaScript)以及中间件(如DNS服务器、Web服务器)。此外,现代浏览器还提供了许多优化措施,比如预取、预加载、压缩传输等,来提升网页加载速度和用户体验。

3.4 发布一个网站

tomcat的目录结构如下:

apache-tomcat-<version>/
├── bin/              # 存放启动、停止等脚本
│   ├── startup.sh    # Linux下启动Tomcat的脚本
│   ├── shutdown.sh   # Linux下停止Tomcat的脚本
│   ├── catalina.sh   # Tomcat核心控制脚本
│   └── ...           # 其他脚本文件
├── conf/             # 配置文件目录
│   ├── server.xml    # 主配置文件,定义端口、连接器等
│   ├── web.xml       # 默认Web应用部署描述符
│   ├── context.xml   # 上下文配置文件
│   ├── tomcat-users.xml # 用户认证配置
│   └── ...           # 其他配置文件如logging.properties等
├── lib/              # 共享库(JAR)目录
│   ├── servlet-api.jar # Servlet API实现
│   ├── jsp-api.jar     # JSP API实现
│   └── ...           # 其他必要的依赖库
├── logs/             # 日志文件目录
│   ├── catalina.out  # 主要日志文件
│   ├── localhost_access_log.*.txt # HTTP请求访问日志
│   └── ...           # 其他日志文件
├── webapps/          # Web应用程序部署目录
│   ├── ROOT/         # 默认根应用
│   ├── manager/      # 内置管理控制台
│   ├── examples/     # 官方示例应用
|   		├──WEB-INF
|   		   ├── classes  # java程序
|   		   ├── lib      # 所依赖的jar包
|   		   └── web.xml  # 网页配置
|   		├──static       # 静态资源
|   		├──index.html
|   		└──...
│   └── ...           # 自定义的应用程序或WAR包
├── work/             # 运行时工作目录
│   └── Catalina/     # 存储编译后的JSP类文件
├── temp/             # 临时文件目录
├── LICENSE           # 许可证文件
└── NOTICE            # 版权声明

这部分是我们配置网站时所使用的:

├── webapps/          # Web应用程序部署目录
│   ├── ROOT/         # 默认根应用
│   ├── manager/      # 内置管理控制台
│   ├── examples/     # 官方示例应用
|   		├──WEB-INF
|   		   ├── classes  # java程序
|   		   ├── lib      # 所依赖的jar包
|   		   └── web.xml  # 网页配置
|   		├──static       # 静态资源
|   		├──index.html
|   		└──...
│   └── ...           # 自定义的应用程序或WAR

4. Http协议

4.1 什么是http

HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。

  • 文本:html,字符串…
  • 超文本:图片,音乐,视频,定位,地图…
  • 默认端口:80
  • HTTPS:安全的协议
    • 默认端口:443

4.2 http的两个时代

  • http1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接。
  • http2.0:客户端可以与web服务器连接后,可以获得多个web资源。

4.3 http请求

客户端—->发请求(request)—->服务器(比如:访问百度)
General

// 请求地址
Request URL: https://www.baidu.com/
// 请求方法
Request Method: GET
// 状态代码
Status Code: 200 OK
// 远程地址
Remote Address: 14.215.177.38:443
// 引用站点策略
Referrer Policy: strict-origin-when-cross-origin

Request Headers

Accept: text/html
Accept-Encoding: gzip, deflate, br
// 语言
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
  1. 请求行
  • 请求行中的请求方式: GET
  • 请求方式:GETPOSTHEADDELETEPUT
    GET: 请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效。
    POST:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。
  1. 请求头(消息头)
Accept: 告诉浏览器,它所支持的数据类型
Accept-Encoding: 告诉浏览器,它支持哪种编码格式:GBK,UTF-8,GB2312,ISO8859-1
Accept-Language: 告诉浏览器,它的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开还是保持
HOST:主机

4.4 http响应

Response Headers

// 缓存控制
Cache-Control: no-cache
// 保持连接(http1.1)
Connection: keep-alive
// 文本编码类型
Content-Encoding: gzip
// 响应类型
Content-Type: text/html;charset=utf-8
  1. 响应体
Accept: 告诉浏览器,它所支持的数据类型
Accept-Encoding: 告诉浏览器,它支持哪种编码格式:GBK,UTF-8,GB2312,ISO8859-1
Accept-Language: 告诉浏览器,它的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开还是保持
HOST:主机
Refrush:告诉客户端,多久刷新一次
Location:让网页重新定位
  1. 响应状态码
  • 200:响应成功
  • 3xx:请求重定向(304等等)
  • 4xx:找不到资源(404等等)
  • 5xx:服务器代码错误(500代码错误,502网关错误)

当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?

  1. URL 解析

浏览器解析输入的 URL,提取协议(HTTP/HTTPS)、域名、路径等信息。

  1. DNS 解析

检查本地缓存(浏览器、系统、hosts 文件),若无则通过 DNS 服务器递归查询,将域名转换为 IP 地址

  1. 建立 TCP 连接

通过 三次握手 与服务器建立可靠的 TCP 连接(SYN → SYN-ACK → ACK)。

  1. TLS 握手(**HTTPS **)

若为 HTTPS,进行 TLS 握手:证书验证、密钥交换,建立加密通道。

  1. 发送 HTTP 请求

浏览器发送 HTTP 请求(如 GET/index.html ),包含请求头(host、User-Agent 等)和请求体(如 GET 数据)。

  1. 服务器处理请求

服务器解析请求,执行逻辑(如查询数据库),生成响应内容(HTML、图片等)。

  1. 返回 HTTP 响应

服务器返回 HTTP 响应,包含状态码(如 200 OK)、响应头(Content-Type)和响应体(页面内容)。

  1. 浏览器渲染页面

解析 HTML :构建 DOM 树。

加载 CSS/JS :构建 CSSOM 树,执行 JavaScript。

渲染树合成 :合并 DOM 和 CSSOM,布局(Layout)并绘制(Paint)页面。

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

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

相关文章

云计算Linux Rocky day02(安装Linux系统、设备表示方式、Linux基本操作)

云计算Linux Rocky day02&#xff08;安装Linux系统、设备表示方式、Linux基本操作&#xff09; 目录 云计算Linux Rocky day02&#xff08;安装Linux系统、设备表示方式、Linux基本操作&#xff09;1、虚拟机VMware安装Rocky2、Linux命令行3、Linux Rocky修改字体大小和背景颜…

在 ODROID-H3+ 上安装 Win11 系统

在 ODROID-H3 上安装 Windows 11 系统。 以下是完整的步骤&#xff0c;包括 BIOS 设置、U 盘制作、安装和驱动处理&#xff0c;全程不保留之前的系统数据。 ✅ 准备工作 1. 准备一个 ≥8GB 的 USB 启动盘 用另一台电脑制作 Windows 11 安装盘。 &#x1f449; 推荐工具&…

使用el-input数字校验,输入汉字之后校验取消不掉

先说说复现方式 本来input是只能输入数字的&#xff0c;然后你不小心输入了汉字&#xff0c;触发校验了&#xff0c;然后这时候&#xff0c;你发现校验取消不掉了 就这样了 咋办啊&#xff0c;你一看校验没错啊&#xff0c;各种number啥的也写了,发现没问题啊 <el-inputv…

Docker容器启动失败的常见原因分析

我们在开发部署的时候&#xff0c;用 Docker 打包环境&#xff0c;理论上是“我装好了你就能跑”。但理想很丰满&#xff0c;现实往往一 docker run 下去就翻车了。 今天来盘点一下我实际工作中经常遇到的 Docker 容器启动失败的常见原因&#xff0c;顺便给点 debug 的小技巧&a…

立志成为一名优秀测试开发工程师(第七天)——unittest框架的学习

目录 unittest框架的学习 一、测试类的编写 创建相关测试类cal.py、CountTest.py 二、常见断言方法 使用unittest单元测试框架编写测试用例CountTest.py 注意&#xff1a;执行的时候光标一定要放在括号后面&#xff0c;鼠标右键运行 三、对测试环境的初始化和清除模块…

论坛系统(4)

用户详情 获取用户信息 实现逻辑 ⽤⼾提交请求&#xff0c;服务器根据是否传⼊Id参数决定返回哪个⽤⼾的详情 1. 不传⽤⼾Id&#xff0c;返回当前登录⽤⼾的详情(从session获取) 2. 传⼊⽤⼾Id&#xff0c;返回指定Id的⽤⼾详情(根据用户id去查) 俩种方式获得用户信息 参…

力扣面试150题--二叉树的层平均值

Day 54 题目描述 思路 初次做法&#xff08;笨&#xff09;&#xff1a;使用两个队列&#xff0c;一个队列存放树的节点&#xff0c;一个队列存放对应节点的高度&#xff0c;使用x存放上一个节点&#xff0c;highb存放上一个节点的高度&#xff0c;sum存放当前层的节点值之和…

【Doris入门】Doris初识:分布式分析型数据库的核心价值与架构解析

目录 1 Doris简介与核心价值 2 Doris架构深度解析 2.1 Frontend&#xff08;FE&#xff09;架构 2.2 Backend&#xff08;BE&#xff09;架构 3 Doris核心概念详解 3.1 数据分布模型 3.2 Tablet与Replica 3.3 数据模型 4 Doris关键技术解析 4.1 存储引擎 4.2 查询执…

数据结构与算法学习笔记(Acwing 提高课)----动态规划·区间DP

数据结构与算法学习笔记----动态规划区间DP author: 明月清了个风 first publish time: 2025.5.26 ps⭐️区间DP的特征在于子结构一般是一个子区间上的问题&#xff0c;涉及到的问题也非常多&#xff0c;如环形区间&#xff0c;记录方案数&#xff0c;高精度&#xff0c;二维…

从0到1搭建AI绘画模型:Stable Diffusion微调全流程避坑指南

从0到1搭建AI绘画模型&#xff1a;Stable Diffusion微调全流程避坑指南 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 从0到1搭建AI绘画模型&#xff1a;Stable Diffusion微调全流程避坑指南摘要引言一、数据集构…

从一到无穷大 #46:探讨时序数据库Deduplicate与Compaction的设计权衡

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言Compaction AlgorithmsCompact Execution Flow Based On VeloxLocalMergeSource的…

vue3 导出excel

需求&#xff1a;导出自带格式的excel表格 1.自定义二维数组格式 导出 全部代码&#xff1a; <el-button click"exportExcel">导出</el-button> const exportExcel () > {const data [[商品, 单价, 数量, 总价],[A, 100, 1.55, { t: n, f: B2*C2…

day024-网络基础-TCP与UDP、DNS

文章目录 1. 李导推荐书籍2. OSI七层模型2.1 传输层2.2 网络层2.2.1 问&#xff1a;两端处于不同局域网的设备怎么网络通信&#xff1f; 2.3 数据链路层2.4 物理层2.5 图解OSI七层模型 3. 数据传输模式3.1 全双工3.2 半双工3.3 单工 4. TCP 3次握手4.1 抓包 5. TCP 4次挥手5.1 …

专场回顾 | 重新定义交互,智能硬件的未来设计

自2022年起&#xff0c;中国智能硬件行业呈现出蓬勃发展的态势&#xff0c;市场规模不断扩大。一个多月前&#xff0c;“小智AI”在短视频平台的爆火将智能硬件带向了大众视野&#xff0c;也意味着智能硬件已不再仅仅停留在概念和技术层面&#xff0c;而是加速迈向实际落地应用…

WPS 免登录解锁编辑

遇到 WPS 需要登录才能启用编辑功能&#xff1f; 如何免登录使用编辑功能&#xff1f; 方法一 解锁方法 1、关闭 WPS&#xff1b; 2、桌面右键→ “新建”→“文本文档”&#xff0c;粘贴以下内容&#xff08;见最下面&#xff09;&#xff1b;编码保持默认&#xff08;ANSI …

技术分享 | Oracle SQL优化案例一则

本文为墨天轮数据库管理服务团队第70期技术分享&#xff0c;内容原创&#xff0c;作者为技术顾问马奕璇&#xff0c;如需转载请联系小墨&#xff08;VX&#xff1a;modb666&#xff09;并注明来源。 一、问题概述 开发人员反映有条跑批语句在测试环境执行了很久都没结束&…

华为手机用的时间长了,提示手机电池性能下降,需要去换电池吗?平时要怎么用能让电池寿命长久一些?

华为手机提示电池性能下降时&#xff0c;是否需要更换电池以及如何延长电池寿命&#xff0c;取决于电池老化程度和使用习惯。以下是具体分析和建议&#xff1a; 一、是否需要更换电池&#xff1f; 电池健康度低于80% 如果手机提示“电池性能下降”&#xff0c;通常意味着电池…

BERT***

​​1.预训练&#xff08;Pre-training&#xff09;​​ 是深度学习中的一种训练策略&#xff0c;指在大规模无标注数据上预先训练模型&#xff0c;使其学习通用的特征表示&#xff0c;再通过​​微调&#xff08;Fine-tuning&#xff09;​​ 适配到具体任务 2.sentence-lev…

超级对话2:大跨界且大综合的学问融智学应用场景述评(不同第三方的回应)之二

摘要&#xff1a;《人机协同文明升维行动框架》提出以HIAICI/W公式推动认知革命&#xff0c;构建三大落地场景&#xff1a;1&#xff09;低成本认知增强神经接口实现300%学习效率提升&#xff1b;2&#xff09;全球学科活动化闪电战快速转化知识体系&#xff1b;3&#xff09;人…

深度学习常见实验问题与实验技巧

深度学习常见实验问题与实验技巧 有一定的先后顺序的 还在迷茫深度学习中的改进实验应该从哪里开始改起的同学&#xff0c;一定要进来看看了&#xff01;用自身经验给你推荐实验顺序&#xff01; YOLOV8-硬塞注意力机制&#xff1f;这样做没创新&#xff01;想知道注意力怎么…