第一篇:Java Web 前置基础:HTTP 协议与 XML 配置全解

一、开篇:为什么要先学这两个知识点?
在 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>

核心参数说明:

  1. xmlns:命名空间,和约束文件中的targetNamespace保持一致

  2. xmlns:xsi:固定写法,声明遵循 XML Schema 的规范

  3. xsi:schemaLocation:格式为「命名空间 约束文件路径」,指定约束文件的位置

    优点:支持丰富的数据类型,可定义复杂的结构约束,灵活性强
    缺点:语法相对复杂,学习成本略高

四、本篇总结

本文我们完整梳理了 Java Web 开发的两大前置基础:
HTTP 协议:掌握了它的发展历程、请求 / 响应报文结构、核心状态码,搞懂了浏览器和服务器的通信规则
XML 配置:掌握了它的基础语法、和 HTML 的区别,以及 DTD/XSD 两种约束的引入方式,为后续 Servlet 配置、框架配置打下了基础

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值