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

數(shù)據(jù)庫連接池、Spring JDBC和HTML

更新時間:2018-09-06 來源:黑馬程序員技術(shù)社區(qū) 瀏覽量:

一、JDBC簡介
概念:Java DataBase Connectivity,Java數(shù)據(jù)庫連接,Java語言操作數(shù)據(jù)庫.
JDBC本質(zhì):其實是Sun公司提供的一套操作所有關(guān)系型數(shù)據(jù)庫的規(guī)則,即接口.各個數(shù)據(jù)庫廠商去實現(xiàn)這套接口,提供數(shù)據(jù)庫驅(qū)動jar包.我們可以使用這套接口實現(xiàn)JDBC編程,操作數(shù)據(jù)庫.
JDBC操作數(shù)據(jù)庫步驟:
    *導入jar包
    *注冊驅(qū)動
    *建立連接
    *書寫sql語句
    *創(chuàng)建執(zhí)行sql語句的對象(Statement/prepareStatement)
    *執(zhí)行sql語句
    *處理返回結(jié)果
    *釋放資源
注意:由于后期使用單純JDBC比較少,因此這里就不在贅述其具體代碼和工具類的編寫了。后面會介紹一些新的技術(shù)。
二、JDBC控制事務(wù)
1.事務(wù):一個包含多個步驟的業(yè)務(wù)操作。如果這個業(yè)務(wù)操作被事務(wù)管理,則這多個步驟要么同時成功,要么同時失敗。
        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() 
                        *當所有sql都執(zhí)行完提交事務(wù)
                *回滾事務(wù):rollback() 
                        *在catch中回滾事務(wù)
三、數(shù)據(jù)庫連接池

概念:是一個容器(集合),存放數(shù)據(jù)庫連接的容器。
          當系統(tǒng)初始化后,容器被創(chuàng)建,容器中會申請一些連接對象,當用戶來訪問數(shù)據(jù)庫時,從容器中獲取連接對象,用戶訪問完之后,會將連接對象歸還給容器。
好處:
        1.節(jié)約資源
        2.用戶訪問高效
實現(xiàn):
        1.標準接口:DataSource,java.sql包下的
1.方法:
        *獲取連接:getConnection()
        *歸還連接:Connection.close()。如果連接對象Connection是從連接池中獲取的,那么調(diào)用Connection.close()方法,則不會再關(guān)閉連接了。而 是歸還連接
2.一般我們不去實現(xiàn)它,有數(shù)據(jù)庫廠商來實現(xiàn)
                        1.C3P0:數(shù)據(jù)庫連接池技術(shù)
                        2.Druid:數(shù)據(jù)庫連接池實現(xiàn)技術(shù),由阿里巴巴提供的
這里重點介紹下Druid。
四、Druid:數(shù)據(jù)庫連接池實現(xiàn)技術(shù)
1.步驟:
                        1.導入jar包druid-1.0.9.jar
                        2.定義配置文件:
                                *是properties形式的
                                *可以叫任意名稱,可以放在任意目錄下
                        3.加載配置文件。Properties
                        4.獲取數(shù)據(jù)庫連接池對象:通過工廠來來獲取 DruidDataSourceFactory
                        5.獲取連接:getConnection

五、Spring JDBC
1. 概念: Spring框架對JDBC的簡單封裝,提供了一個JDBCTemplate對象簡化JDBC的開發(fā)。
        步驟:
            1.導入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對象 (實體類對象)        
                                               query的參數(shù):RowMapper
                                        一般我們使用BeanPropertyRowMapper實現(xiàn)類??梢酝瓿蓴?shù)據(jù)到JavaBean的自動封裝
                                        new BeanPropertyRowMapper<類型>(類型.class)
                 queryForObject():將查詢結(jié)果封裝為Object對象
                                      一般用于聚合函數(shù)的查詢

六、HTML(簡單介紹)
1.基本的一些標簽
     1)介紹HTML之前,先介紹下JavaWeb技術(shù):
概念:用于java語言開發(fā)基于互聯(lián)網(wǎng)的項目.
軟件架構(gòu):
  C/S:Client/Server 客戶端/服務(wù)器端
        如:QQ/迅雷等
        優(yōu)點:用戶體驗好
        缺點:開發(fā)/安裝/部署/維護,麻煩
  B/S:Browser/Server 瀏覽器/服務(wù)器端
         通過網(wǎng)址,訪問不同的程序
         優(yōu)點::開發(fā)/安裝/部署/維護 比較簡單
         缺點:大型應用,用戶體驗較差,因為傳輸比較慢,硬件要求過高
B/S架構(gòu)詳解:
    資源分類:
            靜態(tài)資源:基于HTML/JS/CSS等技術(shù),使用靜態(tài)網(wǎng)頁開發(fā)技術(shù)發(fā)布的資源.
              Html超文本標記語言:Hyper text  Markiplanguage簡稱
             
                                               特點:
                                        所有用戶訪問,得到的結(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)頁及時發(fā)布的資源.
                                               特點:
                                        所有用戶訪問,得到的結(jié)果可能不一樣。
                                        如:jsp/servlet,php,asp...
                                        *如果用戶請求的是動態(tài)資源,那么服務(wù)器會執(zhí)行動態(tài)資源,轉(zhuǎn)換為靜態(tài)資源,再發(fā)送給瀏覽器
注意: 我們要學習動態(tài)資源,必須先學習靜態(tài)資源!
                靜態(tài)資源:
                        HTML:用于搭建基礎(chǔ)網(wǎng)頁,展示頁面的內(nèi)容
                        CSS:用于美化頁面,布局頁面
                        JavaScript:控制頁面的元素,讓頁面有一些動態(tài)的效果
       2)HTML和其基本標簽
1.概念:是最基礎(chǔ)的網(wǎng)頁開發(fā)語言
                Hyper Text Markup Language超文本標記語言
                        超文本:
                                超文本是用超鏈接的方法,將各種不同空間的文字信息組織在一起的網(wǎng)狀文本.
                        標記語言:
                                由標簽構(gòu)成的語言。<標簽名稱> 如html,xml
                                標記語言不是編程語言
2.快速入門:
                語法:
                        1.html文檔后綴名 .html 或者.htm
                        2.標簽分為
                                1.圍堵標簽:有開始標簽和結(jié)束標簽。如 <html></html>
                                2.自閉和標簽:開始標簽和結(jié)束標簽在一起。如 <br/>
                                            3.標簽可以嵌套:
                                需要正確嵌套,不能你中有我,我中有你
                                錯誤:<a><b></a></b>
                                正確:<a><b></b></a>
                                             4. 在開始標簽中可以定義屬性。屬性是由鍵值對構(gòu)成,值需要用引號(單雙都可)引起來
                                             5. html的標簽不區(qū)分大小寫,但是建議使用小寫。
HTML標簽:表單標簽
        *表單:
             *概念:用于采集
             *form標簽:用于定義表單的.可以定義一個范圍,范圍代表采集用戶數(shù)據(jù)的范圍.
          *屬性:
             *action:指定提交數(shù)據(jù)的URL
             *method:指定提交方式
                      *分類:一共7種,常用2種:
                get:
                     請求參數(shù)會在地址欄中顯示,會封裝到請求行中
                     請求參數(shù)大小有限制的
                     不太安全
        post:
                     請求參數(shù)不會在地址欄中顯示
                     請求參數(shù)大小沒有限制的
                      較為安全
       表單項中的數(shù)據(jù)要想被提交:必須指定其name屬性.
表單項標簽:
           *input:可以通過type屬性值,改變元素展示樣式
  *type屬性:
         text:文本輸入框,默認值
              placehoder:指定輸入框的提示信息,當輸入的內(nèi)容發(fā)生變化,會
         password:密碼輸入框,
         radio:單選框
                           *注意:
                        1.要想讓多個單選框?qū)崿F(xiàn)單選的效果,則多個單選框的name屬性值必須一樣。
                        2.一般會給每一個單選框提供value屬性,指定其被選中后提交的值
                        3.checked屬性,可以指定默認值

        checkbox:復選框
                          *注意:
                        1.一般會給每一個單選框提供value屬性,指定其被選中后提交的值
                        2.checked屬性,可以指定默認值

         file: 文件選擇框(文件上傳)
         hidden:隱藏域,用于提交一些信息
         submit:提交按鈕,可以提交表單
         button:普通按鈕
         image:圖片提交按鈕
                      *src屬性指定圖片的路徑

         color:取色器
         date:年月日的日歷
         datetime-local:年月日時分秒
         email:郵箱
         number:數(shù)字,如年齡等
*label:指定輸入項的文字描述信息
                       *注意:
                        * label的for屬性一般會和 input 的 id屬性值 對應。如果對應了,則點擊label區(qū)域,會讓input輸入框獲取焦點。

* select屬性 :下拉列表,設(shè)置name屬性
              <option></option>指定列表項
*  textarea屬性:文本域.
                                            *cols:指定列數(shù),每一行有多少個字符
                                *rows:默認多少行


CSS:頁面美化布局控制
1. 概念:Cascading Style Sheets層疊樣式表
                *層疊:多個樣式可以作用在同一個html的元素上,同時生效
2.好處:
                1.功能強大
                2.將內(nèi)容展示和樣式控制分離
                        *降低耦合度。解耦
                        *讓分工協(xié)作更容易
                        *提高開發(fā)效率
        
3.CSS的使用:CSS與html結(jié)合方式
                   1.內(nèi)聯(lián)樣式
                                  *在標簽內(nèi)使用style屬性指定css代碼
                        * 如:<div style="color:red;">hello css</div>
                   2.內(nèi)部樣式
                                  *在head標簽內(nèi),定義style標簽,style標簽的標簽體內(nèi)容就是css代碼
                        *如:
                                <style>
                               div{
                                   color:blue;
                               }
                        
                           </style>
                                <div>hellocss</div>

                   3.外部樣式
                       1.定義css資源文件。
                       2.在head標簽內(nèi),定義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>

總結(jié):
html中三種寫css的方式:
   1.直接在標簽上寫style屬性
   2.在head標簽中直接寫<style>....</style>
   3.在外部定義.css文件,通過<link rel=  />引入外部樣式
優(yōu)先級就近原則,即1>2>3
css語法:
格式:
選擇器{
屬性名1:值;
屬性名2:值;
......
}
*選擇器:篩選具有相似特征的元素
                *注意:
                        *每一對屬性需要使用;隔開,最后一對屬性可以不加;
分類:
基礎(chǔ)選擇器:
   1.id選擇器:選擇具體的id屬性值元素
            *語法:#id屬性值{}
   2.元素選擇器:選擇具有相同標簽名稱的元素
            *語法:標簽名稱{}
            *注意:id選擇器優(yōu)先級高于元素選擇器
   3.類選擇器:選擇具有相同的class屬性值的元素
            *語法:.class屬性值{}
            *注意:類選擇器優(yōu)先級高于元素選擇器
            *class=class屬性值1  class屬性值2   class屬性值3...也是可以的,只是相同設(shè)置只有一個起作用
擴展選擇器:
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:鼠標懸浮狀態(tài)
屬性
                1.字體、文本
                        *font-size:字體大小
                        *color:文本顏色
                        *text-align:對其方式
                        *line-height:行高
                2.背景
                        *background:
                3.邊框
                        *border:設(shè)置邊框,符合屬性
                4.尺寸
                        *width:寬度
                        *height:高度
                5.盒子模型:控制布局
                        *margin:外邊距
                        *padding:內(nèi)邊距
                                *默認情況下內(nèi)邊距會影響整個盒子的大小
                                *box-sizing: border-box; 設(shè)置盒子的屬性,讓width和height就是最終盒子的大小
                                            *float:浮動
                                *left
                                *right



file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image004.jpg

作者:
黑馬程序員JavaEE培訓學院
首發(fā):http://java.itheima.com/

分享到:
在線咨詢 我要報名
和我們在線交談!