《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 查询或批量操作 |
- 动态 SQL 示例:
<selectid="search"resultType="Student">select * from student<where><iftest="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=newPageInfo<>(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 卷所有题型(选择、判断、简答、读题写结果、填空、编程)所涉及的考点,既包括基础概念,也包含实战细节。建议同学结合课堂项目和实验代码对照复习。