从一张网页到一条数据库记录,把 HTML、CSS、JavaScript、HTTP、Servlet、会话、JSP、过滤器、JDBC 串成一条完整的线。
适用对象:学完 JavaWeb 课程、准备期末考试与课程设计的学生 使用方式:第一遍按顺序读,第二遍只看每章的「本章小结」与「自测」,第三遍只做第 12 章的自测卷
如何使用这份讲义
这份讲义由课程配套的八份资料(HTML&CSS、JavaScript、HTTP&Tomcat&Servlet、Request&Response、会话技术、JSP、Filter&Listener、JDBC)加上响应状态码速查表重新编排而成。编排上做了三件事:
- 重排顺序。原始资料按授课进度排列,同一份 PDF 里常常前半段讲协议、后半段讲容器,知识点被切得很碎。本讲义按"看得见的页面 → 看不见的协议 → 服务端的程序 → 跨请求的状态 → 工程化的分层"这条认知顺序重新切成六部分十二章,让每一章都只依赖前面已经讲过的内容。
- 补齐断层。原始资料偏课堂口语,很多地方只给结论、跳过原理(例如为什么要
setCharacterEncoding、转发和重定向到底差在哪、Session 为什么依赖 Cookie)。这些位置统一用带标签的引用块补写:【补充】 讲原理与背景,【易错点】 讲实际容易出错的地方,【对比】 给易混概念的对照,【考点】 给考试与面试的高频结论。 - 标出难度。每章开头标注星级难度与前置章节,方便你按自己的薄弱环节跳读;每章结尾有「本章小结」(用来考前扫读)与「自测」(用来查漏)。
原文的技术表述、属性说明、代码示例一律保留,只做顺序调整、衔接补写,以及 PDF 排版造成的断行与错位的还原。所以你在讲义里看到的每一段定义、每一张属性表、每一段可运行代码,都能在原始资料里找到出处。
【补充】讲义里的代码都可以直接抄进 IDEA 或浏览器运行。如果你发现某段代码"看着对但跑不起来",先检查三件事:包名是否与你的工程一致、
web.xml的版本头是否匹配你的 Tomcat、数据库连接的用户名密码是否改成了你自己的。
全书知识地图
先看一张全局图。这张图回答一个问题:当你在浏览器里点下"登录"按钮,究竟发生了什么?
┌────────────────────────── 浏览器(前端三件套) ──────────────────────────┐
│ 第1章 HTML 结构:表单、输入框、按钮 —— 数据从哪采集 │
│ 第2章 CSS 表现:让表单好看 —— 数据长什么样 │
│ 第3章 JS 行为:提交前先校验手机号格式 —— 数据出发前先自检 │
└───────────────────────────────────┬─────────────────────────────────────┘
│ 第4章 HTTP:把数据打包成请求报文
│ POST /brand/login HTTP/1.1
│ Content-Type: application/x-www-form-urlencoded
▼
┌────────────────────────── Tomcat(Servlet 容器) ───────────────────────┐
│ 第5章 容器接住请求,按 urlPattern 找到对应的 Servlet,开一个线程执行 │
│ │
│ 第6章 Request ← 从报文里取出 username/password │
│ 第7章 会话 → 校验通过后把用户放进 Session,发回 JSESSIONID │
│ 第9章 Filter ↕ 在 Servlet 之前之后横插一刀:编码、登录校验、日志 │
│ │
│ 第8章 JSP/EL/JSTL → 把结果渲染成 HTML 写回响应体 │
│ 第10章 JDBC → 需要查库时,通过连接池拿连接、预编译 SQL、取结果集 │
└───────────────────────────────────┬─────────────────────────────────────┘
▼
MySQL(数据落地)把这张图拆成六部分,就是本讲义的结构:
| 部分 | 章 | 主题 | 概括 | 难度 |
|---|---|---|---|---|
| 第一部分 基础篇 | 第1章 | Web 导论与 HTML | 网页是数据的展示层 | ★☆☆☆☆ |
| 第2章 | CSS 样式与页面美化 | 让展示层能看 | ★★☆☆☆ | |
| 第3章 | JavaScript 与 DOM 编程 | 让展示层会动、会自检 | ★★★☆☆ | |
| 第二部分 协议与容器 | 第4章 | HTTP 协议与响应状态码 | 前后端之间唯一的语言 | ★★☆☆☆ |
| 第5章 | Tomcat 与 Servlet | 服务端程序长什么样 | ★★★☆☆ | |
| 第三部分 请求与响应 | 第6章 | Request 与 Response | 一个 Servlet 的全部工作 | ★★★☆☆ |
| 第四部分 状态保持与视图 | 第7章 | 会话技术:Cookie 与 Session | HTTP 无状态,怎么记住你 | ★★★★☆ |
| 第8章 | JSP、EL 与 JSTL | 把 Java 从页面里赶出去 | ★★★★☆ | |
| 第五部分 进阶与实战 | 第9章 | Filter 与 Listener | 横切关注点与全局事件 | ★★★★☆ |
| 第10章 | JDBC 与数据库访问 | 程序与数据的最后一公里 | ★★★☆☆ | |
| 第11章 | 综合实战 | 把十章拼成一个能跑的系统 | ★★★★★ | |
| 第六部分 自测与附录 | 第12章 | 期末自测卷与查漏补缺 | 用一张卷子定位薄弱点 | ★★★★★ |
难度曲线说明
本讲义的难度分布并不均匀,全书按掌握方式分成三个阶段:
- 第一段(第 1~4 章,记忆为主):标签、属性、语法、报文格式。特点是"多但不难",靠抄代码和反复查表就能掌握。这一段的目标是把词汇量建起来,看到
colspan、onsubmit、302、doGet能立刻反应过来是什么。 - 第二段(第 5~8 章,理解为主):Servlet 的生命周期、请求与响应的双向流动、无状态与有状态的矛盾、页面与逻辑的分工。这一段开始出现"为什么必须这样写"的问题,是考试简答题的主战场。
- 第三段(第 9~11 章,综合为主):过滤器链的顺序、连接池与事务、三层架构的职责划分。这一段不再有孤立的知识点,每个问题都要同时调动前面几章的内容,也是课程设计最容易卡住的地方。
【考点】期末卷子的分值分布通常与这条曲线同构:选择题集中在第一段(约占 40%),简答与读程序题集中在第二段(约占 40%),综合设计题集中在第三段(约占 20%)。如果你的时间不够,优先保证第一段的"记忆题"不丢分,再把第二段的对比类问题(转发/重定向、Cookie/Session、Statement/PreparedStatement)背熟。
三轮复习法
第一轮:通读建图(约 6 小时) 按章顺序读一遍,不要纠结细节,读完每章只做一件事:把「本章小结」抄成一张便签,贴在知识地图上对应的位置。读完十二章,你应该能不看书画出上面那张链路图。
第二轮:专题突破(约 8 小时) 按"横向专题"重读,这是本讲义重排顺序后最大的好处。至少做这四个专题:
| 专题 | 涉及章节 | 要能回答的问题 |
|---|---|---|
| 数据的流动 | 第1、6、7、10章 | 用户在表单里输入的一个字符串,经过哪些编码转换才变成数据库里的一行? |
| 状态与作用域 | 第6、7、8章 | page / request / session / application 四个域各活多久、谁能看见? |
| 请求的分发 | 第5、6、9章 | 转发、重定向、过滤器、监听器分别在请求生命周期的哪个时刻介入? |
| 页面的演进 | 第6、8章 | 从 out.print("<html>") 到 JSP 再到 EL/JSTL,每一步解决了什么问题? |
第三轮:模考补漏(约 3 小时) 只做第 12 章的自测卷,限时完成,对答案后按错题回到对应章节的「本章小结」。如果某一章的错误率超过 30%,说明那一章的"为什么"没读懂,需要回去看【补充】块。
术语速查
读之前先把这几个词的含义确定下来,后面每一章都会反复用到:
| 术语 | 定义 | 首次出现 |
|---|---|---|
| Web | 全球广域网(万维网),基于 HTTP 协议、用浏览器访问的信息系统 | 第1章 |
| JavaWeb | 用 Java 技术解决 Web 互联网领域问题的一整套技术栈 | 第1章 |
| HTML | 超文本标记语言,负责网页的结构 | 第1章 |
| CSS | 层叠样式表,负责网页的表现 | 第2章 |
| JavaScript | 运行在浏览器里的脚本语言,负责网页的行为 | 第3章 |
| HTTP | 超文本传输协议,浏览器与服务器之间传输数据的规则 | 第4章 |
| 请求 / 响应 | 浏览器发出的一次"要"与服务端返回的一次"给",成对出现 | 第4章 |
| Servlet | 运行在服务端、用来处理请求并生成响应的 Java 程序 | 第5章 |
| 容器 | 管理和运行 Servlet 的环境(如 Tomcat),负责创建、调用、销毁 | 第5章 |
| 会话 | 一次浏览器与服务器之间连续的交互过程,可跨多次请求 | 第7章 |
| 作用域 | 数据存放的"可见范围",决定谁能取到、能取多久 | 第6章 |
| 过滤器 | 在请求到达 Servlet 之前、响应返回浏览器之前插一脚的组件 | 第9章 |
| JDBC | Java 访问关系型数据库的标准 API | 第10章 |
阅读约定
★越多表示越难,五颗星表示需要综合运用前面多章内容。- 加粗 的术语是该节的核心概念,考前扫读时只看加粗部分即可回忆起该节。
- 引用块
> **【补充】**、> **【易错点】**、> **【对比】**、> **【考点】**是讲义补写的内容,原文没有;其余正文均来自原始资料。 - 代码块左上角的语言标记(html / css / javascript / java / xml / sql / text)表示该段代码的用途,方便你直接复制到对应文件。
- 「自测」的参考答案统一放在该题组末尾的引用块里,建议先合上答案自己写一遍再对照。