Java EE 核心知识点复盘:从 Web 基础到数据库交互
一、引言:Java Web 不只是 Spring Boot
说起 Java Web ,你的第一反应是不是 Spring Boot。但 Spring Boot 只是把底层的东西封装好了——HTTP 协议怎么走的、Tomcat 怎么部署的、JDBC 怎么连数据库的、XML 怎么配置的,这些都需要我们进行深入学习。
二、前端:HTML、CSS、JavaScript
2.1 HTML
HTML 用标签来标记内容的结构——标题、段落、表格、表单、图片、链接。标签成对出现(<p></p>)或者自闭合(<img />),属性控制样式或行为。
表单是前后端交互的入口,<form> 的action指定提交地址,method指定 GET 还是 POST。
2.2 CSS
CSS 控制布局、颜色、字体、边距、背景。引入方式有三种:行内(style属性)、页内(<style>标签)、外部(.css文件)。是写死的,不可改变的。
可以使用盒模型,每个元素都是一个盒子,包含内容区、内边距(padding)、边框(border)、外边距(margin)。
2.3 JavaScript
JavaScript 可以操作 DOM(改变页面内容)、操作 BOM(控制浏览器窗口)、发 Ajax 请求、处理事件。其本质是和数据库交互,可以展示数据库的数据。事件驱动是 JS 的核心——用户点击按钮、移动鼠标、提交表单,都会触发事件,绑定的回调函数就会执行。
2.4 jQuery
jQuery 封装了 DOM 操作、事件处理、动画效果和 Ajax 请求,用 $()选择元素,链式调用非常方便。
三、AJAX 与 JSON
3.1 AJAX:是前后端的连接
AJAX 的核心是 XMLHttpRequest对象,它在后台和服务器交换数据,页面不用整体刷新,只更新需要变的部分。
步骤:
1. 创建XMLHttpRequest对象
2. open()设置请求方式和 URL
3. send()发送请求
4. 监听 onreadystatechange 事件,readyState === 4且 status === 200时处理响应
这个步骤需要记住
来一个小栗子,这里我们使用 jQuery 封装:
$.ajax({
url: "http://localhost:8080/user/list",
type: "post",
data: { name: "张三" },
success: function(res) {
console.log("后端返回:", res);
}
});
3.2 JSON
JSON 是轻量级的数据交换格式,用键值对组织数据,结构清晰,几乎所有编程语言都支持解析和生成。
但是它的格式要求很严格:键必须用双引号,字符串也必须用双引号,不支持注释、函数undefined。
举个例子,javaScript 操作 JSON:
// 对象 → JSON 字符串
let jsonStr = JSON.stringify({ name: "张三", age: 20 });
// JSON 字符串 → 对象
let obj = JSON.parse(jsonStr);
FastJSON(Java 端):
// 对象 → JSON 字符串
String json = JSON.toJSONString(user);
// JSON 字符串 → 对象
User user = JSON.parseObject(json, User.class);
四、Tomcat:Web 应用的“家”
4.1 Tomcat
Tomcat 是 Apache 基金会的开源 Servlet 容器,是 Java Web 开发中最常用的轻量级应用服务器。它接收 HTTP 请求,交给部署在里面的 Web 应用处理,再把结果返回给浏览器。说白了,就是接受请求,再把这个给web,拿到结果给浏览器,就这么简单。
4.2 目录结构
| 目录 | 作用 |
| bin | 启动和关闭脚本(startup.bat/ shutdown.bat) |
| conf | 配置文件,server.xml 是核心 |
| lib | Tomcat 运行依赖的 jar 包 |
| logs | 日志文件 |
| webapps | 默认的应用部署根目录 |
| work | JSP 编译后的 Servlet 类文件 |
4.3 部署项目的三种方式
1. 直接复制:把 war 包或文件夹扔进 webapps目录,Tomcat 启动时自动部署。
2. Context 配置:在 conf/server.xml的 <Host>里加 <Context>标签,指定 docBase(项目路径)和 path访问路径)。
3. 独立描述文件:在 conf/Catalina/localhost/下创建 xxx.xml,内容为 <Context docBase="项目路径" />,访问路径就是文件名 xxx。
4.4 IDEA 整合 Tomcat
那么我们如何在IDEA里面整合呢?
答:在 IDEA 的 Run/Debug Configurations 里添加 Tomcat Server Local,这里记得指定 Tomcat 路径和 JRE。创建 Web 项目时选 Java Enterprise 或使用 Maven 的 maven-archetype-webapp骨架。
部署时配置 Artifacts(打包产出),选 Web Application: Exploded(展开目录,方便热部署),在 Deployment 里添加并设置 Application Context(访问路径)。
五、HTTP 协议:浏览器和服务器怎么聊天
5.1 请求-响应模式
HTTP 是应用层协议,客户端主动把请求发过去,服务端被动返回响应。
5.2 无状态
HTTP 本身是不保存请求之间的状态信息,每次请求都是独立的,服务端不记得你是谁。那我们每次操作都得验证信息太麻烦,所以我们引入了 Cookie、Session、Token 这些机制来维持登录状态。
5.3 请求结构
请求行:方法(GET/POST/PUT/DELETE)、URI、协议版本
请求头:键值对,Host、User-Agent、Content-Type、Accept等
请求体:POST/PUT 时携带的数据(表单参数或 JSON)
5.4 响应结构
状态行:协议版本、状态码、状态描述
响应头:Content-Type、Content-Length、Set-Cookie等
响应体:实际返回的数据(HTML、JSON、图片等)
这些状态码分类记住,可以便于我们排查错误,修改代码:
2xx:成功(200 OK)
3xx:重定向(302 Found、304 Not Modified)
4xx:客户端错误(404 Not Found、403 Forbidden)
5xx:服务端错误(500 Internal Server Error)后端代码要修改
六、JDBC:后台和数据库的连接
6.1 JDBC介绍
JDBC 是 Java 访问数据库的标准 API,不同数据库厂商提供不同的驱动实现,开发者面向 JDBC 接口编程就行。
它的标准如下:
1. 加载驱动(高版本可自动加载)
2. 获取连接(`DriverManager.getConnection()`)
3. 创建 Statement / PreparedStatement
4. 执行 SQL
5. 处理 ResultSet
6. 释放资源
,太干了,拿个小栗子过来:
// 获取连接
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/db", "root", "password");
// 预编译 SQL(防注入)
PreparedStatement ps = conn.prepareStatement("SELECT * FROM user WHERE id = ?");
ps.setInt(1, 1);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
}
// 释放资源(finally 里关)
rs.close();
ps.close();
conn.close();
6.2 PreparedStatement 为什么比 Statement 安全
Statement是拼接字符串执行 SQL,参数内容可能被当作 SQL 语法执行——这就是 SQL 注入。
PreparedStatement用占位符 ? 绑定参数,参数值会被转义处理,不会改变 SQL 结构,从根本上防止了注入。而且预编译的 SQL 可以复用,性能也更好。
这个SQL注入是曾经黑客常用来获取我们信息的一种技术,不过现在大家不用担心,java以及改进了。
6.3 事务控制
JDBC 事务控制的核心是确保一组数据库操作要么全部成功,要么全部失败。基本流程如下:
// 1. 关闭自动提交,开启事务
conn.setAutoCommit(false);
try {
// 2. 执行多条 SQL 操作
ps1.executeUpdate();
ps2.executeUpdate();
// 3. 所有操作成功,提交事务
conn.commit();
System.out.println("事务提交成功");
} catch (Exception e) {
// 4. 发生异常,回滚事务,撤销所有操作
conn.rollback();
System.out.println("事务回滚,原因:" + e.getMessage());
throw e; // 可选择继续向上抛出异常
} finally {
// 5. 恢复自动提交模式(可选,取决于后续操作)
conn.setAutoCommit(true);
}
关键点:
setAutoCommit(false):关闭自动提交,开启事务。
commit():所有操作成功后,手动提交,使更改永久生效。
rollback():发生异常时回滚,撤销本次事务内的所有操作。
finally 块:通常用于释放资源(如关闭 Statement、ResultSet),这里也可用于恢复自动提交模式。
事务这一块最典型的案例就是转账,必须同时成功,或同时失败,不然,一个人钱转过去了,另一个人收钱失败了,这个钱不翼而飞了,这也太可怕了。
七、数据库:SQL 与表设计
7.1 SQL 四大类
| 分类 | 全称 | 常用语言 | 作用 |
| DDL | 数据定义语言 | CREATE、ALTER、DROP | 操作数据库和表的结构 |
| DML | 数据操作语言 | INSERT、UPDATE、DELETE | 操作表中的数据 |
| DQL | 数据查询语言 | SELECT | 查询数据(最常用) |
| DCL | 数据控制语言 | GRANT、REVOKE | 管理权限 |
7.2 多表查询
内连接(INNER JOIN):返回两张表匹配的记录,不匹配的不要。
SELECT * FROM user u INNER JOIN order o ON u.id = o.user_id;
左外连接(LEFT JOIN)**:左表全返回,右表没匹配的填 NULL。
SELECT * FROM user u LEFT JOIN order o ON u.id = o.user_id;
子查询:一个查询嵌套在另一个查询里。逻辑清晰但性能通常不如 JOIN。
7.3 表关系设计
| 关系 | 实现方式 |
| 一对多 | 在“多”的一方加外键指向“一”的一方 |
| 多对多 | 引入中间表,存两个外键 |
| 一对一 | 共享主键,或在一方加唯一外键 |
八、XML:配置文件的老朋友
8.1 XML 的结构 (主包对这块也不太了解,所以这里只放了官方的定义,等主包学习了之后再写一篇博客,详细介绍)
XML 是可扩展标记语言,标签自定义,常用于配置文件和数据传输。
文档声明:第一行,指定版本和编码
根元素:有且只有一个
元素:起始标签 + 结束标签,可嵌套
属性:为元素添加附加信息,值必须加引号
CDATA:原样输出特殊字符,不被解析
8.2 XML 约束
约束规定了 XML 文档的结构和数据类型。常见的有 DTD 和 Schema(XSD)。Schema 比 DTD 强大——支持更多数据类型、命名空间、继承,现在用得更多。
九、总结
Java Web 开发的知识体系可以概括为一条链路:
浏览器发请求 → HTTP 协议传输 → Tomcat 接收 → Web 应用处理 → JDBC 操作数据库 → 返回响应
每一个环节都有对应的技术:前端用 HTML/CSS/JS,通信靠 HTTP/AJAX/JSON,服务器用 Tomcat,后端用 Servlet/JSP,数据层用 JDBC/SQL。
感谢浏览我的博客,希望对你有所帮助~(^ - ^)~
更多推荐

所有评论(0)