單例模式
一個(gè)類只有一個(gè)實(shí)例,只能被自身實(shí)例化。
配置properties文件:添加driver、url、user、passwor鍵
類本身讀取
//餓漢式:
? ? ? ? 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ù)庫
步驟一:
?1,將數(shù)據(jù)庫的mysql-connector-java-5.0.8-bin.jar文件拷到tomcat安裝目錄下的lib文件夾中。
?2,在Tomcat的conf/context.xml
? 注意:在配置文件中不允許有中文,包括注釋內(nèi)的中文
<!--tomcat中加入數(shù)據(jù)庫驅(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:表示你的連接池的名稱也就是你要訪問連接池的地址
auth:是連接池管理權(quán)屬性,Container表示容器管理
type:是對(duì)象的類型
driverClassName:是數(shù)據(jù)庫驅(qū)動(dòng)的名稱
url:是數(shù)據(jù)庫的地址
username:是登陸數(shù)據(jù)庫的用戶名
password:是登陸數(shù)據(jù)庫的密碼
maxIdle,最大空閑數(shù),數(shù)據(jù)庫連接的最大空閑時(shí)間。超過空閑時(shí)間,數(shù)據(jù)庫連
接將被標(biāo)記為不可用,然后被釋放。設(shè)為0表示無限制。
MaxActive,連接池的最大數(shù)據(jù)庫連接數(shù)。設(shè)為0表示無限制。
maxWait ,最大建立連接等待時(shí)間。如果超過此時(shí)間將接到異常。設(shè)為-1表示
無限制。
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,編寫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");
?? ??? ??? ?/*另一種寫法,兩種方法本質(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,編寫jsp頁面:驗(yàn)證數(shù)據(jù)源連接
關(guān)鍵代碼:
<%
?? ?BaseDao baseDao=new BaseDao();
?? ?Connection conn=baseDao.getConnection2();
%>
<%=conn %>