《Web应用技术》期末考试知识点整理
本知识点梳理基于试卷,覆盖选择题、简答题、读题写结果题、代码填空题、综合编程题五大题型所涉及的全部考点。
一、Spring Boot 核心基础
1.1 Spring Boot 简介与优势
- 核心定位:Spring Boot 是 Spring 框架的扩展,旨在简化 Spring 应用的初始搭建和开发过程。
- 与传统 Spring 框架的区别 :
- 传统 Spring 需要大量 XML 或 Java 配置,Spring Boot 通过自动配置减少配置量。
- Spring Boot 提供起步依赖(Starter),一个依赖包含多个相关库,简化 Maven 管理。
- Spring Boot 内置 Web 服务器(默认 Tomcat),可打包成可执行 JAR 直接运行,无需外部部署。
1.2 配置文件
- 默认配置文件 :
application.properties 或 application.yml
- 主要作用 :配置项目运行参数,如:
- 服务器端口(
server.port)
- 数据库连接信息(
spring.datasource)
- 日志级别等
1.3 核心注解
| 注解 |
作用 |
使用位置 |
@SpringBootApplication |
标记启动类,组合了 @Configuration + @EnableAutoConfiguration + @ComponentScan |
启动类 |
@RestController |
标记 REST 控制器,相当于 @Controller + @ResponseBody,方法返回数据而非视图 |
Controller 类 |
@Controller |
标记控制器,返回视图或配合 @ResponseBody 返回数据 |
Controller 类 |
@Service |
标记业务逻辑层组件 |
Service 实现类 |
@Mapper |
标记 MyBatis 数据访问层接口 |
Mapper 接口 |
@Component |
通用组件注解,可被 Spring 容器扫描管理 |
任意类 |
@Autowired |
按类型进行依赖注入 |
字段、构造方法、setter 方法 |
@Resource |
按名称进行依赖注入(Java 标准) |
字段、setter 方法 |
1.4 依赖注入(DI)与控制反转(IoC)
- 概念:将对象所需依赖关系的创建和管理交给 Spring 容器,而非对象自身创建。
- IoC(控制反转):对象的创建权由程序本身反转给 Spring 容器。
- DI(依赖注入):容器在创建对象时,自动将其依赖的对象注入进去。
- 优点:降低代码耦合度,提高可测试性和可维护性。
- 注入方式 :
- 字段注入(
@Autowired 直接写在字段上)
- 构造方法注入(推荐)
- setter 方法注入
1.5 请求映射注解(Spring MVC)
| 注解 |
说明 |
示例 |
@RequestMapping |
通用请求映射 |
@RequestMapping(value = "/book", method = RequestMethod.GET) |
@GetMapping |
映射 GET 请求 |
@GetMapping("/book/{id}") |
@PostMapping |
映射 POST 请求 |
@PostMapping("/book") |
@PutMapping |
映射 PUT 请求(更新) |
@PutMapping("/book/{id}") |
@DeleteMapping |
映射 DELETE 请求(删除) |
@DeleteMapping("/book/{id}") |
1.6 参数接收注解
| 注解 |
作用 |
示例 |
@PathVariable |
接收 URL 路径中的参数 |
@DeleteMapping("/user/{id}") → @PathVariable Integer id |
@RequestParam |
接收 URL 查询参数 |
@RequestParam("page") Integer page |
@RequestBody |
接收请求体中的 JSON 数据 |
@RequestBody Student student |
1.7 启动类与运行
- 启动类 :包含
main 方法,使用 @SpringBootApplication 标记。
- 运行方式 :
mvn spring-boot:run 或 java -jar xxx.jar
二、MyBatis 持久层框架
2.1 MyBatis 简介
- 定位:半自动化的 ORM(对象关系映射)框架。
- 特点 :
- 需要开发者编写 SQL 语句(与全自动 ORM 如 Hibernate 的区别)。
- 将 SQL 与 Java 代码解耦,提高维护性。
- 通过 XML 或注解配置 SQL 与方法的映射关系。
2.2 核心注解
| 注解 |
作用 |
@Mapper |
标记接口为 MyBatis 的 Mapper 接口,生成代理实现类 |
@Select |
在方法上直接编写查询 SQL |
@Insert |
在方法上直接编写插入 SQL |
@Update |
在方法上直接编写更新 SQL |
@Delete |
在方法上直接编写删除 SQL |
@Param |
为 Mapper 方法的多个参数命名,便于 SQL 中引用 |
2.3 Mapper.xml 映射文件
| 标签 |
作用 |
<select> |
定义查询 SQL |
<insert> |
定义插入 SQL |
<update> |
定义更新 SQL |
<delete> |
定义删除 SQL |
<where> |
动态生成 WHERE 子句,自动处理多余 AND/OR |
<if> |
条件判断,用于动态 SQL |
<foreach> |
循环,用于 IN 查询或批量操作 |
<select id="search" resultType="Student">
select * from student
<where>
<if test="name != null and name != ''">
and name like concat('%', #{name}, '%')
</if>
</where>
</select>
2.4 参数传递
- 单参数 :
#{参数名} 直接引用。
- 多参数 :使用
@Param 注解,如 @Param("studentName") String studentName,SQL 中用 #{studentName} 引用。
- 对象参数 :直接用对象的属性名,如
#{id}、#{name}。
三、Vue.js 前端框架
3.1 核心概念
- Vue 实例 :通过
new Vue({ ... }) 创建。
- 核心选项 :
el:挂载点,指定 Vue 管理的 DOM 元素。
data:声明响应式数据(必须是函数形式返回对象)。
methods:定义方法,通过 this.属性名 访问 data 中的数据。
mounted:生命周期钩子,页面加载完成后自动执行。
3.2 常用指令
| 指令 |
作用 |
示例 |
v-for |
循环渲染列表 |
<tr v-for="item in list"> |
v-if / v-else |
条件渲染 |
<div v-if="visible"> |
v-bind (简写 :) |
动态绑定属性 |
:href="'update.html?id='+item.id" |
v-on (简写 @) |
绑定事件 |
@click="deleteItem(id)" |
v-model |
双向数据绑定 |
<input v-model="form.name"> |
3.3 模板语法
- 插值表达式 :
{``{ 变量名 }},在 HTML 中显示数据。
- 属性绑定 :使用
: 简写,如 :href。
3.4 生命周期(重点)
- mounted:页面 DOM 渲染完成后执行,适合发送初始数据请求(如查询列表)。
3.5 与 Axios 配合
- Axios:基于 Promise 的 HTTP 库,用于发送 Ajax 请求。
- GET 请求 :
axios.get('/api/books').then(res => { ... })
- POST 请求 :
axios.post('/api/book', data).then(res => { ... })
- DELETE 请求 :
axios.delete('/api/book/' + id).then(res => { ... })
- 响应处理 :通常先检查
res.data.code 判断业务是否成功,再使用 res.data.data 获取数据。
四、前后端分离开发
4.1 核心思想
- 前端负责UI展示 和用户交互 ,后端负责业务逻辑 和数据持久化。
- 前后端通过 RESTful API 进行数据通信,常见数据格式为 JSON。
4.2 优势
- 并行开发:前后端团队可独立开发,只需提前约定 API 接口。
- 独立部署:前端可部署在 Nginx/CDN,后端部署在服务器。
- 技术栈解耦:前端可选用 Vue/React,后端可选用 Java/Node.js 等。
- 可扩展性:同一后端 API 可供 Web、App、小程序等多端使用。
4.3 后端开发人员主要职责
- 设计数据库表结构。
- 编写业务逻辑层(Service)和数据访问层(Mapper)代码。
- 设计并实现 RESTful API 接口(Controller)。
- 使用 Apifox/Swagger 编写和维护 API 接口文档。
- 进行接口自测,保证接口的正确性和稳定性。
五、Apifox 接口测试工具
5.1 主要作用
- API 文档定义与管理
- 接口调试与测试
- Mock 数据模拟
- 团队协作
5.2 使用场景
- 前后端开发前约定接口规范
- 后端开发完成后进行接口测试
- 前端在接口未完成时使用 Mock 数据开发
六、PageHelper 分页插件
6.1 核心用法
// 1. 设置分页参数:页码,每页条数
PageHelper.startPage(page, pageSize);
// 2. 执行查询(自动在 SQL 后拼接 LIMIT)
List<Student> list = mapper.findAll();
// 3. 封装为 PageInfo 对象(包含总记录数、总页数等)
PageInfo<Student> pageInfo = new PageInfo<>(list);
6.2 PageInfo 关键字段
| 字段 |
说明 |
total |
总记录数 |
pageNum |
当前页码 |
pageSize |
每页条数 |
pages |
总页数 |
list |
当前页数据列表 |
isFirstPage / isLastPage |
是否首页/末页 |
6.3 前端分页需要的关键字段
- 总记录数(total):用于计算总页数、显示"共 X 条"。
- 当前页数据列表(list):用于在表格中渲染展示。
七、Maven 项目管理工具
7.1 核心配置文件
- pom.xml:项目对象模型文件,管理项目依赖、构建插件、项目信息。
7.2 核心标签
| 标签 |
作用 |
<dependency> |
声明项目依赖的外部库 |
<groupId> |
定义项目组 ID |
<artifactId> |
定义项目构件 ID |
<version> |
定义项目版本号 |
<plugins> |
配置构建插件 |
7.3 主要功能
- 依赖管理(自动下载所需 jar 包)
- 项目构建(编译、打包、测试)
- 生命周期管理
八、Lombok 插件
8.1 主要作用
- 通过注解在编译时自动生成样板代码,无需手动编写。
- 不会修改源码,而是通过注解处理器在字节码层面生成代码。
8.2 常用注解
| 注解 |
生成内容 |
@Data |
getter、setter、toString、equals、hashCode、无参构造 |
@AllArgsConstructor |
全参构造方法 |
@NoArgsConstructor |
无参构造方法 |
@Getter / @Setter |
仅生成 getter 或 setter |
九、JDBC 基础(了解层次)
9.1 核心步骤(顺序必须掌握)
- 获取数据库连接 (
DriverManager.getConnection())
- 创建 Statement / PreparedStatement
- 执行 SQL 语句
- 处理结果集 (
ResultSet)
- 释放资源(依次关闭 ResultSet、Statement、Connection)
9.2 Statement 与 PreparedStatement 的区别
| 对比项 |
Statement |
PreparedStatement |
| SQL 注入 |
存在风险 |
可防止 |
| 执行效率 |
较低(每次都编译) |
较高(预编译) |
| 参数处理 |
字符串拼接 |
? 占位符 + setXxx |
十、RESTful API 设计规范
10.1 核心原则
- 使用 HTTP 方法 表示操作类型。
- 使用 URL 表示资源。
- 使用 HTTP 状态码 表示结果。
10.2 常见映射
| 操作 |
HTTP 方法 |
URL 示例 |
| 查询列表 |
GET |
/api/books |
| 查询单条 |
GET |
/api/books/{id} |
| 新增 |
POST |
/api/books |
| 修改 |
PUT |
/api/books/{id} |
| 删除 |
DELETE |
/api/books/{id} |
10.3 常见状态码
| 状态码 |
含义 |
| 200 OK |
请求成功 |
| 201 Created |
创建成功 |
| 400 Bad Request |
请求参数错误 |
| 404 Not Found |
资源不存在 |
| 500 Internal Server Error |
服务器内部错误 |
十一、分层架构与解耦思想
11.1 三层架构(MVC 模式)
| 层 |
对应组件 |
职责 |
| 表现层(Controller) |
@RestController |
接收 HTTP 请求,调用 Service,返回响应数据 |
| 业务逻辑层(Service) |
@Service |
封装业务逻辑,协调多个 Mapper 操作,事务管理 |
| 数据访问层(Mapper/DAO) |
@Mapper |
直接操作数据库,执行 SQL |
11.2 分层解耦的优势
- 高内聚:每层只关注自己的核心职责。
- 低耦合:层与层之间通过接口通信,依赖于抽象而非具体实现。
- 易于维护:某层内部修改不影响其他层。
- 便于测试:可对每层独立进行单元测试。
十二、典型开发流程(以查询为例)
12.1 完整流程
- 实体类:创建与表对应的 Java 实体类(使用 Lombok 简化)。
- Mapper 接口 :定义数据访问方法,用
@Mapper 标记。
- Mapper.xml:编写 SQL 映射文件,实现动态 SQL。
- Service 接口:声明业务方法。
- Service 实现类 :用
@Service 标记,@Autowired 注入 Mapper,实现业务方法。
- Controller :用
@RestController 标记,@Autowired 注入 Service,暴露 API。
- 前端:用 Vue + Axios 调用 API,渲染数据。
12.2 新增流程
前端触发 → Vue methods → Axios POST 请求 → Controller 接收 → Service 调用 → Mapper 执行 INSERT → 返回结果
12.3 删除流程
点击删除按钮 → Vue methods 确认 → Axios DELETE 请求 → Controller 接收 @PathVariable → Service 调用 → Mapper 执行 DELETE → 刷新列表
十三、JSON 与数据交互
13.1 基本格式
{
"id": 1,
"name": "张三",
"major": "计算机"
}
13.2 前后端数据传递
- 后端返回 :Controller 方法直接返回对象或
Result 封装对象,Spring Boot 自动转为 JSON。
- 前端接收 :
res.data 即为 JSON 对象。
- POST 请求传 JSON :设置请求头
Content-Type: application/json,后端用 @RequestBody 接收。
十四、综合注意事项
14.1 常见易错点
@RestController 方法不返回视图,而是返回 JSON 数据。
- PageHelper 必须在查询之前调用,且只对其后的第一个查询生效。
- Mapper 接口方法多参数时必须用
@Param。
- MyBatis 中
#{} 是预编译占位符,${} 是字符串替换(存在 SQL 注入风险)。
- Vue 的
data 必须是函数 形式,return { ... }。
- 操作数据库后务必释放资源(JDBC 中)。
14.2 开发工具链
- 构建工具:Maven
- 后端框架:Spring Boot + MyBatis
- 前端框架:Vue.js + Axios
- API 测试:Apifox / Postman
- 代码简化:Lombok
- 分页插件:PageHelper
整理说明:以上知识点完全覆盖 A 卷所有题型(选择、判断、简答、读题写结果、填空、编程)所涉及的考点,既包括基础概念,也包含实战细节。建议同学结合课堂项目和实验代码对照复习。