一、前端技术
(一)HTML
- 基础概念:超文本标记语言,用于构建网页的结构,由标签、属性和内容组成。
-
常用标签:
- 结构标签:
<html>、<head>、<body>。 - 标题标签:
<h1>~<h6>。 - 文本标签:
<p>(段落)、<span>(行内)、<div>(块级)。 - 列表标签:
<ul>(无序列表)、<ol>(有序列表)、<li>。 - 链接标签:
<a href="url" target="_blank">。 - 图片标签:
<img src="path" alt="描述">。 - 表单标签:
<form action="url" method="get/post">,内含<input>、<select>、<textarea>等控件。
- 结构标签:
(二)CSS
- 基础概念:层叠样式表,用于控制网页的样式(布局、颜色、字体等)。
-
引入方式:
- 内联样式:
style属性,如<div style="color: red;">。 - 内部样式:
<style>标签,位于<head>内。 - 外部样式:
link标签引入.css文件,如<link rel="stylesheet" href="style.css">。
- 内联样式:
-
选择器:元素选择器(如
p)、类选择器(如.class)、ID 选择器(如#id)、后代选择器(如div p)等。 -
盒模型:由
content、padding、border、margin组成,用于控制元素的布局。
(三)JavaScript
- 基础概念:脚本语言,用于实现网页的交互逻辑,可在浏览器端运行。
-
变量与数据类型:
- 变量:用
var、let、const声明,let和const是 ES6 新增,const声明常量。 - 数据类型:基本类型(
number、string、boolean、null、undefined、symbol)和引用类型(object、array、function等)。
- 变量:用
- 运算符:算术、赋值、比较、逻辑、三元运算符等。
-
流程控制:
if-else、switch、for、while、do-while。 -
函数:声明式(
function fn() {})、表达式(let fn = function() {})、箭头函数(() => {})。 -
对象与数组:
- 对象:键值对集合,如
let obj = {name: "xxx", age: 18}。 - 数组:有序元素集合,如
let arr = [1, 2, 3],提供push、pop、shift、unshift等方法。
- 对象:键值对集合,如
-
DOM 操作:用于操作网页元素,如
document.getElementById()、element.innerHTML、element.style等。 -
事件处理:如
onclick、onmouseover,可通过addEventListener绑定事件。
(四)jQuery
-
基础概念:JavaScript 库,简化 DOM 操作、事件处理、动画等功能,通过
$符号调用。 -
选择器:与 CSS 选择器类似,如
$("p")选择所有<p>标签,$(".class")选择类为class的元素。 -
DOM 操作:
html()、text()、val()获取 / 设置内容;attr()、prop()操作属性;append()、prepend()、remove()操作元素。 -
事件处理:
click()、hover()、on()等方法绑定事件。 -
动画效果:
show()、hide()、fadeIn()、fadeOut()、slideUp()、slideDown()等。
(五)AJAX
-
初始 AJAX:
- AJAX 介绍:异步 JavaScript 和 XML,用于在不刷新页面的情况下与服务器交换数据。
-
AJAX 工作原理:通过
XMLHttpRequest对象(XHR)与服务器通信,实现异步请求。
-
AJAX 使用:
- 环境准备:浏览器支持 XHR 对象。
-
创建 AJAX 请求:
let xhr = new XMLHttpRequest(); xhr.open("GET", "url", true); xhr.send(); xhr.onreadystatechange = function() { if(xhr.readyState === 4 && xhr.status === 200) { console.log(xhr.responseText); } } -
AJAX 参数说明:
open(method, url, async),method为请求方式(GET/POST 等),url为请求地址,async为是否异步。
- AJAX 练习:可实现用户名唯一性校验、实时搜索等功能。
(六)JSON
-
初始 JSON:
- JSON 介绍:轻量级数据交换格式,独立于语言,易于阅读和编写。
-
JSON 格式:键值对形式,键为字符串,值可以是字符串、数字、对象、数组、布尔、
null,如{"name": "xxx", "age": 18, "hobbies": ["reading", "music"]}。
-
FastJSON:
-
Java 对象转 JSON 字符串 / JSON 对象:通过 FastJSON 的
JSON.toJSONString(obj)将 Java 对象转为 JSON 字符串,JSON.parseObject(jsonStr, Class)将 JSON 字符串转为 Java 对象。 - JSON 字符串 / JSON 对象转 Java 对象:同上,利用 FastJSON 的解析方法实现。
-
Java 对象转 JSON 字符串 / JSON 对象:通过 FastJSON 的
-
JS 操作 JSON 对象:
JSON.parse(jsonStr)将 JSON 字符串转为 JS 对象,JSON.stringify(obj)将 JS 对象转为 JSON 字符串。
二、服务器技术
(一)Java Web 关联
- C/S 结构:客户端 / 服务器结构,客户端需安装专用软件(如 QQ),优点是交互性强、响应快,缺点是维护成本高。
- B/S 结构:浏览器 / 服务器结构,通过浏览器访问,优点是维护方便、跨平台,缺点是交互性和响应速度稍弱。
-
静态网页和动态网页:
- 静态网页:内容固定,如纯 HTML 页面,服务器直接返回文件。
- 动态网页:内容由服务器动态生成,如 JSP 页面,包含程序逻辑。
- 常见 Web 服务器:Tomcat、Jetty、Apache、Nginx 等。
(二)Tomcat 服务器
-
tomcat 的安装及认识:
- tomcat 概述:开源的轻量级 Web 服务器,支持 Servlet 和 JSP,是 Java Web 开发的常用服务器。
- tomcat 的作用:提供 Web 应用的运行环境,处理 HTTP 请求,管理 Servlet 生命周期。
- tomcat 安装:下载安装包,解压后即可使用(绿色版)。
-
tomcat 测试:启动
bin/startup.bat(Windows)或startup.sh(Linux),浏览器访问http://localhost:8080,看到 Tomcat 首页即成功。
-
tomcat 分析:
-
tomcat 目录结构:
-
bin:存放启动、关闭脚本。 -
conf:存放配置文件(如server.xml、web.xml)。 -
lib:存放 Tomcat 依赖的 jar 包。 -
webapps:部署 Web 应用的目录。 -
logs:日志文件。 -
temp:临时文件。
-
-
tomcat 配置文件:
server.xml配置端口、主机等;web.xml配置全局 Web 应用参数。 - tomcat 结构重点总结:由连接器(Connector)和容器(Engine、Host、Context)组成,处理请求的流程为:Connector 接收请求→Engine 处理→Host 匹配虚拟主机→Context 匹配 Web 应用→Servlet 处理。
-
tomcat 目录结构:
(三)WEB 项目
-
WEB 项目部署后目录结构:符合 Java Web 规范,包含
WEB-INF目录(内有classes(编译后的 class 文件)、lib(依赖 jar 包)、web.xml(部署描述符))。 -
Tomcat 发布项目:将 Web 应用的 war 包或解压后的目录放到
webapps目录下,Tomcat 会自动部署。
(四)IDEA 整合 Tomcat
- IDEA 创建 Java web 项目:通过 IDEA 的项目向导,选择 Java Web 模板创建。
- IDEA 部署 Java web 项目:在 IDEA 中配置 Tomcat 服务器,指定 Web 应用的部署位置和上下文路径,然后启动调试。
(五)HTTP 协议
- HTTP 协议概念:超文本传输协议,用于浏览器和服务器之间的通信,基于 TCP/IP 协议。
- 无状态协议:服务器不保存客户端的状态,每次请求都是独立的,可通过 Cookie、Session 解决状态保持问题。
-
请求协议:包含请求行(方法、URL、HTTP 版本)、请求头(如
User-Agent、Cookie)、请求体(POST 请求的参数)。 -
响应协议:包含状态行(HTTP 版本、状态码、状态描述)、响应头(如
Content-Type、Set-Cookie)、响应体(返回的内容)。
三、数据库技术
(一)数据库简介
- 什么是数据库?:用于存储、管理数据的仓库,实现数据的持久化。
- 数据库的作用:组织、存储、检索、维护数据,保证数据的一致性、安全性。
- 关系型的数据库:基于关系模型(二维表),如 MySQL、Oracle、SQL Server。
- 常见的数据库:MySQL(开源免费)、Oracle(企业级,收费)、SQL Server(微软,适合.***)、PostgreSQL(开源,功能强大)。
(二)SQL 数据库语言
- SQL 语言介绍:结构化查询语言,用于操作关系型数据库的标准语言。
-
SQL 分类:
-
DDL(数据定义语言):创建、修改、删除数据库对象(库、表、列等),如
CREATE、ALTER、DROP。 -
DML(数据操作语言):增删改数据,如
INSERT、UPDATE、DELETE。 -
DQL(数据查询语言):查询数据,如
SELECT。 -
DCL(数据控制语言):管理权限,如
GRANT、REVOKE。
-
DDL(数据定义语言):创建、修改、删除数据库对象(库、表、列等),如
(三)MySQL 数据库
- MySql 数据库概念:开源的关系型数据库,体积小、速度快、易用,适合中小项目。
-
MySQL 数据库的安装卸载:
- MySQL 安装:下载安装包,按向导安装,设置 root 密码等。
- MySQL 卸载:卸载程序并删除残留文件、注册表。
-
进行测试:通过
mysql -u root -p命令登录,执行 SQL 语句测试。
-
数据库的操作 (CURD):
- 创建数据库:
CREATE DATABASE db_name; - 查看数据库:
SHOW DATABASES;、SHOW CREATE DATABASE db_name; - 修改数据库:
ALTER DATABASE db_name CHARACTER SET utf8; - 删除数据库:
DROP DATABASE db_name;
- 创建数据库:
-
数据库的数据类型:
- 字符串型:
CHAR(固定长度)、VARCHAR(可变长度)、TEXT(大文本)。 - 大数据类型:
BLOB(二进制大对象)。 - 数值型:
INT、BIGINT、FLOAT、DOUBLE、DECIMAL(高精度小数)。 - 逻辑型:
BOOLEAN(或TINYINT(1))。 - 日期类型:
DATE(日期)、TIME(时间)、DATETIME(日期时间)、TIMESTAMP(时间戳)。
- 字符串型:
-
单表的约束:
- 约束的作用好处:保证数据的完整性、一致性。
- 主键约束:
PRIMARY KEY,唯一标识记录,非空且唯一。 - 唯一约束:
UNIQUE,字段值唯一。 - 非空约束:
NOT NULL,字段值不能为空。
-
多表外键约束:
FOREIGN KEY (col) REFERENCES parent_table(parent_col),建立表之间的关联,保证参照完整性。 -
表结构操作 (CURD):
- 创建表:
CREATE TABLE table_name (col1 type constraint, col2 type constraint, ...); - 删除和查看表:
DROP TABLE table_name;、SHOW TABLES;、DESC table_name; - 修改表:
ALTER TABLE table_name ADD col type;(添加列)、ALTER TABLE table_name MODIFY col new_type;(修改列类型)、ALTER TABLE table_name DROP col;(删除列)等。
- 创建表:
(四)数据的操作 (CURD)
- 插入数据(insert):
INSERT INTO table_name (col1, col2) VALUES (val1, val2), (val3, val4); - 修改数据(update):
UPDATE table_name SET col1 = val1, col2 = val2 WHERE condition; - 删除数据(delete):
DELETE FROM table_name WHERE condition; - 查询数据(select):
- 基本查询:
SELECT col1, col2 FROM table_name;、SELECT * FROM table_name; - 查询语句中使用运算和别名:
SELECT col1 + col2 AS sum_col FROM table_name; - 条件查询:
SELECT * FROM table_name WHERE col > 10 AND col < 20;(使用AND、OR、NOT、IN、LIKE等) - 排序:
SELECT * FROM table_name ORDER BY col ASC/DESC; - 分组:
SELECT col, COUNT(*) FROM table_name GROUP BY col HAVING COUNT(*) > 1;(HAVING对分组后的数据过滤)
- 基本查询:
(五)聚合函数
- 集合函数概念:对一组数据进行计算并返回单个结果的函数。
-
常见聚合函数:
-
count(col):统计列的非空行数,count(*)统计所有行数。 -
sum(col):计算列的和(仅数值型)。 -
avg(col):计算列的平均值(仅数值型)。 -
max(col):获取列的最大值。 -
min(col):获取列的最小值。
-
-
聚合函数的使用:结合
SELECT和GROUP BY使用,如SELECT dept_id, AVG(salary) FROM emp GROUP BY dept_id;
(六)多表查询
-
内连接:
SELECT * FROM table1 INNER JOIN table2 ON table1.col = table2.col;,只返回匹配的记录。 -
外连接:
- 左外连接:
SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.col = table2.col;,返回左表所有记录,右表匹配的显示,否则为NULL。 - 右外连接:
SELECT * FROM table1 RIGHT OUTER JOIN table2 ON table1.col = table2.col;,类似左外连接,以右表为主。
- 左外连接:
-
子查询:查询语句中嵌套另一个查询,如
SELECT * FROM emp WHERE dept_id IN (SELECT dept_id FROM dept WHERE dept_name = 'IT');
(七)表设计
-
一对多:如部门和员工,一个部门有多个员工,员工表设
dept_id外键关联部门表主键。 - 多对多:如学生和课程,一个学生选多门课程,一门课程被多个学生选,需中间表(学生课程表),含两个外键分别关联学生表和课程表主键。
- 一对一:如用户和用户详情,可在其中一张表设外键关联另一张表主键,且外键唯一。
- 多对一:与一对多本质相同,从多方看是多对一。
(八)JDBC
-
JDBC 入门:
- JDBC 的概述:Java 数据库连接,是 Java 操作关系型数据库的标准 API,提供统一的接口操作不同数据库。
- JDBC 的快速入门:加载驱动→建立连接→创建 Statement→执行 SQL→处理结果→关闭资源。
-
JDBC 相关的接口和 API:
-
DriverManager类(驱动):getConnection(url, user, password)获取数据库连接。 -
Connection接口(链接):创建 Statement、管理事务。 -
Statement接口(能执行 SQL 语句):executeQuery(sql)执行查询,返回ResultSet;executeUpdate(sql)执行增删改,返回影响行数。 -
PreparedStatement接口:继承自Statement,支持预编译 SQL,防止 SQL 注入,性能更好。 -
ResultSet接口(代表结果集):next()移动游标,getXXX(col)获取列值。 -
释放资源:使用后依次关闭
ResultSet、Statement、Connection,避免资源泄漏。 -
JDBC 增删改查:通过
PreparedStatement执行INSERT、UPDATE、DELETE、SELECT操作。 - JDBC 工具类的编写:封装数据库连接和关闭资源的方法,便于复用。
-
面试题:SQL 注入漏洞问题:通过在 SQL 语句中注入恶意代码攻击数据库,使用
PreparedStatement预编译 SQL 可有效防止。
-
(九)XML
- XML 概述:可扩展标记语言,用于存储和传输数据,具有自我描述性。
-
XML 文档组成部分:声明(
<?xml version="1.0" encoding="UTF-8"?>)、元素(标签)、属性、文本、注释等。 - XML 文档声明:指定 XML 版本和编码,如上述声明。
-
XML 元素:由开始标签、结束标签和内容组成,需正确嵌套,如
<user><name>xxx</name></user>。 - XML 约束:规定 XML 文档的结构,常用的有 DTD 和 Schema。
- Schema:比 DTD 更强大,支持数据类型、命名空间,是 XML Schema Definition 的缩写,用于严格约束 XML 结构。
四、Java 中的反射和注解开发
(一)反射
- 反射的概念:在运行时动态获取类的信息(属性、方法、构造器等),并操作类的成员的机制。
-
Class 类:
-
Class 类中的方法:
forName(String className)获取类对象;newInstance()创建类的实例;getFields()获取公共属性;getMethods()获取公共方法等。 -
Method 反射调用自身:通过
Method的invoke(Object obj, Object... args)方法调用方法,如:Class<?> clazz = Class.forName("***.xxx.User"); Method method = clazz.getMethod("sayHello"); Object obj = clazz.newInstance(); method.invoke(obj);
-
Class 类中的方法:
-
Field 类:
-
Field 类中的方法:
get(Object obj)获取对象的属性值;set(Object obj, Object value)设置对象的属性值;setA***essible(true)打破访问权限修饰符的限制(如访问私有属性)。
-
Field 类中的方法:
-
Constructor 类:
-
Constructor 类中的方法:
newInstance(Object... args)创建类的实例,可指定构造器参数。
-
Constructor 类中的方法:
- 练习:通过反射来拷贝对象:获取源对象的所有属性,遍历并设置到目标对象中。
-
反射方式访问私有方法:获取
Method时设置setA***essible(true),再通过invoke调用。 -
反射方式访问私有属性:获取
Field时设置setA***essible(true),再通过get/set操作。 -
代理模式:
- 静态代理:在编译时确定代理类,代理类和目标类实现同一接口,代理类持有目标类对象,增强目标方法。
-
动态代理:在运行时生成代理类,基于
InvocationHandler接口,如 JDK 动态代理(基于接口)和 CGLIB 动态代理(基于类)。
(二)注解
- 注解的介绍:一种元数据,用于修饰类、方法、属性等,提供额外信息,可在编译、运行时被解析。
-
常见的标识性注解:
-
@Override:标识方法重写。 -
@Deprecated:标识方法已过时。 -
@SuppressWarnings:抑制编译器警告。
-
-
自定义注解:通过
@interface定义,可指定元注解(如@Target指定作用范围,@Retention指定保留策略),如:@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { String value() default "default"; }
五、主流框架
(一)MyBatis 框架
- MyBatis 框架的概述:持久层框架,简化 JDBC 操作,通过 XML 或注解配置 SQL 映射,将 SQL 执行结果映射为 Java 对象。
-
MyBatis 的入门程序:配置核心配置文件(
mybatis-config.xml)、编写映射文件(Mapper.xml)、通过SqlSessionFactory获取SqlSession执行 SQL。 -
映射配置文件详解:包含
<select>、<insert>、<update>、<delete>等标签,配置 SQL 语句、参数类型、结果类型等。 -
MyBatis 连接池:内置连接池(如
POOLED),也可集成第三方连接池(如 Druid、C3P0)。 -
MyBatis 事务操作:支持编程式事务和声明式事务,默认开启事务(自动提交为
false)。 -
MyBatis 多表操作:通过
association(一对一)、collection(一对多)实现关联查询结果映射。 - MyBatis 延迟加载策略:在需要时才加载关联对象,减少不必要的数据库查询。
- MyBatis 缓存策略:一级缓存(SqlSession 级,默认开启)和二级缓存(Mapper 级,需手动开启)。
-
MyBatis 注解开发:通过
@Select、@Insert、@Update、@Delete等注解在接口中编写 SQL,简化配置。
(二)Spring 框架
- Spring 概述:轻量级企业级框架,核心是 IOC 和 AOP,用于简化 Java 开发。
- IOC 详解:控制反转,将对象的创建、依赖注入交给 Spring 容器管理,降低耦合。
- DI 依赖注入:依赖注入,是 IOC 的具体实现,通过构造器、setter 方法、注解等方式注入依赖对象。
-
IOC 程序入门:配置 Spring 配置文件(
applicationContext.xml),定义 Bean,通过ApplicationContext获取 Bean。 -
IOC 注解实战:使用
@***ponent、@Service、@Repository、@Controller标识 Bean,@Autowired、@Qualifier、@Resource注入依赖。 - AOP 技术:面向切面编程,在不修改原有代码的情况下,对方法进行增强(如日志、事务、权限)。基于代理模式,通过切点(Pointcut)、通知(Advice)、切面(Aspect)实现。
- Spring 声明式事务管理:通过 AOP 实现事务的声明式配置,指定事务的传播行为、隔离级别等。
(三)SpringMVC 框架
- SpringMVC 概述:Spring 的 MVC 模块,用于开发 Web 应用,实现模型(Model)、视图(View)、控制器(Controller)的分离。
-
SpringMVC 配置文件详解:配置前端控制器(
DispatcherServlet)、处理器映射器、处理器适配器、视图解析器等。 -
SpringMVC 请求参数绑定:支持基本类型、对象、集合、数组等参数的绑定,可通过
@RequestParam、@PathVariable、@RequestBody等注解定制绑定。 -
SpringMVC 常见注解:
@Controller、@RequestMapping、@RequestParam、@ResponseBody、@RestController等。 -
Restful 风格编程:通过 URL 的不同请求方式(GET、POST、PUT、DELETE)实现资源的 CRUD 操作,使用
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping注解。 -
文件上传:配置
***monsMultipartResolver,通过MultipartFile接收上传的文件。 - SSM 框架整合:整合 Spring、SpringMVC、MyBatis,实现三层架构(表现层、业务层、持久层)的协同工作。
(四)SpringBoot 框架
- SpringBoot 概述:简化 Spring 应用开发的框架,约定大于配置,内置 Tomcat,提供 starters 依赖,快速构建独立的 Java 应用。
-
SpringBoot 项目中对象的特性:自动配置(AutoConfiguration)、 starters 依赖(如
spring-boot-starter-web)、 actuator(监控)等。 - SpringBoot 项目:通过 Spring Initializr 创建,目录结构遵循 Maven/Gradle 规范。
-
SpringBoot 项目启动流程:加载主配置类(
@SpringBootApplication),扫描组件,自动配置等。 -
SpringBoot 整合 Mybatis 框架:引入
mybatis-spring-boot-starter,配置数据源和 MyBatis 参数,编写 Mapper 接口和映射文件。 - SpringBoot 中的 SpringMVC:自动配置 SpringMVC 相关组件(如 DispatcherServlet、视图解析器等),可通过配置文件自定义。
-
SpringBoot 异常处理机制:使用
@ControllerAdvice和@ExceptionHandler全局处理异常,或自定义异常类。 -
SpringBoot 项目配置日志输出到文件:在
application.yml或application.properties中配置日志的级别、输出格式、文件路径等。