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