首頁(yè)技術(shù)文章正文

數(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/

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!