考试知识点梳理

《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.propertiesapplication.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:runjava -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 示例
xml 复制代码
<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 核心用法

java 复制代码
// 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 核心步骤(顺序必须掌握)

  1. 获取数据库连接DriverManager.getConnection()
  2. 创建 Statement / PreparedStatement
  3. 执行 SQL 语句
  4. 处理结果集ResultSet
  5. 释放资源(依次关闭 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 完整流程

  1. 实体类:创建与表对应的 Java 实体类(使用 Lombok 简化)。
  2. Mapper 接口 :定义数据访问方法,用 @Mapper 标记。
  3. Mapper.xml:编写 SQL 映射文件,实现动态 SQL。
  4. Service 接口:声明业务方法。
  5. Service 实现类 :用 @Service 标记,@Autowired 注入 Mapper,实现业务方法。
  6. Controller :用 @RestController 标记,@Autowired 注入 Service,暴露 API。
  7. 前端:用 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 基本格式

json 复制代码
{
  "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 卷所有题型(选择、判断、简答、读题写结果、填空、编程)所涉及的考点,既包括基础概念,也包含实战细节。建议同学结合课堂项目和实验代码对照复习。