目录
什么是JavaWeb?
Web
JavaWeb
JavaWeb技术栈
JDBC简介
概念
本质
快速入门
步骤
API详解
DriverManager
Connection
Statement
ResultSet
PreparedStatement
数据库连接池
简介
数据库连接池实现
标准接口: DataSource
常见的数据库连接池:
练习
Maven简介
模型
安装配置
Maven基本使用
常用命令
生命周期
IDEA配置Maven
依赖管理
依赖范围
MyBatis
持久层
框架
JDBC缺点
硬编码
操作繁琐
快速入门
Mapper代理开发
MyBatis核心配置文件
配置文件完成增删改查
多条件查询
添加
主键返回
修改
删除
删除多个
注解完成增删改查
动态SQL
if
choose
HTTP
概念
HTTP协议特点
HTTP请求数据格式
三部分
HTTP响应数据格式
三部分
web服务器
Tomcat
简介
基本使用:安装,卸载,启动,关闭,配置,部署项目
idea中创建Maven Web
idea中使用Tomcat
Servlet
快速入门
Servlet执行流程
Servlet生命周期
方法介绍
Servlet体系结构
XML配置方式编写servlet
Request(请求)
Request继承体系
Request获取请求数据
Request请求转发
Response(响应)
设置响应数据功能介绍
完成重定向
响应字符数据
响应字节数据
JSP
概念
快速入门
原理
脚本
缺点
EL表达式
主要功能
语法
JSTL标签
MVC模式和三层结构
MVC
三层架构
案例
会话跟踪
会话
会话跟踪
Cookie
基本使用
原理
使用细节
Session
基本使用
原理
使用细节
Filter
概念
快速入门
执行流程
使用细节
Filter拦截路径配置
过滤器链
Listener
Listener的使用
AJAX
什么是 AJAX?
AJAX的作用
快速入门
Axios异步框架
JSON
什么是 JSON?
JSON 格式化后为 JavaScript 对象
JSON 语法规则
JSON 数据 - 一个名称对应一个值
JSON 对象
JSON 数组
javascript:void(0) 含义
JSON数据和Java对象转换
JavaBean
概述
什么是JavaWeb?
Web
即全球广域网,也称万维网。
JavaWeb
是用Java计数来解决web互联网领域的技术栈
JavaWeb技术栈
-
B/S架构:Brower/Server,浏览器/服务器架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端,浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可。
好处:易于维护升级:服务器端升级后,客户端无需任何部署就可以使用新的版本呢
-
静态资源:HTML、CSS、Javascript、图片等。负责页面展现。
-
动态资源:Servlet、jsp等。负责逻辑处理
-
数据库:负责存储数据。
-
HTTP协议:定义通信规则
-
Web服务器:负责解析HTTP协议,解析请求数据,并发送响应数据。
JDBC简介
概念
JDBC就是使用Java语言操作关系型数据库的一套API
全称 Java Data Base Connectivity Java数据库连接
本质
定义的一套操作所有关系数据库的规则,即接口
快速入门
步骤
API详解
DriverManager
驱动管理类 作用:
- 注册驱动
- 获取数据库连接
Class.forName("com.mysql.jdbc.Driver");
Connection
数据库连接对象
作用:
- 获取执行SQL的对象
- 管理事务
Statement createStatement();
PreparedStatement prepareStatement(sql);
CallableStatement prepareCall(sql);
Statement
作用:执行sql语句
executeUpdate(sql); //执行DML、DDL语句 返回int类型
//返回值:(1)DML语句影响的行数 (2)DDL语句执行后,执行成功也可能返回0
executeQuery(sql); //执行DQL语句 返回ResultSet类型
//返回值:(1)ResultSet jie'guo'ji
执行DDL语句的返回值可能是0
ResultSet
结果集对象:封装了DDL查询语句的结果
stmt.executeQuery(sql); //执行DQL语句,返回ResultSet对象
使用步骤:
- 游标向下移动一行,并判断改行是否有数据:next()
- 获取数据:getXxx(参数)
//循环判断游标是否是最后一行末尾
while(rs.next()){
rs.getXxx(参数);
}
- 定义一个实体类Account
- 查询数据,封装到Account对象中
- 讲数据存入ArrayList集合中
!!!
PreparedStatement
作用:
- 预编译SQL语句并执行:预防SQL注入问题
SQL注入:通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。
原理:
好处:
- 预编译SQL,性能更高。
- 防止SQL注入,将敏感字符进行转义。
数据库连接池
简介
数据库连接池是一个容器,负责分配,管理数据库连接(connection)。
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
好处
- 资源重用
- 提升系统响应时间
- 避免数据库连接遗漏。
数据库连接池实现
标准接口: DataSource
官方提供的数据库连接池标准接口,由第三方组织实现此接口。
Connection getConnection();
常见的数据库连接池:
- DBCP
- C3P0
- Druid:(德鲁伊) 阿里巴巴开源的数据库连接池项目,功能强大,性能优秀,是Java语言最好的数据库连接池之一
练习
准备环境
-
-
查询
-
添加
-
修改
-
删除
Maven简介
Maven是专门用于 管理和构建Java项目的工具,它的主要功能有:
- 提供了一套标准化的项目结构
- 提供了一套标准化的构建流程(编译,测试,打包,发布……)
- 提供了一套依赖管理机制
- Maven提供了一套标准化的项目结构,所有的IDE使用Maven构建的项目结果完全一样,所有IDE创建的Maven项目可以通用
2.
Apache Maven是一个项目管理和构建工具,他是基于项目对象模型(POM)的概念,通过一下段描述信息来管理项目的构建、报告、文档。
模型
安装配置
Maven基本使用
常用命令
- compile:编译
- clean:清理
- test:测试
- package:打包
- install:安装
生命周期
IDEA配置Maven
-
配置Maven环境
-
Maven坐标详解
-
创建Maven项目
-
导入Maven项目
依赖管理
依赖范围
MyBatis
- 是一款优秀的持久层框架,用于简化JDBC开发
- 是Apache的一个开源项目
持久层
负责将数据保存到数据库的那一层代码
JavaEE三层构架:表现层、业务层、持久层
框架
JDBC缺点
硬编码
操作繁琐
MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作
快速入门
Mapper代理开发
MyBatis核心配置文件
配置文件完成增删改查
多条件查询
添加
主键返回
两个属性
<insert useGenerateKeys="true" keyProperty="id">
修改
删除
删除多个
注解完成增删改查
动态SQL
if
choose
HTTP
概念
超文本传输协议,规定了浏览器和服务器之间的数据传输规则。
HTTP协议特点
- 基于TCP协议:面向连接,安全
- 基于请求-响应模型的:一次请求对应一次响应
- HTTP协议是无状态的协议:对于事务处理没有记忆。每次请求响应都是独立的。
HTTP请求数据格式
三部分
- 请求行:请求数据的第一行。其中GET表示请求方式,/ 表示请求资源路径,HTTP/1.1表示请求协议版本
- 请求头:第二行开始,格式为key:value形式。
- 请求体:POST请求的最后一部分,存放请求参数
HTTP响应数据格式
三部分
- 响应行:响应数据的第一行。其中HTTP/1.1表示协议版本,200表示响应状态码,ok表示状态码描述
- 响应头:第二行开始,格式为key:value形式。
- 响应体:最后一部分。存放响应数据
web服务器
是一个应用程序(软件),对HTTP协议的操作进行封装,是的程序员不必直接对协议进行操作,让web开发更加便捷,主要功能是"提供网上信息浏览服务"
Tomcat
简介
Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级web服务器,支持servlet/jsp少量javaee规范。
Tomcat也被称为web容器,Servlet容器。Servlet需要依赖于Tomcat才能运行。
基本使用:安装,卸载,启动,关闭,配置,部署项目
idea中创建Maven Web
idea中使用Tomcat
Servlet
- 是Java提供的一门动态web资源开发技术。
- 是JavaEE规范之一,其实是一个接口,将来我们需要定义servlet类实现servlet接口,并由web服务器运行servlet。
快速入门
Servlet执行流程
- 由web服务器创建,servlet方法由web服务器调用
- 自定义中的servlet,必须实现servlet接口并复写其方法,而servlet接口中由service方法。
Servlet生命周期
对象的生命周期值一个对象从被创建到被销毁的整个过程
方法介绍
Servlet体系结构
XML配置方式编写servlet
Request(请求)
Request继承体系
- Tomcat需要解析请求数据,封装位request对象,并创建request对象传递到service方法中
- 使用request对象,查阅JavaEE API文档的HttpServletRequ接口
Request获取请求数据
请求数据分为三部分:
Request通用方式获取请求参数
请求参数中文乱码问题
Request请求转发
一种在服务器内部的资源跳转方式。
Response(响应)
设置响应数据功能介绍
完成重定向
重定向:一种资源跳转方式
//实现方法
resp.setStatus(302);
resp.setHeader("location","资源路径");
//简化写法
resp.sendRedirect("路径");
响应字符数据
响应字节数据
JSP
概念
Java Server Pages,Java服务端页面
一种动态的网页技术,其中既可以定义Html,js,css等静态内容,还可以定义Java代码的动态内容,
JSP=HTML+Java;
作用:简化开发,避免了在servlet中直接输出HTML标签
快速入门
原理
Java Server Pages,Java服务端页面
JSP=HTML+Java,简化开发
实质上就是一个Servlet
JSP再被访问时,有JSP容器(Tomcat)将其转化为Java文件(Servlet),再由jsp容器将其编译,最终对外提供服务的其实就是这个字节码文件
脚本
缺点
EL表达式
Expression Language 表达式语言,用于简化JSP页面内的Java代码
主要功能
获取数据
语法
${expression}
JSTL标签
JSP标准标签库(Jsp Standard Tag Library),使用标签取代JSP页面上的Java代码
<c:if 用来逻辑判断,替换Java if else
/< c:forEach /> 相当于for循环
items:被遍历的容器。 var:遍历产生的临时变量
MVC模式和三层结构
MVC
分层开发模式,其中:
M: Model 业务模型,处理业务
V: View 视图,界面展示
C: Controller 控制器,处理请求,调用模型和视图
三层架构
案例
会话跟踪
会话
用户打开浏览器,访问web服务器的资源,会话建立,知道有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应
会话跟踪
一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同意浏览器,以便在同义词绘画的多次请求间共享数据。
HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现绘画内的数据共享。
实现方式:
- 客户端会话跟踪技术: Cookie
- 服务端会话跟踪技术: Session
Cookie
基本使用
客户端会话技术,将数据保存在客户端,以后每次请求都携带Cookie数据进行访问。
原理
使用细节
Session
基本使用
服务端会话跟踪技术:将数据保存到服务端
原理
Session是基于Cookie实现的
使用细节
#Cookie和Session 总结
Filter
概念
Filter表示过滤器,是Java web三大组件(Servlet、Filter、Listener)之一
过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。
过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等。
快速入门
执行流程
使用细节
Filter拦截路径配置
根据需求,配置不同的拦截资源路径
过滤器链
一个web应用中,可以配置多个过滤器,这多个过滤器成为过滤器链
- 注解配置的Filter,优先级按照过滤器类名(字符串)的自然排序
Listener
-
Listener表示监听器,是Java web三大组件(Servlet、Filter、Listener)之一
-
监听器可以监听就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性是自动执行代码的功能组件
Listener的使用
AJAX
AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新。
什么是 AJAX?
AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。
简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据,并在网页上进行显示。
使用 AJAX 的应用程序案例:谷歌地图、腾讯微博、优酷视频、人人网等等。
AJAX的作用
- 与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据。
- 使用了AJAX和服务器进行通信,就可以使用HTML+AJAX来 替换JSP 页面了。
- 异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索,用复命是否可用,等等……
快速入门
Axios异步框架
- 对原生的ajax进行封装,简化书写。
-
JSON
JSON 是用于存储和传输数据的格式。
JSON 通常用于服务端向网页传递数据 。
什么是 JSON?
- JSON 英文全称 JavaScript Object Notation
- JSON 是一种轻量级的数据交换格式。
- JSON是独立的语言 *****
- JSON 易于理解。
JSON 格式化后为 JavaScript 对象
JSON 格式在语法上与创建 JavaScript 对象代码是相同的。
由于它们很相似,所以 JavaScript 程序可以很容易的将 JSON 数据转换为 JavaScript 对象。
JSON 语法规则
- 数据为 键/值 对。
- 数据由逗号分隔。
- 大括号保存对象
- 方括号保存数组
JSON 数据 - 一个名称对应一个值
JSON 数据格式为 键/值 对,就像 JavaScript 对象属性。
键/值对包括字段名称(在双引号中),后面一个冒号,然后是值:
“name”:“Runoob”
JSON 对象
JSON 对象保存在大括号内。
就像在 JavaScript 中, 对象可以保存多个 键/值 对:
{“name”:“Runoob”, “url”:“www.runoob.com”}
JSON 数组
JSON 数组保存在中括号内。
就像在 JavaScript 中, 数组可以包含对象:
“sites”:[
{“name”:“Runoob”, “url”:“www.runoob.com”},
{“name”:“Google”, “url”:“www.google.com”},
{“name”:“Taobao”, “url”:“www.taobao.com”}
]
JSON 与 JS 对象的关系
很多人搞不清楚 JSON 和 JS 对象的关系,甚至连谁是谁都不清楚。
**其实,可以这么理解:**JSON 是 JS 对象的字符串表示法。它使用文本表示一个 JS 对象的信息,(JSON)本质是一个字符串。
javascript:void(0) 含义
javascript:void(0) 中最关键的是 void 关键字, void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值。
JSON数据和Java对象转换
- 请求数据:JSON字符串转化为Java对象
- 响应数据:Java对象转化为JSON字符串
JavaBean
概述
JavaBean 是特殊的 Java 类,使用 Java 语言书写,并且遵守 JavaBean API 规范。
接下来给出的是 JavaBean 与其它 Java 类相比而言独一无二的特征:
- 提供一个默认的无参构造函数。
- 需要被序列化并且实现了 Serializable 接口。
- 可能有一系列可读写属性。
- 可能有一系列的 getter 或 setter 方法。