單例模式
一個(gè)類(lèi)只有一個(gè)實(shí)例君编,只能被自身實(shí)例化。
配置properties文件:添加driver川慌、url吃嘿、user祠乃、passwor鍵
類(lèi)本身讀取
//餓漢式:
? ? ? ? public class Singleton{
? ? ? ? ? ? private static Singleton singleton = new Singleton ();
? ? ? ? ? ? private Singleton (){}
? ? ? ? ? ? public static Singleton getInstance(){return singletion;}
? ? ? }
//懶漢式:
? ? ? public class Singleton{
? ? ? ? ? ? private static Singleton singleton = null;
? ? ? ? ? ? public static synchronized Singleton getInstance(){
? ? ? ? ? ? ? ? if(singleton==null){
? ? ? ? ? ? ? ? ? ? singleton = new Singleton();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return singleton;
? ? ? ? ? ? }
? ? ? }
配置數(shù)據(jù)源—讀取數(shù)據(jù)源連接數(shù)據(jù)庫(kù)
步驟一:
?1,將數(shù)據(jù)庫(kù)的mysql-connector-java-5.0.8-bin.jar文件拷到tomcat安裝目錄下的lib文件夾中。
?2兑燥,在Tomcat的conf/context.xml
? 注意:在配置文件中不允許有中文亮瓷,包括注釋內(nèi)的中文
<!--tomcat中加入數(shù)據(jù)庫(kù)驅(qū)動(dòng)文件-->
auth="Container"? type="javax.sql.DataSource"? maxActive="100"?
maxIdle="30" maxWait="10000" username="root"? password="root"?
driverClassName="com.mysql.jdbc.Driver"?
????????????? url="jdbc:mysql://localhost:3306/mydb2"/>
其中:
name:表示你的連接池的名稱也就是你要訪問(wèn)連接池的地址
auth:是連接池管理權(quán)屬性,Container表示容器管理
type:是對(duì)象的類(lèi)型
driverClassName:是數(shù)據(jù)庫(kù)驅(qū)動(dòng)的名稱
url:是數(shù)據(jù)庫(kù)的地址
username:是登陸數(shù)據(jù)庫(kù)的用戶名
password:是登陸數(shù)據(jù)庫(kù)的密碼
maxIdle降瞳,最大空閑數(shù)嘱支,數(shù)據(jù)庫(kù)連接的最大空閑時(shí)間。超過(guò)空閑時(shí)間挣饥,數(shù)據(jù)庫(kù)連
接將被標(biāo)記為不可用除师,然后被釋放。設(shè)為0表示無(wú)限制亮靴。
MaxActive馍盟,連接池的最大數(shù)據(jù)庫(kù)連接數(shù)。設(shè)為0表示無(wú)限制茧吊。
maxWait 贞岭,最大建立連接等待時(shí)間。如果超過(guò)此時(shí)間將接到異常搓侄。設(shè)為-1表示
無(wú)限制瞄桨。
3,配置應(yīng)用程序的web.xml文件(可選)
?? ?<resource-ref>
?? ??? ?<res-ref-name>jdbc/news</res-ref-name>
?? ??? ?<res-type>javax.sql.DataSource</res-type>
?? ??? ?<res-auth>Container</res-auth>
?? ?</resource-ref>
步驟二:
1讶踪,編寫(xiě)java代碼芯侥,獲取與邏輯名相關(guān)聯(lián)的數(shù)據(jù)源對(duì)象?
public Connection getConnection2() {
?? ??? ?try {
?? ??? ??? ?//初始化上下文
?? ??? ??? ?Context cxt=new InitialContext();
?? ??? ??? ?//獲取與邏輯名相關(guān)聯(lián)的數(shù)據(jù)源對(duì)象
?? ??? ??? ?//是環(huán)境命名上下文(environment naming context(ENC)
?? ??? ??? ?Context ctx2=(Context) cxt.lookup("java:comp/env");
?? ??? ??? ?DataSource ds=(DataSource) ctx2.lookup("jdbc/news");
?? ??? ??? ?/*另一種寫(xiě)法,兩種方法本質(zhì)是不一樣的
?? ??? ??? ? * DataSource ds=(DataSource)cxt.lookup("java:comp/env/jdbc/news");
?? ??? ??? ?*/
?? ??? ??? ?conn=ds.getConnection();
?? ??? ?} catch (NamingException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?} catch (SQLException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?return conn;
?? ?}
步驟三:
??? 1乳讥,編寫(xiě)jsp頁(yè)面:驗(yàn)證數(shù)據(jù)源連接
關(guān)鍵代碼:
<%
?? ?BaseDao baseDao=new BaseDao();
?? ?Connection conn=baseDao.getConnection2();
%>
<%=conn %>