資源描述:
《用jsp訪問電子商務網(wǎng)站數(shù)據(jù)庫 》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、用JSP訪問電子商務網(wǎng)站數(shù)據(jù)庫[摘要]高效的icrosoftSQLServer,MySQL和MSAccess等各種數(shù)據(jù)庫?! avaBean技術(shù)是一種可重復使用且跨平臺的軟件組件,它為軟件開發(fā)者提供了一種極佳的解決方案,使他們可以利用JavaBean技術(shù)封裝事務邏輯,很好地實現(xiàn)業(yè)務邏輯和客戶端操作的分離,使系統(tǒng)具有更好的靈活性和適用性。其工作原理是將數(shù)據(jù)庫的基本操作邏輯封裝在JavaBean包中,通過JSP調(diào)用JavaBean來實現(xiàn)數(shù)據(jù)庫的連接。首先將用Java編寫的數(shù)據(jù)庫連接和對數(shù)據(jù)庫的基本操作的程序編譯,生成*.class文件,然后就可以通過J
2、SP調(diào)用JavaBean來實現(xiàn)數(shù)據(jù)庫的操作。使用JavaBean提高了代碼的重用程度,簡化了程序設(shè)計的復雜度?! ?.連接池技術(shù) 雖然JDBC(JavaBean)作為一種數(shù)據(jù)庫訪問技術(shù)具有諸多優(yōu)點,但在電子商務網(wǎng)站中,當有大量的用戶同時訪問時,采用此種技術(shù)反而會使系統(tǒng)性能下降。為了解決這一問題,在JSP中,把連接池技術(shù)和JDBC(JavaBean)結(jié)合起來使用。 連接池(ConnectionPool)就是眾多連接對象的“緩沖存儲池”,也就是連接對象的集合體。連接池負責管理數(shù)據(jù)庫連接的建立、釋放和調(diào)度。事前連接池先建立若干個連接,放置在內(nèi)存對象
3、中,當有數(shù)據(jù)庫訪問請求時,不需要執(zhí)行連接數(shù)據(jù)庫的操作,只需從連接池的空閑隊列中取用連接;數(shù)據(jù)庫訪問完成后,將連接放回連接池中,供其他數(shù)據(jù)庫操作時復用連接池中的連接。應用連接池技術(shù)極大地減少了連接和關(guān)閉數(shù)據(jù)庫的操作,非常顯著地提高了系統(tǒng)性能?! ∪⑦B接池實例 本例建立的數(shù)據(jù)庫連接池,可以高效地實現(xiàn)多用戶并發(fā)對數(shù)據(jù)庫的訪問,數(shù)據(jù)庫使用的是Oracle?! ublicclassMyConPool{ privateStringdriver="oracle.jdbc.driver.OracleDriver"; privateStringurl
4、="jdbc:oracle:thin:DBServer:1521:OraDB"; privateStringuser=""; privateStringpass=3;//連接池初始化時的連接數(shù) privateintincrementConNum=2; publicintActiveCon=0;//當前正使用的連接數(shù) publicVectorPool=nepleDateFormatformatter=nepleDateFormat("yyyy-MM-ddHH:mm:ss"); java.util.DatecurrentTime-1=nee=
5、formatter.format(currentTime-1); //初始化initiateConNum個數(shù)據(jù)庫連接 publicsynchronizedvoidinitiatePool(){ addConnection(initiateConNum); }//獲得數(shù)據(jù)庫連接 publicsynchronizedConnectiongetConnection()throentAt(0); //取連接池中空閑連接 Pool.removeElementAt(0); …//判斷連接的有效性 } elseif(ActiveConConMa
6、x){ addConnection(incrementConNum); conn=getConnection(); } elseif(ActiveCon==ConMax){ returnConnection((Connection)Pool.firstElement()); conn=getConnection(); } …//判斷conn是否為空,若不空則ActiveCon加1 return(conn);} //創(chuàng)建新的數(shù)據(jù)庫連接 privateConnectioncreateConnection(){ Connection
7、conn=null; conn=DriverManager.getConnection(url,user,pass個空閑連接 publicsynchronizedvoidaddConnection(intconnum){ … for(inti=0;iconnum;i){ Connectionconn=createConnection(); if(conn!=null) Pool.addElement(conn);}//初始化了的連接保存到連接池中 … } //釋放一個數(shù)據(jù)庫連接,并把該連接保存到連接池中 publicsynchr
8、onizedvoidreturnConnection(Connectionconn){ Pool.addE