数据库连接池和HTML
1. 数据库连接池
1.1 为什么要使用数据库连接池
复习线程池
1. 初始化一些线程,提供给程序使用
2. 节约了资源,关于线程的开闭资源,节约了内存空间
3. 例如初始化5个线程对象,这里有10个线程目标
首先执行5个线程目标,其他线程目标等待
5个线程目标执行完毕,会执行其他线程,不会关闭线程。
数据库连接池
现在的代码有什么问题
每一次执行业务都需要申请新的数据库里链接,同时运行结束之后关闭资源。
会导致资源浪费,数据库压力过大,同时性能非常一般。
希望采用一种共享单车的形式
1. 投放一定数量的共享单车
2. 用户可以使用,用户使用完毕,【归还】共享单车平台
3. 市场需求非常大,可能会再次【投放】
1.2 数据库连接池考虑的问题
数据库连接池是用于管理数据库连接资源,属性和数据库连接对象。
数据库连接必要的资源
1. URL
2. user
3. password
4. DriverClass
连接池关于数据库连接对象的管理内容
1. 初始化数量
2. 容量Max值为多少
3. 等待时间
数据库连接归还功能
改功能是自带的功能,并且润物细无声!!!
依然是调用原始的close方法,实际效果是归还数据库连接池!!!
【代理】
1.3 常见数据库连接池
常见数据库连接池有哪些:
1. C3P0
2. DBCP
3. Druid
image.png
1.3.1 C3P0使用
使用流程:
1. 导包
mchange-commons-java-0.2.19.jar
c3p0-0.9.5.2.jar
2. 书写配置文件
3. 创建核心类
<!-- c3p0-config.xml需要存储于src目录下 -->
<c3p0-config>
<!-- 使用默认的配置读取连接池对象 -->
<default-config>
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/nzgp2001?useSSL=true</property>
<property name="user">root</property>
<property name="password">123456</property>
<!-- 连接池参数 -->
<!--初始化申请的连接数量-->
<property name="initialPoolSize">5</property>
<!--最大的连接数量-->
<property name="maxPoolSize">10</property>
<!--超时时间-->
<property name="checkoutTimeout">3000</property>
</default-config>
<named-config name="otherc3p0">
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/company?useSSL=true</property>
<property name="user">root</property>
<property name="password">123456</property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">8</property>
<property name="checkoutTimeout">1000</property>
</named-config>
</c3p0-config>
package util;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
/**
* JDBC工具类,负责数据库连接对象和数据库资源关闭
*
* @author Anonymous 2020/3/24 10:08
*/
public class JdbcUtil {
/**
* 默认加载 default-config配置
*/
private static ComboPooledDataSource pool = new ComboPooledDataSource();
/*
指定选择c3p0配置文件中哪一个配置
private static ComboPooledDataSource pool = new ComboPooledDataSource("otherc3p0");
*/
/**
* 返回数据库连接对象,连接失败返回null
*
* @return java.sql.Connection 数据库连接对象
*/
public static Connection getConnection() {
Connection connection = null;
try {
connection = pool.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
/*
以下三个方法实际上都是执行同一个方法,使用这种方式
1. 简化代码结构
2. 规范化所有的操作
*/
/**
* 处理数据库操作对应的资源问题
*
* @param connection java.sql.Connection 数据库连接对象
*/
public static void close(Connection connection) {
close(connection, null, null);
}
/**
* 处理数据库操作对应的资源问题
*
* @param connection java.sql.Connection 数据库连接对象
* @param statement java.sql.Statement 数据库SQL语句搬运工对象
*/
public static void close(Connection connection, Statement statement) {
close(connection, statement, null);
}
/**
* 处理数据库操作对应的资源问题
*
* @param connection java.sql.Connection 数据库连接对象
* @param statement java.sql.Statement 数据库SQL语句搬运工对象
* @param resultSet java.sql.ResultSet 数据库查询结果集对象
*/
public static void close(Connection connection, Statement statement, ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
1.3.2 Druid使用
使用流程:
1. 导包
druid-1.0.9.jar
2. 书写配置文件
配置文件是一个druid.properties文件
3. 创建核心类
# 文件名 druid.properties 存储在src目录下
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/nzgp2001?useSSL=true
username=root
password=123456
# 初始化数据库连接池容量
initialSize=5
# 最大容量
maxActive=20
# TimeOut 等待超时时间
maxWait=2000
package util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;
/**
* JDBC工具类,负责数据库连接对象和数据库资源关闭
*
* @author Anonymous 2020/3/24 10:08
*/
public class JdbcUtil {
/**
* 数据库资源
*/
private static DataSource ds;
static {
try {
// 加载Properties文件
Properties properties = new Properties();
properties.load(new FileInputStream("./src/druid.properties"));
// 已经完成数据库连接池操作
ds = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 返回数据库连接对象,连接失败返回null
*
* @return java.sql.Connection 数据库连接对象
*/
public static Connection getConnection() {
Connection connection = null;
try {
connection = ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
/*
以下三个方法实际上都是执行同一个方法,使用这种方式
1. 简化代码结构
2. 规范化所有的操作
*/
/**
* 处理数据库操作对应的资源问题
*
* @param connection java.sql.Connection 数据库连接对象
*/
public static void close(Connection connection) {
close(connection, null, null);
}
/**
* 处理数据库操作对应的资源问题
*
* @param connection java.sql.Connection 数据库连接对象
* @param statement java.sql.Statement 数据库SQL语句搬运工对象
*/
public static void close(Connection connection, Statement statement) {
close(connection, statement, null);
}
/**
* 处理数据库操作对应的资源问题
*
* @param connection java.sql.Connection 数据库连接对象
* @param statement java.sql.Statement 数据库SQL语句搬运工对象
* @param resultSet java.sql.ResultSet 数据库查询结果集对象
*/
public static void close(Connection connection, Statement statement, ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2. HTML
2.1 HTML简介
2.1.1 什么是HTML
HTML全称
Hyper Text Markup Language
超文本标记语言
包含内容
1. 超文件: 可以包含图片,视频。音频,连接....
2. 标记: 采用标签方式编程,并且有固定的规范
3. HTML5 是HTML语言一个标准,W3C组织制定的
HTML可以用于数据展示,常见的网站都是采用HTML来编程的。
2.1.2 最基本的HTML结构
<!DOCTYPE html>
<html>
<head>
<!-- 当前页面编码集 -->
<meta charset="utf-8" />
<!-- 设置当前页面的标题 -->
<title>标题</title>
</head>
<body>
<!-- 页面展示内容 -->
</body>
</html>
HTML标签要求
1. W3C规定,不可以自定义,每一个标签都自己的特定含义
2. 标签区别为双边标签和单边标签
<head></head> <meta charset="utf-8" />
3. 标签中可以使用属性
charset="utf-8"
charset属性名 utf-8属性值
属性名="属性值"
4. HTML标签不区分大小写,这里建议全小写
2.2 HTML基本标签
2.2.1 结构标签
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>01-结构标签</title>
</head>
<body text="red" bgcolor="black" background="img/QQ图片20200326112539.png">
你好HTML
</body>
</html>
属性:
text: 文本颜色
bgcolor: 背景颜色
background: 背景图
颜色的表示方式:
对应颜色的英文: red black yellowgreen greenyellow
还有就是RBG模式 #F26522 #334455
2.2.2 排版标签
a. 注释标签
<!-- 注释内容 -->
b. 换行标签
<br />
c. 段落标签
<p></p>
特征: 段落之间有留白
屬性:
align 对齐方式,有center right left
d. 水平分割线
<hr />
属性:
width: 水平分割线长度,单位px像素
size: 水平分割线粗细,单位px像素
color: 水平分割线的颜色
align: 对齐方式
2.2.3 块标签
<div></div>
行级块标签,单独成行,每一个块标签占一行
<span></span>
行内块标签,所有内容都在一行,多个span标签在一行展示
作用:
div 和CSS连用,用于页面布局操作
span 用于信息提示
2.3 文本标签
2.3.1 基本文本标签
<font></font>
属性:
size: 字体大小
color: 字体颜色
face: 字体样式
2.3.2 标题标签
<h1></h1> ~ <h6></h6>
数字越大文字越小。字体默认加粗,单独成行
h1标签一般在一个HTML页面中有且只有一个
2.4 列表标签
2.4.1 无序列表 ul
无序列表
<ul></ul>
属性:
type : circle 空心圆 square 方块 disc 实心圆(缺省) none 没有标记
元素内容:
<li></li>
案例
<ul type="none">
<li>修道院啤酒</li>
<li>百威啤酒</li>
<li>青岛啤酒</li>
<li>精酿啤酒</li>
<li>福佳白</li>
</ul>
2.4.2 有序列表 ol
有序列表:
<ol></ol>
属性:
type: 1 A a I i (数字,英文字母大小写,罗马数字大小写)
start: 有序从几开始
案例
<ol type="一" start="3">
<li>茅台</li>
<li>五粮液</li>
<li>习酒</li>
<li>舍得</li>
<li>彩陶坊</li>
</ol>
2.4.3 列表嵌套
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul type="none">
<li>茶
<ul type="none">
<li>绿茶</li>
<li>红茶</li>
<li>白茶</li>
<li>普洱</li>
<li>花茶</li>
</ul>
</li>
<li>咖啡
<ul type="none">
<li>埃塞尔比亚</li>
<li>印度尼西亚黄金曼特宁</li>
<li>夏瑰</li>
<li>蓝山</li>
</ul>
</li>
</ul>
</body>
</html>
2.5 图形标签
<img /> 单边标签
属性:
src: 图片路径,可以是本地路径也可以是网络路径
width: 图片宽度[不太合适]
height: 图片高度[不太合适]
border: 图像边框
align: 和相邻文本布局有关
alt: 图片文本说明,当图片裂开无法显示,展示文本
2.6 链接标签
<a></a>
属性:
href: 指定跳转哪一个页面
target: _self 当前页面加载新连接 _blank 新页面加载连接
name: 可以用于锚点使用
2.6.1 锚点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>10-链接标签锚点使用</title>
</head>
<body>
<a href="#middle">去中间</a><br>
<a name="top"></a><br>
<h1>顶部</h1><br>
.........................
<a name="middle"></a><br>
<h1>中间</h1><br>
<a href="#top">回顶部</a><br>
<a href="#bottom">去底部</a><br>
.........................
<a name="bottom"></a> <br>
<h1>底部</h1> <br>
<a href="#top">回顶部</a> <br>
<a href="#middle">去中间</a><br>
</body>
</html>
2.7 表格标签
2.7.1 基本表格样式
<table></table>
表格主标签
<tr></tr>
表格一行
<td></td>
表格一列
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>11-基本表格</title>
</head>
<body>
<table border="1" bordercolor="yellowgreen" cellspacing="5" align="center">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
</table>
</body>
2.7.2 表头使用
<th></th>
表头。默认字体加粗,并且居中效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>12-表格表头</title>
</head>
<body>
<table border="1" width="600px" align="center">
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
<th>Gender</th>
<th>Score</th>
</tr>
<tr align="center">
<td>1</td>
<td>骚磊</td>
<td>16</td>
<td>男</td>
<td>100</td>
</tr>
<tr align="center">
<td>2</td>
<td>老黑</td>
<td>66</td>
<td>男</td>
<td>5</td>
</tr>
</table>
</body>
</html>
2.7.3 表格的列合并
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>13-表格的列合并</title>
</head>
<body>
<table border="1" align="center" width="600">
<tr>
<th colspan="5">学生表</th>
</tr>
<tr align="center">
<td>ID</td>
<td>姓名</td>
<td colspan="3">各科成绩</td>
</tr>
<tr align="center">
<td>1</td>
<td>吴磊</td>
<td>100</td>
<td>95</td>
<td>98</td>
</tr>
<tr align="center">
<td>2</td>
<td>老A</td>
<td>10</td>
<td>5</td>
<td>3</td>
</tr>
</table>
</body>
</html>
2.7.4 表格的行合并
image.png
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>14-表格的行合并</title>
</head>
<body>
<table border="1" width="800" align="center">
<tr>
<th></th>
<th>周一</th>
<th>周二</th>
<th>周三</th>
<th>周四</th>
<th>周五</th>
</tr>
<tr>
<td rowspan="3">
上午
</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
<td>语文</td>
</tr>
<tr>
<td>数学</td>
<td>数学</td>
<td>数学</td>
<td>数学</td>
<td>数学</td>
</tr>
<tr>
<td>英语</td>
<td>英语</td>
<td>英语</td>
<td>英语</td>
<td>英语</td>
</tr>
<tr align="center">
<td colspan="6">午休</td>
</tr>
<tr>
<td rowspan="3">
下午
</td>
<td>音乐</td>
<td>音乐</td>
<td>音乐</td>
<td>音乐</td>
<td>音乐</td>
</tr>
<tr>
<td>体育</td>
<td>体育</td>
<td>体育</td>
<td>体育</td>
<td>体育</td>
</tr>
<tr>
<td>自习</td>
<td>自习</td>
<td>自习</td>
<td>自习</td>
<td>自习</td>
</tr>
</table>
</body>
</html>
2.8 文本格式化标签
<b> 文本加粗
<strong> 文本加粗
<em> 文本斜体
<i> 文本斜体
<small> 小号字体
<sup> 上标
<sub> 脚标
<del> 删除线
<ins> 下划线
3. 表单
3.1 表单的作用
提交数据给后台的一种方式
form表单
属性:
action:提交的目标位置,提交数据到服务器进行处理
method: get 和 post
enctype:【后面再说】
get:
1. 通过URL明文传递
16-form表单基本验证.html?userName=骚磊&password=123456
? 之后是参数
userName=骚磊 userName 参数名 骚磊 参数值 = 连接
不同参数使用&分割
2. 不安全!!!密码明文传递
3. 效率高!!!传输速度快
4. 数据大小有限制,一般限制在2KB以内
适用情况:
一般用于 搜索查询操作
post:
1. 通过请求实体来传递数据
2. 安全性稍稍可靠一丢丢
3. 效率低
4. 数据大小理论不限制
适用情况:
一般用于 搜索更新,删除,插入,登陆...
3.2 input标签
input输入框
type决定当前input标签中的内容是什么样式
属性值:
text 可视化文本[默认属性]
password 密文
submit 提交
radio 单选
【要求】
1. name属性必须一直,不然无法满足单选要求
2. checked属性为默认选择、
checkbox 多选
【要求和建议】
1. name属性必须一直
2. 建议:可以在name属性中使用[]做标记,区分是否为多选
tips:多选使用[] PHP后台直接解析为PHP 数组Array
date 时间日期
reset 重置
file 文件
hidden 隐藏数据传递
3.3 select下拉菜单
<select name="city">
<option value="1">安阳</option>
<option value="2">郑州</option>
<option value="3" selected>许昌</option>
<option value="4">开封</option>
<option value="5">邯郸</option>
</select> <br>
3.4 文本框
<textarea name="info" cols="30" rows="10"></textarea> <br>
网友评论