news 2026/7/26 8:50:51

JavaEE-核心知识

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaEE-核心知识

JavaEE 核心知识点复习笔记

承接上篇 JavaSE,这篇把 JavaEE 从前端基础、数据库、JDBC、反射注解到 SSM 全家桶、SpringBoot、微服务整条线串一遍,面试复习速查专用。


一、前端基础(JavaWeb 必备)

1. 前端三件套 + jQuery

技术作用
HTML构建网页结构和内容
CSS控制网页样式和布局
JavaScript实现网页动态交互效果
jQuery封装了 JS 常用功能,简化 DOM 操作

2. Ajax 异步请求

作用:不刷新整个网页的情况下,与服务器交换数据并局部更新页面内容。

原生 Ajax 五步走

// 1. 创建核心对象 var xhr = new XMLHttpRequest(); // 2. 设置请求行(请求方式、url、是否异步) xhr.open("GET/POST", "url", true); // 3. 设置请求头(POST 才需要) xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // 4. 注册状态变化回调 xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { // 处理响应数据 console.log(xhr.responseText); } }; // 5. 发送请求 xhr.send(params);

💡readyState == 4表示请求完成,status == 200表示响应成功,两个条件都满足才处理。


二、服务器技术

1. C/S 与 B/S 架构

架构特点优点缺点
C/S需要安装专用客户端体验好、性能高、功能丰富更新维护成本高、跨平台差
B/S浏览器直接访问,免安装升级方便、跨平台、部署简单体验受限、依赖网络

2. 静态网页 vs 动态网页

  • 静态网页:内容固定,所有人看到的都一样,.html/.htm后缀,浏览器直接解析
  • 动态网页:内容根据条件动态变化(如登录后显示用户名),需要服务器端程序处理(Servlet/JSP 等)

3. Web 项目目录结构

项目根目录(WebContent / src/main/webapp) ├── HTML/CSS/JS/JSP 等可直接访问的资源 └── WEB-INF(受保护目录,浏览器不能直接访问) ├── web.xml # Web 应用配置文件 ├── classes/ # 编译后的 .class 字节码 └── lib/ # 项目依赖的 jar 包

⚠️重点WEB-INF下的资源外界访问不到,必须通过服务器内部转发才能访问,这也是安全设计。

4. Tomcat 发布项目的四种方式

  1. 直接把项目文件夹放到webapps目录下 → 自动部署
  2. war包放到webapps→ Tomcat 自动解压部署
  3. server.xml中配置<Context>指定项目路径
  4. conf/Catalina/localhost下添加 xml 配置文件

访问路径格式http://主机:端口/项目名/资源路径

5. HTTP 协议

  • 无状态协议:服务器不记录客户端状态,每次请求都是独立的
  • 解决无状态的方案:Session、Cookie、Token 等会话跟踪技术

三、数据库技术

1. SQL 四大分类

分类全称作用关键字
DDL数据定义语言定义库、表、列结构CREATEDROPALTERTRUNCATE
DML数据操作语言操作表中记录INSERTUPDATEDELETE
DQL数据查询语言查询数据SELECTFROMWHEREGROUP BYHAVINGORDER BYLIMIT
DCL数据控制语言管理权限、事务GRANTREVOKECOMMITROLLBACK

2. 常用数据类型

分类类型说明
字符串CHAR定长字符串,查询快但可能浪费空间
VARCHAR变长字符串,节省空间,最常用
TEXT大文本,存长文章内容
数值INT/BIGINT整数类型
DECIMAL定点数,精确计算,存金额必须用它
日期DATE日期 YYYY-MM-DD
DATETIME日期时间,范围大
TIMESTAMP时间戳,自动更新,范围 1970-2038
其他BLOB二进制大对象(实际开发一般存路径不存文件)

3. 单表约束

作用:限制表中数据,保证数据的正确性、有效性、完整性。

约束作用特点
主键约束 PRIMARY KEY唯一标识每行记录值唯一且不为空,一张表只能一个主键,常配合AUTO_INCREMENT自增
唯一约束 UNIQUE该列值不能重复可以为 null
非空约束 NOT NULL该列值不能为空
默认约束 DEFAULT设置默认值不赋值时用默认值
外键约束 FOREIGN KEY建立两表关联保证数据一致性

4. 多表外键约束

外键:从表中引用主表主键的列,用来建立两表关联,保证数据一致性。

-- 语法 CONSTRAINT 外键名 FOREIGN KEY (从表外键列) REFERENCES 主表(主键列)

级联操作

  • ON UPDATE CASCADE:主表主键更新时,从表外键同步更新
  • ON DELETE CASCADE:主表记录删除时,从表关联记录同步删除

⚠️级联删除慎用!一不小心可能删光整张关联表的数据,生产环境一般用逻辑删除代替。

5. 聚合函数

函数作用
COUNT(*)统计行数
COUNT(列名)统计该列非空的数量
SUM()求和
AVG()求平均值
MAX()/MIN()最大/最小值

聚合函数常配合GROUP BY分组使用,分组后筛选用HAVING

6. 多表查询

内连接

只显示两表中满足连接条件的交集数据。

-- 隐式内连接 SELECT * FROM A, B WHERE A.id = B.aid; -- 显式内连接(推荐,语义清晰) SELECT * FROM A INNER JOIN B ON A.id = B.aid;
外连接
类型效果语法
左外连接 LEFT JOIN显示左表全部 + 右表匹配的,不匹配补 nullSELECT * FROM A LEFT JOIN B ON 条件
右外连接 RIGHT JOIN显示右表全部 + 左表匹配的SELECT * FROM A RIGHT JOIN B ON 条件
子查询

查询里嵌套另一个查询,内层结果作为外层的条件或数据源。

  • 单行单列:结果是一个值 → 用= > <比较
  • 多行单列:结果是集合 → 用IN、ANY、ALL
  • 多行多列:结果是虚拟表 → 放在FROM后面继续查

四、JavaEE 核心技术

1. JDBC

Java DataBase Connectivity,Java 操作数据库的标准接口。

标准六步走
// 1. 导入驱动 jar 包(mysql-connector-java) // 2. 注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); // 3. 获取连接对象 Connection conn = DriverManager.getConnection(url, username, password); // 4. 获取执行 SQL 的对象 Statement stmt = conn.createStatement(); // 5. 执行 SQL ResultSet rs = stmt.executeQuery(sql); // 查询,返回结果集 int count = stmt.executeUpdate(sql); // 增删改,返回影响行数 // 6. 释放资源(倒着关) rs.close(); stmt.close(); conn.close();
SQL 注入问题

原理:用户输入的内容拼接到 SQL 里,恶意输入特殊字符串改变 SQL 语义,绕过验证。

经典注入:密码输入 ' or '1'='1 拼接后:WHERE password='' or '1'='1' → 条件恒成立,直接登录

解决方案:用PreparedStatement(预编译对象)代替Statement,参数用?占位,SQL 语义不会被篡改。

2. XML

可扩展标记语言,标签都是自定义的。

对比XMLHTML
标签自定义预定义
语法严格松散
用途存数据、做配置展示数据

主要用途:配置文件(老框架常用)、数据传输(现在 JSON 更主流)。

XML 约束:规定 XML 里能写什么标签、什么结构

  • DTD 约束:简单,.dtd文件
  • Schema 约束:功能强大,支持数据类型校验,.xsd文件

五、反射与注解

1. 反射机制

定义:程序在运行期间动态获取任意类的信息(成员变量、方法、构造器),并且可以操作对象的属性和方法。框架的底层核心就是反射。

正常流程反射流程
知道类名 → new 对象 → 调用方法(编译期确定)拿到 Class 对象 → 获取方法/属性 → 调用(运行期动态确定)

核心思想:把类的各个组成部分(字段、方法、构造器)封装成对象(FieldMethodConstructor),这就是反射。

💡.class字节码文件加载到内存后,JVM 会创建一个Class对象,通过它可以反推类的所有信息。

2. 代理模式

给目标对象提供一个代理对象,由代理控制对目标的访问,在不修改源码的前提下增强功能。AOP 的底层就是动态代理。

3. 注解(Annotation)

Java 5 引入的代码级元数据,可以标在类、方法、字段上,用来做配置说明。现在框架基本都用注解替代 XML 配置了。

自定义注解
public @interface 注解名 { // 属性列表 String value() default ""; }
元注解(修饰注解的注解)
元注解作用
@Target注解能作用的位置(TYPE 类、METHOD 方法、FIELD 字段等)
@Retention保留阶段(SOURCE 源码 / CLASS 字节码 /RUNTIME 运行时)反射读取必须 RUNTIME
@Documented是否生成到文档
@Inherited是否被子类继承

💡 小技巧:只有一个value属性时,赋值可以省略value=,直接写值。


六、主流框架

1. MyBatis

半 ORM 持久层框架,支持定制化 SQL、存储过程和高级映射,帮你省去几乎所有 JDBC 样板代码和手动参数封装。

延迟加载(懒加载)

用到关联数据时才去查,不用不查,提升性能。

  • 配置:lazyLoadingEnabled=trueaggressiveLazyLoading=false
  • 只能在嵌套查询(select属性)方式下使用
缓存策略
缓存级别范围特点
一级缓存SqlSession 级别同一个 SqlSession 内相同查询缓存,默认开启
二级缓存SqlSessionFactory 级别跨 SqlSession 共享,需要手动开启(<cache>标签)

⚠️ 执行增删改、commitcloseclearCache都会清空缓存。而且缓存存的是对象引用,修改对象会影响缓存数据。

2. Spring 框架

核心概述
  • 两大核心:IOC(控制反转)、AOP(面向切面编程)
  • 一站式框架:表现层 SpringMVC、持久层 JdbcTemplate、业务层事务管理,各层都有解决方案
  • 优点:低耦合、可扩展、声明式事务、方便集成各种框架
IOC(控制反转)

底层原理:XML 配置 + 工厂模式 + 反射

BeanFactory vs ApplicationContext

  • BeanFactory:顶层接口,懒加载,getBean时才创建对象
  • ApplicationContext:子接口,功能更多,启动时就创建所有单例 Bean(开发常用)

Bean 作用域

  • singleton单例(默认)
  • prototype多例
  • request/session/application(Web 环境)
IOC 常用注解
分类注解作用
创建对象@Component/@Controller/@Service/@Repository四个功能一样,只是语义分层(表现层/业务层/持久层)
注入数据@Autowired按类型自动注入(Spring 自带)
@Qualifier配合 @Autowired,按名称注入
@Resource先按名称再按类型(JavaEE 注解)
@Value注入基本类型/String,支持${}读配置
作用域@Scopesingleton / prototype
生命周期@PostConstruct初始化 /@PreDestroy销毁

纯注解开发@Configuration配置类、@ComponentScan包扫描、@Bean@PropertySource@Import

AOP(面向切面编程)

定义:通过预编译和运行期动态代理,在不修改源码的情况下给程序添加额外功能。典型应用:日志、事务、权限校验。

3. SpringMVC

MVC 模式:Model(模型数据)+ View(视图)+ Controller(控制器)分离。

前端控制器模式DispatcherServlet统一接收所有请求,再分发到具体的处理器。

请求参数绑定
注解作用
@RequestParam指定参数名、是否必填、默认值
@PathVariableRESTful 风格路径变量绑定
@RequestBody接收 JSON 请求体,自动转对象
@RequestHeader获取请求头
@CookieValue获取 Cookie 值
常用注解速查
注解作用
@Controller标记控制器类
@RequestMapping请求路径映射,类+方法组合使用
@GetMapping/@PostMapping/@PutMapping/@DeleteMappingREST 风格快捷注解
@ResponseBody返回值直接作为响应体,不走视图,返回 JSON 常用
@RestController@Controller + @ResponseBody组合,整个类都返回 JSON
@ControllerAdvice全局异常处理、全局数据绑定
@ExceptionHandler异常处理方法
RESTful 风格
  • URL 定位资源,HTTP 动词描述操作
  • GET查询、POST新增、PUT修改、DELETE删除
  • 路径传参:/user/100,用@PathVariable获取
  • 前后端分离:后端只返回 JSON,前端负责渲染
文件上传
  • 表单enctype="multipart/form-data"method="post"
  • 配置CommonsMultipartResolver(id 必须是multipartResolver
  • Controller 用MultipartFile接收,transferTo()保存到磁盘

4. SpringBoot

核心特点

  • 起步依赖(starter)→ 不用自己凑 jar 包
  • 自动配置 → 很多配置默认就给你配好了
  • 内嵌容器 → 直接打 jar 包运行,不用装 Tomcat
  • 无需 XML → 零配置开发
  • Actuator → 应用监控

一句话总结:SpringBoot 不是新框架,是快速开发 Spring 的脚手架,约定大于配置。

5. MyBatis-Plus(MP)

MyBatis 的增强工具,单表 CRUD 零 SQL,开发效率拉满。

核心特性

  • 内置通用BaseMapper和通用 Service,单表不用写 SQL
  • 条件构造器QueryWrapperUpdateWrapper,链式拼接条件
  • 分页插件、主键策略、逻辑删除、自动填充、乐观锁、代码生成器
  • 支持 Lambda 写法,字段名用方法引用,防止写错

常用注解@TableName@TableId@TableField@TableLogic

6. Redis

高性能键值对内存数据库,也叫数据结构服务器。

特点

  • 内存存储,读写速度极快(缓存首选)
  • 支持丰富数据类型:String、Hash、List、Set、SortedSet(ZSet)
  • 持久化:RDB 快照 + AOF 日志,防止宕机丢数据
  • 单线程 + 多路 IO 复用模型

典型应用场景:缓存热点数据、会话存储、分布式锁、排行榜、计数器、消息队列、限流

7. Spring Cloud 微服务

一句话:把单体应用拆成多个独立微服务,Spring Cloud 提供整套分布式解决方案。

Spring Cloud Alibaba 核心组件
组件作用替代/补充
Nacos注册中心 + 配置中心二合一替代 Eureka + Config
Sentinel流量控制、熔断降级替代 Hystrix
Dubbo高性能 RPC 远程调用比 Feign 性能更强
Seata分布式事务解决方案解决跨服务数据一致性
Gateway微服务网关路由转发、鉴权、限流
微服务核心能力速览
  1. 服务注册发现(Nacos):所有服务启动时注册进去,调用方动态查地址
  2. 服务调用 & 负载均衡(OpenFeign + LoadBalancer):微服务之间像调本地方法一样互相调用,自动负载均衡
  3. 配置中心(Nacos Config):配置集中管理,动态刷新不用重启
  4. 熔断降级(Sentinel):防止某个服务故障引发连锁雪崩,超时快速返回兜底结果
  5. 网关(Gateway):统一入口,路由转发、鉴权、限流、跨域
  6. 链路追踪(Sleuth + SkyWalking):追踪整条请求链路,定位慢请求和异常

总结:JavaEE 这条线,从 Web 基础 → 数据库 → JDBC → 反射注解 → SSM → SpringBoot → 微服务,是层层递进的。面试重点抓 MyBatis 缓存、Spring IOC/AOP、SpringMVC 流程、Redis 数据结构和应用场景、微服务各组件作用这几块,基本能覆盖大部分问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/26 8:50:44

【关注可白嫖源码】--课程设计--毕业设计--springboot咖啡销售系统[编号:project71706](案件分析)

本文仅展示核心实现逻辑与部分代码片段&#xff0c;完整项目源码、配套文档、数据库脚本内容较多&#xff0c;篇幅有限无法全部放出。 有需要完整资源的同学&#xff0c;可以在评论区留言【资料或领源码】&#xff0c;我会一 一回复站内私信&#xff0c;发送完整文件 摘 要 咖啡…

作者头像 李华
网站建设 2026/7/26 8:44:13

TI 16xx/18xx芯片内存映射与EDMA控制器:释放异构系统数据搬运性能

1. 项目概述与核心价值在雷达信号处理、高端工业控制或者复杂通信基带这类对实时性要求极高的嵌入式系统中&#xff0c;我们常常会面临一个核心矛盾&#xff1a;一方面&#xff0c;CPU&#xff08;无论是DSP还是ARM核&#xff09;需要全力执行复杂的算法和控制逻辑&#xff1b;…

作者头像 李华
网站建设 2026/7/26 8:43:39

AI辅助学术写作:从青铜到王者的论文改造术

1. 项目概述&#xff1a;当学术写作遇上AI辅助 去年帮导师审阅本科课程论文时&#xff0c;我发现一个有趣现象&#xff1a;那些得分在75-85分区间的"青铜级"论文&#xff0c;往往不是缺乏学术价值&#xff0c;而是败在表达规范、文献整合和逻辑呈现上。这让我开始思考…

作者头像 李华
网站建设 2026/7/26 8:43:32

文本到图像扩散模型:技术演进、挑战与优化实践

1. 文本到图像扩散模型的技术演进与核心挑战过去三年里&#xff0c;我亲眼见证了文本到图像生成技术从实验室走向大众的爆发式发展。记得2021年第一次接触DALLE时&#xff0c;生成一张512x512的图片需要近10分钟&#xff0c;而今天通过Stable Diffusion只需几秒钟。这种进步背后…

作者头像 李华
网站建设 2026/7/26 8:39:59

AutoMV多智能体音乐视频生成系统技术解析

1. AutoMV&#xff1a;多智能体音乐视频生成系统解析作为一名长期关注AIGC领域的从业者&#xff0c;我最近深入研究了AutoMV这个创新的音乐视频自动生成系统。这个由多伦多大学和Vector Institute联合开发的开源项目&#xff0c;正在重新定义音乐视频创作的方式。不同于市面上常…

作者头像 李华