JavaWeb 课程概述
JavaWeb 课程概述
课程中的项目 基于springBoot3+ vue3 技术进行开发,开发模式选用前后端分离模式
-
需求分析 -> 页面原型和需求文档
-
项目设计^1^
-
数据库设计^1^
基于页面原型和需求文档设计对应的表结构和功能接口
-
前后端程序开发
-
前后端程序联调测试
-
项目部署
Part1: 前端Web基础 (2天)
-
HTML(网页的结构)HTML(超文本标记语言) | MDN
-
CSS(网页的表现)CSS:层叠样式表 | MDN
-
JS(网页的行为)
-
-
Ajax / Axios
文档:
Part2: 后端Web基础 (4天)
https://heuqqdmbyk.feishu.cn/wiki/MQ95wDTtji6ob6kiRkyc9jamnwg
- MySQL
- JDBC
- Mybatis
https://heuqqdmbyk.feishu.cn/wiki/UmHJwg2cqi0kYUkOFDIcHGfvnld
https://heuqqdmbyk.feishu.cn/wiki/WgPdwfw7PiWSd5knBiYcWE1aneM
Part3: 后端Web实战 (6天)
1. 部门管理
- 前后端联调测试


Controller接收请求参数(Query 参数)





如果要封装到复杂的类型像list集合这种,就不可以省略@requestParam


DML语句返回值是影响的记录数

Controller接收Json格式的请求参数



Controller接收路径参数


修改




日志技术
-
日志技术
-
概述
-
什么是日志?
- 日志就好比生活中的日记,可以随时随地记录你生活中的点点滴滴。
- 程序中的日志,是用来记录应用程序的运行信息、状态信息、错误信息的。
-
为什么要在程序中记录日志呢?
- 便于追踪应用程序中的数据信息、程序的执行过程。
- 便于对应用程序的性能进行优化。
- 便于应用程序出现问题之后,排查问题,解决问题。
- 便于监控系统的运行状态。
- … …
-
之前我们编写程序时,也可以通过
System.out.println(...)来输出日志,为什么我们还要学习单独的日志技术呢?
这是因为,如果通过 System.out.println(...) 来记录日志,会存在以下几点问题:
- 硬编码。所有的记录日志的代码,都是硬编码,没有办法做到灵活控制,要想不输出这个日志了,只能删除掉记录日志的代码。
- 只能输出日志到控制台。
- 不便于程序的扩展、维护。
所以,在现在的项目开发中,我们一般都会使用专业的日志框架,来解决这些问题。
-
日志框架
- JUL**:**这是JavaSE平台提供的官方日志框架,也被称为JUL。配置相对简单,但不够灵活,性能较差。
- Log4j**:**一个流行的日志框架,提供了灵活的配置选项,支持多种输出目标。
- **Logback:**基于Log4j升级而来,提供了更多的功能和配置选项,性能由于Log4j。
- Slf4j**:**(Simple Logging Facade for Java)简单日志门面,提供了一套日志操作的标准接口及抽象类,允许应用程序使用不同的底层日志框架。
-
Logback入门
1). 准备工作:引入logback的依赖(springboot中无需引入,在springboot中已经传递了此依赖)
1 | <dependency> |
2). 引入配置文件 logback.xml (资料中已经提供,拷贝进来,放在 src/main/resources 目录下; 或者直接AI生成)
1 |
|
3). 记录日志:定义日志记录对象Logger,记录日志
1 | public class LogTest { |
运行单元测试,可以在控制台中看到输出的日志,如下所示:
我们可以看到在输出的日志信息中,不仅输出了日志的信息,还包括:日志的输出时间、线程名、具体在那个类中输出的。
-
Logback配置文件
Logback日志框架的配置文件叫 logback.xml 。
该配置文件是对Logback日志框架输出的日志进行控制的,可以来配置输出的格式、位置及日志开关等。
常用的两种输出日志的位置:控制台、系统文件。
1). 如果需要输出日志到控制台。添加如下配置:
1 | <!-- 控制台输出 --> |
2). 如果需要输出日志到文件。添加如下配置:
1 | <!-- 按照每天生成日志文件 --> |
3). 日志开关配置 (开启日志(ALL),取消日志(OFF))
1 | <!-- 日志输出级别 --> |
-
Logback日志级别
日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级由低到高):
| 日志级别 | 说明 | 记录方式 |
|---|---|---|
| trace | 追踪,记录程序运行轨迹 【使用很少】 | log.trace(“…”) |
| debug | 调试,记录程序调试过程中的信息,实际应用中一般将其视为最低级别 【使用较多】 | log.debug(“…”) |
| info | 记录一般信息,描述程序运行的关键事件,如:网络连接、io操作 【使用较多】 | log.info(“…”) |
| warn | 警告信息,记录潜在有害的情况 【使用较多】 | log.warn(“…”) |
| error | 错误信息 【使用较多】 | log.error(“…”) |
可以在配置文件logback.xml中,灵活的控制输出那些类型的日志。(大于等于配置的日志级别的日志才会输出)
1 | <!-- 日志输出级别 --> |
lombok中提供的@Slf4j注解,可以简化定义日志记录器这步操作。添加了该注解,就相当于在类中定义了日志记录器,就下面这句代码:
1 | private static Logger log = LoggerFactory. getLogger(Xxx. class); |

2.员工管理
飞书云文档









09-后端Web实战(员工管理) - 飞书云文档

















全局异常处理器(@RestControllerAdvice + @ExceptionHandler)本质上就是基于 AOP 实现的,而不是拦截器(HandlerInterceptor)。
下面我来帮你理清两者的关系。
1. 拦截器 vs AOP
| 特性 | 拦截器(HandlerInterceptor) |
Spring AOP |
|---|---|---|
| 作用范围 | 专门用于 Spring MVC 的 Controller 层(请求前后) | 可作用于任意 Spring 管理的 Bean(Service、Repository、Controller 等) |
| 实现原理 | 基于 Servlet 的 HandlerExecutionChain,逐个调用拦截器链 |
基于动态代理(JDK 动态代理或 CGLib) |
| 典型用途 | 登录检查、日志记录、权限控制、请求参数预处理 | 事务管理、性能监控、缓存、异常处理等 |
2. @RestControllerAdvice 底层用的是 AOP
@RestControllerAdvice=@ControllerAdvice+@ResponseBody。@ControllerAdvice本身带有@Component,并被 Spring 识别为切面。- Spring 内部通过
ExceptionHandlerExceptionResolver这个组件来处理@ExceptionHandler注解。 - 这个解析器会为每个
@ExceptionHandler方法生成一个HandlerMethod,并在请求处理过程中(Controller 方法执行后)调用它。 - 这种“当目标方法(Controller 方法)抛出异常时,自动调用另一个方法(异常处理方法)”的行为,正是 AOP 的环绕通知(
@Around) 的一种体现。
👉 结论:它使用了 AOP 的思想,但不是传统的拦截器。
3. 为什么说“不是拦截器”?
- 拦截器:
preHandle→ Controller →postHandle→afterCompletion,可以在请求被处理的前后插入逻辑,但它本身不负责异常处理(异常会抛给容器)。 - 全局异常处理器:不参与请求链,它是通过 异常解析器 在 Controller 方法抛出异常后,匹配对应的
@ExceptionHandler方法进行统一处理。
两者处理阶段不同,所以不能说是“拦截器的思想”。



3.班级管理
4.学员管理
5.报表统计
6.登录认证
12-后端Web实战(登录认证) - 飞书云文档



负载均衡轮询情况下会出现掉登录的情况,
nginx中 对客户端 IP 地址进行哈希计算,根据哈希值将请求固定分配给某一台后端服务器,可以解决这一问题




json web token

生成jwt令牌

解析jwt令牌


jwt生成的令牌保存在本地存储中





dofilter中的第三个参数就是过滤器链,有下一个继续放行到下一个过滤器中

拦截器





Part4: 前端Web实战 (4天)
- Vue工程化
- ElementPlus
- Tlias案例
Part5: 后端Web进阶 (2天)
- AOP
- SpringBoot原理
- 自定义Starter
- Maven高级
Part6: 部署 (2天)
- Linux
- Docker






