数据库连接池、Spring JDBC和HTML
更新时间:2018-09-06 来源:黑马程序员技术社区 浏览量:
一、JDBC简介
概念:Java DataBase Connectivity,Java数据库连接,Java语言操作数据库.
JDBC本质:其实是Sun公司提供的一套操作所有关系型数据库的规则,即接口.各个数据库厂商去实现这套接口,提供数据库驱动jar包.我们可以使用这套接口实现JDBC编程,操作数据库.
JDBC操作数据库步骤:
*导入jar包
*注册驱动
*建立连接
*书写sql语句
*创建执行sql语句的对象(Statement/prepareStatement)
*执行sql语句
*处理返回结果
*释放资源
注意:由于后期使用单纯JDBC比较少,因此这里就不在赘述其具体代码和工具类的编写了。后面会介绍一些新的技术。
二、JDBC控制事务
1.事务:一个包含多个步骤的业务操作。如果这个业务操作被事务管理,则这多个步骤要么同时成功,要么同时失败。
2.操作:
1.开启事务
2.提交事务
3.回滚事务
3.使用Connection对象来管理事务
*开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务
*在执行sql之前开启事务
*提交事务:commit()
*当所有sql都执行完提交事务
*回滚事务:rollback()
*在catch中回滚事务
三、数据库连接池
概念:是一个容器(集合),存放数据库连接的容器。
当系统初始化后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
好处:
1.节约资源
2.用户访问高效
实现:
1.标准接口:DataSource,java.sql包下的
1.方法:
*获取连接:getConnection()
*归还连接:Connection.close()。如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了。而 是归还连接
2.一般我们不去实现它,有数据库厂商来实现
1.C3P0:数据库连接池技术
2.Druid:数据库连接池实现技术,由阿里巴巴提供的
这里重点介绍下Druid。
四、Druid:数据库连接池实现技术
1.步骤:
1.导入jar包druid-1.0.9.jar
2.定义配置文件:
*是properties形式的
*可以叫任意名称,可以放在任意目录下
3.加载配置文件。Properties
4.获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory
5.获取连接:getConnection
五、Spring JDBC
1. 概念: Spring框架对JDBC的简单封装,提供了一个JDBCTemplate对象简化JDBC的开发。
步骤:
1.导入jar包
2.创建JdbcTemplate对象,依赖于数据源DataSource
3.调用JdbcTemplate的方法来完成CRUD的操作
update():执行DML的增删改操作
queryForMap(): 将查询的结果集封装为Map双列集合对象,每次只能查询出一条记录
queryForList():将查询的结果集封装为List单列集合对象
注意:将每一条记录封装为map集合,将map集合封装为list集合
query():将查询结果封装为JavaBean对象 (实体类对象)
query的参数:RowMapper
一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
new BeanPropertyRowMapper<类型>(类型.class)
queryForObject():将查询结果封装为Object对象
一般用于聚合函数的查询
六、HTML(简单介绍)
1.基本的一些标签
1)介绍HTML之前,先介绍下JavaWeb技术:
概念:用于java语言开发基于互联网的项目.
软件架构:
C/S:Client/Server 客户端/服务器端
如:QQ/迅雷等
优点:用户体验好
缺点:开发/安装/部署/维护,麻烦
B/S:Browser/Server 浏览器/服务器端
通过网址,访问不同的程序
优点::开发/安装/部署/维护 比较简单
缺点:大型应用,用户体验较差,因为传输比较慢,硬件要求过高
B/S架构详解:
资源分类:
静态资源:基于HTML/JS/CSS等技术,使用静态网页开发技术发布的资源.
Html超文本标记语言:Hyper text Markiplanguage简称
特点:
所有用户访问,得到的结果是一样的。
如:文本,图片,音频、视频,HTML,CSS,JavaScript
如果用户请求的是静态资源,那么服务器会直接将静态资源发送给浏览器。浏览器中内置了静态资源的解析引擎,
可以展示静态资源
动态资源:基于Servlet/JSP等技术,使用动态网页及时发布的资源.
特点:
所有用户访问,得到的结果可能不一样。
如:jsp/servlet,php,asp...
*如果用户请求的是动态资源,那么服务器会执行动态资源,转换为静态资源,再发送给浏览器
注意: 我们要学习动态资源,必须先学习静态资源!
静态资源:
HTML:用于搭建基础网页,展示页面的内容
CSS:用于美化页面,布局页面
JavaScript:控制页面的元素,让页面有一些动态的效果
2)HTML和其基本标签
1.概念:是最基础的网页开发语言
Hyper Text Markup Language超文本标记语言
超文本:
超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本.
标记语言:
由标签构成的语言。<标签名称> 如html,xml
标记语言不是编程语言
2.快速入门:
语法:
1.html文档后缀名 .html 或者.htm
2.标签分为
1.围堵标签:有开始标签和结束标签。如 <html></html>
2.自闭和标签:开始标签和结束标签在一起。如 <br/>
3.标签可以嵌套:
需要正确嵌套,不能你中有我,我中有你
错误:<a><b></a></b>
正确:<a><b></b></a>
4. 在开始标签中可以定义属性。属性是由键值对构成,值需要用引号(单双都可)引起来
5. html的标签不区分大小写,但是建议使用小写。
HTML标签:表单标签
*表单:
*概念:用于采集
*form标签:用于定义表单的.可以定义一个范围,范围代表采集用户数据的范围.
*属性:
*action:指定提交数据的URL
*method:指定提交方式
*分类:一共7种,常用2种:
get:
请求参数会在地址栏中显示,会封装到请求行中
请求参数大小有限制的
不太安全
post:
请求参数不会在地址栏中显示
请求参数大小没有限制的
较为安全
表单项中的数据要想被提交:必须指定其name属性.
表单项标签:
*input:可以通过type属性值,改变元素展示样式
*type属性:
text:文本输入框,默认值
placehoder:指定输入框的提示信息,当输入的内容发生变化,会
password:密码输入框,
radio:单选框
*注意:
1.要想让多个单选框实现单选的效果,则多个单选框的name属性值必须一样。
2.一般会给每一个单选框提供value属性,指定其被选中后提交的值
3.checked属性,可以指定默认值
checkbox:复选框
*注意:
1.一般会给每一个单选框提供value属性,指定其被选中后提交的值
2.checked属性,可以指定默认值
file: 文件选择框(文件上传)
hidden:隐藏域,用于提交一些信息
submit:提交按钮,可以提交表单
button:普通按钮
image:图片提交按钮
*src属性指定图片的路径
color:取色器
date:年月日的日历
datetime-local:年月日时分秒
email:邮箱
number:数字,如年龄等
*label:指定输入项的文字描述信息
*注意:
* label的for属性一般会和 input 的 id属性值 对应。如果对应了,则点击label区域,会让input输入框获取焦点。
* select属性 :下拉列表,设置name属性
<option></option>指定列表项
* textarea属性:文本域.
*cols:指定列数,每一行有多少个字符
*rows:默认多少行
CSS:页面美化布局控制
1. 概念:Cascading Style Sheets层叠样式表
*层叠:多个样式可以作用在同一个html的元素上,同时生效
2.好处:
1.功能强大
2.将内容展示和样式控制分离
*降低耦合度。解耦
*让分工协作更容易
*提高开发效率
3.CSS的使用:CSS与html结合方式
1.内联样式
*在标签内使用style属性指定css代码
* 如:<div style="color:red;">hello css</div>
2.内部样式
*在head标签内,定义style标签,style标签的标签体内容就是css代码
*如:
<style>
div{
color:blue;
}
</style>
<div>hellocss</div>
3.外部样式
1.定义css资源文件。
2.在head标签内,定义link标签,引入外部的资源文件
*如:
*a.css文件:
div{
color:green;
}
<linkrel="stylesheet" href="css/a.css">
<div>hellocss</div>
<div>hellocss</div>
*注意:
*1,2,3种方式css作用范围越来越大
*1方式不常用,后期常用2,3
*3种格式可以写为:
<style>
@import"css/a.css";
</style>
总结:
html中三种写css的方式:
1.直接在标签上写style属性
2.在head标签中直接写<style>....</style>
3.在外部定义.css文件,通过<link rel= />引入外部样式
优先级就近原则,即1>2>3
css语法:
格式:
选择器{
属性名1:值;
属性名2:值;
......
}
*选择器:筛选具有相似特征的元素
*注意:
*每一对属性需要使用;隔开,最后一对属性可以不加;
分类:
基础选择器:
1.id选择器:选择具体的id属性值元素
*语法:#id属性值{}
2.元素选择器:选择具有相同标签名称的元素
*语法:标签名称{}
*注意:id选择器优先级高于元素选择器
3.类选择器:选择具有相同的class属性值的元素
*语法:.class属性值{}
*注意:类选择器优先级高于元素选择器
*class=class属性值1 class属性值2 class属性值3...也是可以的,只是相同设置只有一个起作用
扩展选择器:
1.选择所有元素:
*语法: *{ }
2.并集选择器:
*语法:选择器1,选择器2{ }
3.后代选择器:筛选选择器1下的是所有后代选择器2,哪怕是孙子级,只要有选择器2即可
*语法: 选择器1 选择器2{ },用空格隔开的
4.子元素选择器:
*语法: 选择器1 >选择器2{ }
5.属性选择器:
*语法:元素名称[属性名="属性值"]{ }
6.伪类选择器:
* 语法:元素:状态{}
*如:<a>
*状态:
*link:初始化的状态
*visited:被访问过的状态
*active:正在访问状态
*hover:鼠标悬浮状态
属性
1.字体、文本
*font-size:字体大小
*color:文本颜色
*text-align:对其方式
*line-height:行高
2.背景
*background:
3.边框
*border:设置边框,符合属性
4.尺寸
*width:宽度
*height:高度
5.盒子模型:控制布局
*margin:外边距
*padding:内边距
*默认情况下内边距会影响整个盒子的大小
*box-sizing: border-box; 设置盒子的属性,让width和height就是最终盒子的大小
*float:浮动
*left
*right
file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image004.jpg
作者:黑马程序员JavaEE培训学院
首发:http://java.itheima.com/