數(shù)據(jù)庫(kù)連接池、Spring JDBC和HTML
更新時(shí)間:2018-09-06 來(lái)源:黑馬程序員技術(shù)社區(qū) 瀏覽量:
一、JDBC簡(jiǎn)介
概念:Java DataBase Connectivity,Java數(shù)據(jù)庫(kù)連接,Java語(yǔ)言操作數(shù)據(jù)庫(kù).
JDBC本質(zhì):其實(shí)是Sun公司提供的一套操作所有關(guān)系型數(shù)據(jù)庫(kù)的規(guī)則,即接口.各個(gè)數(shù)據(jù)庫(kù)廠商去實(shí)現(xiàn)這套接口,提供數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar包.我們可以使用這套接口實(shí)現(xiàn)JDBC編程,操作數(shù)據(jù)庫(kù).
JDBC操作數(shù)據(jù)庫(kù)步驟:
*導(dǎo)入jar包
*注冊(cè)驅(qū)動(dòng)
*建立連接
*書(shū)寫(xiě)sql語(yǔ)句
*創(chuàng)建執(zhí)行sql語(yǔ)句的對(duì)象(Statement/prepareStatement)
*執(zhí)行sql語(yǔ)句
*處理返回結(jié)果
*釋放資源
注意:由于后期使用單純JDBC比較少,因此這里就不在贅述其具體代碼和工具類的編寫(xiě)了。后面會(huì)介紹一些新的技術(shù)。
二、JDBC控制事務(wù)
1.事務(wù):一個(gè)包含多個(gè)步驟的業(yè)務(wù)操作。如果這個(gè)業(yè)務(wù)操作被事務(wù)管理,則這多個(gè)步驟要么同時(shí)成功,要么同時(shí)失敗。
2.操作:
1.開(kāi)啟事務(wù)
2.提交事務(wù)
3.回滾事務(wù)
3.使用Connection對(duì)象來(lái)管理事務(wù)
*開(kāi)啟事務(wù):setAutoCommit(boolean autoCommit):調(diào)用該方法設(shè)置參數(shù)為false,即開(kāi)啟事務(wù)
*在執(zhí)行sql之前開(kāi)啟事務(wù)
*提交事務(wù):commit()
*當(dāng)所有sql都執(zhí)行完提交事務(wù)
*回滾事務(wù):rollback()
*在catch中回滾事務(wù)
三、數(shù)據(jù)庫(kù)連接池
概念:是一個(gè)容器(集合),存放數(shù)據(jù)庫(kù)連接的容器。
當(dāng)系統(tǒng)初始化后,容器被創(chuàng)建,容器中會(huì)申請(qǐng)一些連接對(duì)象,當(dāng)用戶來(lái)訪問(wèn)數(shù)據(jù)庫(kù)時(shí),從容器中獲取連接對(duì)象,用戶訪問(wèn)完之后,會(huì)將連接對(duì)象歸還給容器。
好處:
1.節(jié)約資源
2.用戶訪問(wèn)高效
實(shí)現(xiàn):
1.標(biāo)準(zhǔn)接口:DataSource,java.sql包下的
1.方法:
*獲取連接:getConnection()
*歸還連接:Connection.close()。如果連接對(duì)象Connection是從連接池中獲取的,那么調(diào)用Connection.close()方法,則不會(huì)再關(guān)閉連接了。而 是歸還連接
2.一般我們不去實(shí)現(xiàn)它,有數(shù)據(jù)庫(kù)廠商來(lái)實(shí)現(xiàn)
1.C3P0:數(shù)據(jù)庫(kù)連接池技術(shù)
2.Druid:數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn)技術(shù),由阿里巴巴提供的
這里重點(diǎn)介紹下Druid。
四、Druid:數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn)技術(shù)
1.步驟:
1.導(dǎo)入jar包druid-1.0.9.jar
2.定義配置文件:
*是properties形式的
*可以叫任意名稱,可以放在任意目錄下
3.加載配置文件。Properties
4.獲取數(shù)據(jù)庫(kù)連接池對(duì)象:通過(guò)工廠來(lái)來(lái)獲取 DruidDataSourceFactory
5.獲取連接:getConnection
五、Spring JDBC
1. 概念: Spring框架對(duì)JDBC的簡(jiǎn)單封裝,提供了一個(gè)JDBCTemplate對(duì)象簡(jiǎn)化JDBC的開(kāi)發(fā)。
步驟:
1.導(dǎo)入jar包
2.創(chuàng)建JdbcTemplate對(duì)象,依賴于數(shù)據(jù)源DataSource
3.調(diào)用JdbcTemplate的方法來(lái)完成CRUD的操作
update():執(zhí)行DML的增刪改操作
queryForMap(): 將查詢的結(jié)果集封裝為Map雙列集合對(duì)象,每次只能查詢出一條記錄
queryForList():將查詢的結(jié)果集封裝為L(zhǎng)ist單列集合對(duì)象
注意:將每一條記錄封裝為map集合,將map集合封裝為list集合
query():將查詢結(jié)果封裝為JavaBean對(duì)象 (實(shí)體類對(duì)象)
query的參數(shù):RowMapper
一般我們使用BeanPropertyRowMapper實(shí)現(xiàn)類。可以完成數(shù)據(jù)到JavaBean的自動(dòng)封裝
new BeanPropertyRowMapper<類型>(類型.class)
queryForObject():將查詢結(jié)果封裝為Object對(duì)象
一般用于聚合函數(shù)的查詢
六、HTML(簡(jiǎn)單介紹)
1.基本的一些標(biāo)簽
1)介紹HTML之前,先介紹下JavaWeb技術(shù):
概念:用于java語(yǔ)言開(kāi)發(fā)基于互聯(lián)網(wǎng)的項(xiàng)目.
軟件架構(gòu):
C/S:Client/Server 客戶端/服務(wù)器端
如:QQ/迅雷等
優(yōu)點(diǎn):用戶體驗(yàn)好
缺點(diǎn):開(kāi)發(fā)/安裝/部署/維護(hù),麻煩
B/S:Browser/Server 瀏覽器/服務(wù)器端
通過(guò)網(wǎng)址,訪問(wèn)不同的程序
優(yōu)點(diǎn)::開(kāi)發(fā)/安裝/部署/維護(hù) 比較簡(jiǎn)單
缺點(diǎn):大型應(yīng)用,用戶體驗(yàn)較差,因?yàn)閭鬏敱容^慢,硬件要求過(guò)高
B/S架構(gòu)詳解:
資源分類:
靜態(tài)資源:基于HTML/JS/CSS等技術(shù),使用靜態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)發(fā)布的資源.
Html超文本標(biāo)記語(yǔ)言:Hyper text Markiplanguage簡(jiǎn)稱
特點(diǎn):
所有用戶訪問(wèn),得到的結(jié)果是一樣的。
如:文本,圖片,音頻、視頻,HTML,CSS,JavaScript
如果用戶請(qǐng)求的是靜態(tài)資源,那么服務(wù)器會(huì)直接將靜態(tài)資源發(fā)送給瀏覽器。瀏覽器中內(nèi)置了靜態(tài)資源的解析引擎,
可以展示靜態(tài)資源
動(dòng)態(tài)資源:基于Servlet/JSP等技術(shù),使用動(dòng)態(tài)網(wǎng)頁(yè)及時(shí)發(fā)布的資源.
特點(diǎn):
所有用戶訪問(wèn),得到的結(jié)果可能不一樣。
如:jsp/servlet,php,asp...
*如果用戶請(qǐng)求的是動(dòng)態(tài)資源,那么服務(wù)器會(huì)執(zhí)行動(dòng)態(tài)資源,轉(zhuǎn)換為靜態(tài)資源,再發(fā)送給瀏覽器
注意: 我們要學(xué)習(xí)動(dòng)態(tài)資源,必須先學(xué)習(xí)靜態(tài)資源!
靜態(tài)資源:
HTML:用于搭建基礎(chǔ)網(wǎng)頁(yè),展示頁(yè)面的內(nèi)容
CSS:用于美化頁(yè)面,布局頁(yè)面
JavaScript:控制頁(yè)面的元素,讓頁(yè)面有一些動(dòng)態(tài)的效果
2)HTML和其基本標(biāo)簽
1.概念:是最基礎(chǔ)的網(wǎng)頁(yè)開(kāi)發(fā)語(yǔ)言
Hyper Text Markup Language超文本標(biāo)記語(yǔ)言
超文本:
超文本是用超鏈接的方法,將各種不同空間的文字信息組織在一起的網(wǎng)狀文本.
標(biāo)記語(yǔ)言:
由標(biāo)簽構(gòu)成的語(yǔ)言。<標(biāo)簽名稱> 如html,xml
標(biāo)記語(yǔ)言不是編程語(yǔ)言
2.快速入門(mén):
語(yǔ)法:
1.html文檔后綴名 .html 或者.htm
2.標(biāo)簽分為
1.圍堵標(biāo)簽:有開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽。如 <html></html>
2.自閉和標(biāo)簽:開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽在一起。如 <br/>
3.標(biāo)簽可以嵌套:
需要正確嵌套,不能你中有我,我中有你
錯(cuò)誤:<a><b></a></b>
正確:<a><b></b></a>
4. 在開(kāi)始標(biāo)簽中可以定義屬性。屬性是由鍵值對(duì)構(gòu)成,值需要用引號(hào)(單雙都可)引起來(lái)
5. html的標(biāo)簽不區(qū)分大小寫(xiě),但是建議使用小寫(xiě)。
HTML標(biāo)簽:表單標(biāo)簽
*表單:
*概念:用于采集
*form標(biāo)簽:用于定義表單的.可以定義一個(gè)范圍,范圍代表采集用戶數(shù)據(jù)的范圍.
*屬性:
*action:指定提交數(shù)據(jù)的URL
*method:指定提交方式
*分類:一共7種,常用2種:
get:
請(qǐng)求參數(shù)會(huì)在地址欄中顯示,會(huì)封裝到請(qǐng)求行中
請(qǐng)求參數(shù)大小有限制的
不太安全
post:
請(qǐng)求參數(shù)不會(huì)在地址欄中顯示
請(qǐng)求參數(shù)大小沒(méi)有限制的
較為安全
表單項(xiàng)中的數(shù)據(jù)要想被提交:必須指定其name屬性.
表單項(xiàng)標(biāo)簽:
*input:可以通過(guò)type屬性值,改變?cè)卣故緲邮?br/> *type屬性:
text:文本輸入框,默認(rèn)值
placehoder:指定輸入框的提示信息,當(dāng)輸入的內(nèi)容發(fā)生變化,會(huì)
password:密碼輸入框,
radio:單選框
*注意:
1.要想讓多個(gè)單選框?qū)崿F(xiàn)單選的效果,則多個(gè)單選框的name屬性值必須一樣。
2.一般會(huì)給每一個(gè)單選框提供value屬性,指定其被選中后提交的值
3.checked屬性,可以指定默認(rèn)值
checkbox:復(fù)選框
*注意:
1.一般會(huì)給每一個(gè)單選框提供value屬性,指定其被選中后提交的值
2.checked屬性,可以指定默認(rèn)值
file: 文件選擇框(文件上傳)
hidden:隱藏域,用于提交一些信息
submit:提交按鈕,可以提交表單
button:普通按鈕
image:圖片提交按鈕
*src屬性指定圖片的路徑
color:取色器
date:年月日的日歷
datetime-local:年月日時(shí)分秒
email:郵箱
number:數(shù)字,如年齡等
*label:指定輸入項(xiàng)的文字描述信息
*注意:
* label的for屬性一般會(huì)和 input 的 id屬性值 對(duì)應(yīng)。如果對(duì)應(yīng)了,則點(diǎn)擊label區(qū)域,會(huì)讓input輸入框獲取焦點(diǎn)。
* select屬性 :下拉列表,設(shè)置name屬性
<option></option>指定列表項(xiàng)
* textarea屬性:文本域.
*cols:指定列數(shù),每一行有多少個(gè)字符
*rows:默認(rèn)多少行
CSS:頁(yè)面美化布局控制
1. 概念:Cascading Style Sheets層疊樣式表
*層疊:多個(gè)樣式可以作用在同一個(gè)html的元素上,同時(shí)生效
2.好處:
1.功能強(qiáng)大
2.將內(nèi)容展示和樣式控制分離
*降低耦合度。解耦
*讓分工協(xié)作更容易
*提高開(kāi)發(fā)效率
3.CSS的使用:CSS與html結(jié)合方式
1.內(nèi)聯(lián)樣式
*在標(biāo)簽內(nèi)使用style屬性指定css代碼
* 如:<div style="color:red;">hello css</div>
2.內(nèi)部樣式
*在head標(biāo)簽內(nèi),定義style標(biāo)簽,style標(biāo)簽的標(biāo)簽體內(nèi)容就是css代碼
*如:
<style>
div{
color:blue;
}
</style>
<div>hellocss</div>
3.外部樣式
1.定義css資源文件。
2.在head標(biāo)簽內(nèi),定義link標(biāo)簽,引入外部的資源文件
*如:
*a.css文件:
div{
color:green;
}
<linkrel="stylesheet" href="css/a.css">
<div>hellocss</div>
<div>hellocss</div>
*注意:
*1,2,3種方式css作用范圍越來(lái)越大
*1方式不常用,后期常用2,3
*3種格式可以寫(xiě)為:
<style>
@import"css/a.css";
</style>
總結(jié):
html中三種寫(xiě)css的方式:
1.直接在標(biāo)簽上寫(xiě)style屬性
2.在head標(biāo)簽中直接寫(xiě)<style>....</style>
3.在外部定義.css文件,通過(guò)<link rel= />引入外部樣式
優(yōu)先級(jí)就近原則,即1>2>3
css語(yǔ)法:
格式:
選擇器{
屬性名1:值;
屬性名2:值;
......
}
*選擇器:篩選具有相似特征的元素
*注意:
*每一對(duì)屬性需要使用;隔開(kāi),最后一對(duì)屬性可以不加;
分類:
基礎(chǔ)選擇器:
1.id選擇器:選擇具體的id屬性值元素
*語(yǔ)法:#id屬性值{}
2.元素選擇器:選擇具有相同標(biāo)簽名稱的元素
*語(yǔ)法:標(biāo)簽名稱{}
*注意:id選擇器優(yōu)先級(jí)高于元素選擇器
3.類選擇器:選擇具有相同的class屬性值的元素
*語(yǔ)法:.class屬性值{}
*注意:類選擇器優(yōu)先級(jí)高于元素選擇器
*class=class屬性值1 class屬性值2 class屬性值3...也是可以的,只是相同設(shè)置只有一個(gè)起作用
擴(kuò)展選擇器:
1.選擇所有元素:
*語(yǔ)法: *{ }
2.并集選擇器:
*語(yǔ)法:選擇器1,選擇器2{ }
3.后代選擇器:篩選選擇器1下的是所有后代選擇器2,哪怕是孫子級(jí),只要有選擇器2即可
*語(yǔ)法: 選擇器1 選擇器2{ },用空格隔開(kāi)的
4.子元素選擇器:
*語(yǔ)法: 選擇器1 >選擇器2{ }
5.屬性選擇器:
*語(yǔ)法:元素名稱[屬性名="屬性值"]{ }
6.偽類選擇器:
* 語(yǔ)法:元素:狀態(tài){}
*如:<a>
*狀態(tài):
*link:初始化的狀態(tài)
*visited:被訪問(wèn)過(guò)的狀態(tài)
*active:正在訪問(wèn)狀態(tài)
*hover:鼠標(biāo)懸浮狀態(tài)
屬性
1.字體、文本
*font-size:字體大小
*color:文本顏色
*text-align:對(duì)其方式
*line-height:行高
2.背景
*background:
3.邊框
*border:設(shè)置邊框,符合屬性
4.尺寸
*width:寬度
*height:高度
5.盒子模型:控制布局
*margin:外邊距
*padding:內(nèi)邊距
*默認(rèn)情況下內(nèi)邊距會(huì)影響整個(gè)盒子的大小
*box-sizing: border-box; 設(shè)置盒子的屬性,讓width和height就是最終盒子的大小
*float:浮動(dòng)
*left
*right
file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image004.jpg
作者:黑馬程序員JavaEE培訓(xùn)學(xué)院
首發(fā):http://java.itheima.com/