一、开篇:为什么要先学这两个知识点?
在 Java Web 开发中,浏览器和服务器的所有交互,都遵循HTTP 协议;而早期 Java Web 项目、Tomcat 容器、经典框架的核心配置,都依赖XML 文件。
-
HTTP 协议:定义了「浏览器怎么发请求、服务器怎么回响应」的通信规则,Servlet 处理的本质就是 HTTP 请求与响应
-
XML 配置:定义了 Servlet、容器、框架的配置规则,是 Java 生态里经典的配置方式,也是读懂老项目、理解框架底层的基础
二、HTTP 协议详解:浏览器与服务器的通信规则
2.1 HTTP 是什么
HTTP(Hyper Text Transfer Protocol,超文本传输协议),是应用层的面向对象协议,它详细规定了浏览器和万维网服务器之间的互相通信规则。
客户端和服务端通信时传输的内容称为报文,HTTP 协议正是规定了报文的格式:
客户端发给服务器的,叫请求报文
服务器返回给客户端的,叫响应报文
2.2 HTTP 版本发展历程
HTTP 从诞生至今,经历了多次关键迭代,每一次升级都围绕「性能、安全、效率」做了核心优化,也是面试中常考的基础点:

【开发重点】HTTP/1.1 是日常开发最常接触的版本,它和 1.0 最核心的区别就是持久连接:1.0
请求一个带图片的网页,每个资源都要新建连接;1.1 允许拿到所有资源后再断开连接,极大提升了效率。
2.3 HTTP 报文结构:请求报文与响应报文
HTTP 报文的通用结构非常固定:报文首部 + 空行 + 报文主体,其中首部又可细分为「行」和「头」。
2.3.1 请求报文(客户端→服务器)
请求报文是浏览器发给服务器的内容,固定分为 4 部分:
请求行
请求头
空行
请求体
请求行:核心信息,格式为 请求方式 资源路径?请求参数 HTTP/版本号 示例:GET
/login.html?username=admin&password=123 HTTP/1.1
请求头:键值对格式,携带请求的上下文信息,常见字段:

空行:分隔请求头和请求体,是 HTTP 协议的固定格式
请求体:仅 POST 等带请求体的请求才有,比如 form 表单提交的参数、JSON 数据;GET 请求无请求体。
2.3.2 响应报文(服务器→客户端)
响应报文是服务器返回给浏览器的内容,结构和请求报文对应:
响应行
响应头
空行
响应体
响应行:核心信息,格式为 HTTP/版本号 状态码 状态描述
示例:HTTP/1.1 200 OK
响应头:键值对格式,携带响应的上下文信息,常见字段:

空行:分隔响应头和响应体,固定格式
响应体:返回给客户端的核心内容,比如 HTML 页面、JSON 数据、图片流等,浏览器会解析并渲染这部分内容。
2.4 必知必会的 HTTP 响应状态码
状态码是响应行的核心,它告诉浏览器本次请求的结果,是开发调试、问题排查的关键。按首位数字分为 5 大类:

三、XML 配置文件全解
XML 是 Java Web 早期最核心的配置文件格式,Tomcat 的核心配置、Servlet 的注册、Spring 经典版本的配置,都深度依赖 XML。
3.1 常见配置文件类型对比
Java 开发中,常见的配置文件格式各有适用场景,先做整体区分:

3.2 XML 基础语法规范
XML(可扩展标记语言),和 HTML 同属标记语言,但核心用途是「存储和传输数据」,而非展示数据。它的语法规则非常严格,必须遵守:
文档声明:固定写在第一行,格式为
xml
<?xml version="1.0" encoding="UTF-8"?>
根标签:有且仅有一个根标签,所有内容都要写在根标签内
标签闭合规则:双标签必须成对出现,单标签必须自闭合(<br/>)
标签嵌套规则:可以嵌套,但绝对不能交叉嵌套
大小写敏感:标签名、属性名大小写敏感,<Name>和<name>是两个不同的标签
属性规则:标签的属性必须有值,值必须用单引号或双引号包裹
合法 XML 示例
xml
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="001">
<name>张三</name>
<age>18</age>``
</student>
<student id="002">
<name>李四</name>
<age>20</age>
</student>
</students>
3.3 XML 与 HTML 的核心区别
很多新手会混淆 XML 和 HTML,这里用一张表讲透核心差异:

3.4 XML 约束:DTD 与 Schema
XML 的标签是可自定义的,但在框架、容器的配置文件中,不能随意写标签 —— 必须遵循对应的 XML 约束。
XML 约束的作用:定义 XML 文档的结构、允许的标签、属性、数据类型,保证配置文件的合法性,避免写错。
主流的约束有两种:DTD 和 XML Schema(XSD)。
3.4.1 DTD 约束
DTD 是早期的 XML 约束机制,语法简单,用于定义 XML 的元素、属性、层级关系,开发中最常用的是外部 DTD 引入。
引入示例:
xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入本地的bean.dtd约束文件 -->
<!DOCTYPE beans SYSTEM "bean.dtd">
<beans>
<bean id="dept" className="com.atguigu.bean.Department">
<property name="dname" value="财务部"></property>
</bean>
</beans>
优点:简单易用,兼容性好
缺点:功能有限,不支持复杂的数据类型校验
3.4.2 XML Schema(XSD)约束
XSD 是比 DTD 更强大、更灵活的约束机制,支持丰富的数据类型、复杂的结构定义,是目前主流的 XML 约束方式。
引入示例:
xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.atguigu.cn/bean"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.atguigu.cn/bean bean-schema.xsd">
<bean id="dept" className="com.atguigu.bean.Department">
<property name="dname" value="财务部"/>
</bean>
核心参数说明:
-
xmlns:命名空间,和约束文件中的targetNamespace保持一致
-
xmlns:xsi:固定写法,声明遵循 XML Schema 的规范
-
xsi:schemaLocation:格式为「命名空间 约束文件路径」,指定约束文件的位置
优点:支持丰富的数据类型,可定义复杂的结构约束,灵活性强
缺点:语法相对复杂,学习成本略高
四、本篇总结
本文我们完整梳理了 Java Web 开发的两大前置基础:
HTTP 协议:掌握了它的发展历程、请求 / 响应报文结构、核心状态码,搞懂了浏览器和服务器的通信规则
XML 配置:掌握了它的基础语法、和 HTML 的区别,以及 DTD/XSD 两种约束的引入方式,为后续 Servlet 配置、框架配置打下了基础

265

被折叠的 条评论
为什么被折叠?



