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

article/2025/8/17 16:58:16

目录

  • 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.hkcw.cn/article/dFvMFiXLfx.shtml

相关文章

自扶正救生艇,乘风破浪,守护生命

在复杂水域救援中存在显著缺陷。遇巨浪或急流漩涡易倾覆且无法自主复位&#xff0c;使救援人员与被困者陷入二次危险。统计显示&#xff0c;激流救援中近三成五的救援人员伤亡源于船只倾覆后被困。更严重的是&#xff0c;传统救生艇倾覆后常需外部救援力量才能恢复&#xff0c;…

法国7月1日起实施最严户外禁烟令,范围包括这些

法国卫生与家庭部长卡特琳沃特兰表示,法国将在所有儿童可能出入的户外场所禁止吸烟。该禁令将于7月1日生效,范围包括海滩、公园、花园、学校外、公交车站和体育场馆等。责任编辑:zx0002

规定明令禁止自热类食品坐火车既不能带也不能托运

自热米饭发热包因高温爆炸风险被高铁禁止,单独食材包携带需密封完好且车上禁加热。各地规定不一,建议优先选择高铁餐食或非加热速食,出行前确认车站要求。一、发热包为何被禁?安全风险是主因自热米饭的发热包主要成分为镁铝粉、生石灰等,遇水后快速放热,温度可达100℃以上…

贵妇扎堆的“月子中心”IPO 圣贝拉月子中心28天收费13.88万起

核心提示:1.尽管“圣贝拉”定位高端月子服务,28天收费13.88万元起,但一度陷亏损泥潭,2022年经调整净亏损4463万元,高成本结构侵蚀利润,租赁与人力成本合计占销售成本近70%。2.这家“最贵”月子中心的合规风险密集暴露:位于北京的月子中心2021-2022年两次因无证行医被处罚…

(NAT64)IPv6网络用户访问IPv4网络服务器(动态映射方式)

1.实验拓扑 2.配置 [FW1]dis cu 2025-05-29 10:44:44.030 !Software Version V500R005C10SPC300 # sysname FW1 # ipv6 #nat64 prefix 3001:: 96 # interface GigabitEthernet1/0/0undo shutdownip address 1.1.1.1 255.255.255.0 # interface GigabitEthernet1/0/1undo shut…

力扣刷题Day 64:括号生成(22)

1.题目描述 2.思路 回溯&#xff0c;过程当中记录左括号和右括号的数量&#xff0c;以此作为剪枝的依据。 3.代码&#xff08;Python3&#xff09; class Solution:def generateParenthesis(self, n: int) -> List[str]:def backtrack(left_n, right_n, parenthesis):if …

高速收发器

一、高速收发器 1.FPGA高速收发器&#xff1a;GTP,GTX,GTH,GTZ 2.每个Quad有4对高速收发器GT(4个TX和4个RX)和一个COmmon 3.走差分&#xff0c;提高抗干扰性 4.CPLL是每个lane私有的&#xff0c;QPLL是整个Quad的所有通道共享的 5.每个MGT的bank有两对差分参考时钟 6.CPLL的时钟…

社保交满最低缴费年限停止就亏大了

社保交满最低缴费年限后停止缴纳确实会带来损失‌。首先,社保缴费满15年只是满足了领取养老金的一个必要条件,但并不是最优条件。养老金的领取金额与缴费年限和缴费金额密切相关,缴费年限越长、金额越高,退休后领取的养老金也会越多‌。具体来说,养老金的计算遵循“多缴多…

瑞幸咖啡降价 价格战再升级

瑞幸咖啡降价 价格战再升级!5月30日,消费者发现瑞幸咖啡多款饮品价格降至6.9元。此前,瑞幸咖啡的最低价通常是9.9元一杯。这次降价可能与近期外卖平台的价格战有关。本季度,奶茶和咖啡行业的价格竞争尤为激烈,瑞幸的主要竞争对手之一库迪咖啡将单品价格压低至3.9元和4.9元…

专家揭秘:荔枝吃多了可能引发“荔枝病” 空腹过量食用风险大

专家揭秘:荔枝吃多了可能引发“荔枝病” 空腹过量食用风险大!日前,话题#荔枝病突然冲上热搜。据报道,广东一名女子因过量食用荔枝后出现头晕不适、持续性鼻出血等症状,被诊断为“荔枝病”。科普博主称,此病严重时会引发休克甚至死亡。“荔枝病”也叫“低血糖急性脑炎综合…

2025端午档新片预售总票房破5000万

据网络平台数据,截至5月30日13时08分,2025年端午档新片预售总票房(含点映)破5000万,《碟中谍8:最终清算》领跑2025年端午档新片预售票房榜。(总台央视记者许盼盼)责任编辑:0342

t010-银行管理系统

项目演示地址 摘 要 伴随着信息技术与互联网技术的不断发展&#xff0c;人们进到了一个新的信息化时代&#xff0c;传统管理技术性没法高效率、容易地管理信息内容。为了实现时代的发展必须&#xff0c;提升管理高效率&#xff0c;各种各样管理管理体系应时而生&#xff0c;各…

这条中国土狗被称为查尔斯国王 海外爆红引发关注

这条中国土狗被称为查尔斯国王 海外爆红引发关注!近日,一条来自中国河北的长毛狗在海外迅速走红,被人们誉为“中国狗王”。这条狗在YouTube、TikTok等平台上的视频累计播放量突破3亿次,引发全球社交平台的现象级传播,并衍生出超过20种语言的二次创作内容。这条狗被外国人尊…

为什么端午节,要挂艾草?

端午时节,大街小巷飘散着艾草的清香,家家户户门前,悬挂的艾草,束随风摇曳。这一延续千年的传统习俗,不仅有古人的智慧与祈愿,更蕴含着深厚的文化内涵。为什么端午节要挂艾草?从挂法、寓意到最佳时间点,教你这一习俗的来历。关于端午挂艾草的起源,民间流传着多种说法。…

生成式引擎优化(GEO)的技术逻辑与内容喂养策略

在生成式人工智能重构信息分发规则的今天&#xff0c;GEO&#xff08;Generative Engine Optimization&#xff09;已从技术概念演变为企业争夺AI认知高地的核心战场。这场变革的本质&#xff0c;是推动内容从“被动检索”向“主动嵌入”跃迁&#xff0c;让品牌信息深度融入大模…

“婚内强奸”被羁押当事人申请国赔 索赔33万并追责

婚内强奸被羁押当事人申请国赔!5月29日下午,40岁的尹某在律师的陪同下向河南省濮阳县人民检察院递交了《国家赔偿申请书》。此前,他因“婚内强奸”被羁押了285天,去年这天是他走出看守所的日子。出于某些原因,他选择在一年后的这一天正式申请国家赔偿33万元,并要求追责相…

WebFuture:后台修改内容链接地址保存提示内容链接地址禁止输入外部url链接

问题描述&#xff1a; 后台修改友情链接内容链接地址保存报错&#xff0c;提示内容链接地址禁止输入外部url链接&#xff0c;如图所示&#xff1a; 解决方法&#xff1a; 运维中心-内容管理配置-内容管理上传配置里面启用允许外部链接。 对于旧版的系统&#xff0c;在启用允许…

其他 | 对 Dubbo 通信与 Skywalking 集成的简单调研

1.调研目标 可以说明一下对 Dubbo 和 Skywalking 的理解&#xff0c;以及这次调研的目的。 目前在我们的系统中大量使用了 OpenFeign 作为主要的服务调用方式&#xff0c;少部分有高性能需求的接口&#xff08;如 Data Core&#xff09;使用了 gRPC 协议提供接口。并且由于没…

福特公司因软件问题在美召回超百万辆汽车

据美国广播公司当地时间29日报道,美国政府汽车监管机构表示,福特汽车公司因软件问题,在全美召回超过100万辆汽车。报道称,福特汽车公司本月早些时候向美国国家公路交通安全管理局报告了这一软件问题。该问题可能导致车辆在倒车时,后视摄像头影像出现延迟、卡顿或不显示等故…

男子网购警用装备扮交警查车被抓

男子网购警用装备扮交警查车被抓!5月29日,记者从山西长治警方获悉,一男子冒充太原警察在长治查车被抓。5月28日,长治交警公布男子冒充太原交警在长治查车看见交警后就驾车逃逸视频引关注。视频中,交警将其车辆拦停后在其车内发现有制式服、警号等相关警察装备。经调查,该…