




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、模塊模塊4 4 用戶(hù)注冊(cè)與登錄的功能實(shí)現(xiàn)用戶(hù)注冊(cè)與登錄的功能實(shí)現(xiàn)項(xiàng)目二 網(wǎng)上商店的用戶(hù)登錄與注冊(cè)功能回顧及作業(yè)點(diǎn)評(píng)請(qǐng)描述什么是JSP內(nèi)置對(duì)象?列舉你知道的JSP內(nèi)置對(duì)象并說(shuō)明其作用請(qǐng)描述一下Cookie與session的區(qū)別?請(qǐng)描述實(shí)現(xiàn)頁(yè)面訪問(wèn)控制的工作流程?預(yù)習(xí)檢查什么是連接池?為什么要使用連接池?什么是JNDI?JNDI可以作什么?什么是JavaBean?在JSP中如何使用JavaBean?使用JNDI獲取數(shù)據(jù)源理解數(shù)據(jù)庫(kù)連接池使用JavaBean封裝業(yè)務(wù)邏輯本章任務(wù)會(huì)使用JNDI查找服務(wù)掌握數(shù)據(jù)庫(kù)連接池原理掌握J(rèn)avaBean的實(shí)際應(yīng)用掌握集成工具M(jìn)yEclipse的使用本章目標(biāo)JNDI
2、介紹什么是什么是JNDIJNDI(Java Naming and Directory Interface,Java命名和目錄接口)命名和目錄接口)是一組在是一組在Java應(yīng)用中訪問(wèn)命名和目錄服務(wù)的應(yīng)用中訪問(wèn)命名和目錄服務(wù)的API通過(guò)名稱(chēng)將資源與服務(wù)進(jìn)行關(guān)聯(lián)通過(guò)名稱(chēng)將資源與服務(wù)進(jìn)行關(guān)聯(lián)JNDI的簡(jiǎn)單應(yīng)用應(yīng)用步驟應(yīng)用步驟修改修改Tomcatconfcontext.xml文件文件使用使用lookup()進(jìn)行查找進(jìn)行查找 /javax.naming.Context提供了查找提供了查找JNDI 的接口的接口Context ctx = new InitialContext();/java:comp/env
3、/為前綴為前綴String testjndi = (String)ctx.lookup(java:comp/env/tjndi);out.println(JNDI: +testjndi);初始化初始化Context對(duì)象對(duì)象調(diào)用調(diào)用lookup()方法方法演示示例:演示示例:JNDI查找查找JNDI查找的名稱(chēng)查找的名稱(chēng)生活中的連接池普通電話普通電話 -建立連接,等待回應(yīng)建立連接,等待回應(yīng)熱線電話熱線電話 -已建立連接已建立連接連接連接已連已連接接開(kāi)始通開(kāi)始通話話開(kāi)始通話開(kāi)始通話已連接,直接通已連接,直接通話話連接連接中中傳統(tǒng)數(shù)據(jù)庫(kù)連接方式的不足每一次請(qǐng)求時(shí)均需要與數(shù)據(jù)庫(kù)進(jìn)行連接,資源占用較多當(dāng)并
4、發(fā)訪問(wèn)數(shù)量較大時(shí),網(wǎng)站速度收到極大影響在訪問(wèn)結(jié)束后必須要關(guān)閉連接釋放資源系統(tǒng)的安全性和穩(wěn)定性相對(duì)較差為什么使用連接池2-1為什么使用連接池2-2 企業(yè)級(jí)開(kāi)發(fā)需要穩(wěn)健和高效的數(shù)據(jù)訪問(wèn)層企業(yè)級(jí)開(kāi)發(fā)需要穩(wěn)健和高效的數(shù)據(jù)訪問(wèn)層完成對(duì)數(shù)據(jù)庫(kù)的完成對(duì)數(shù)據(jù)庫(kù)的CRUD操作操作能夠處理數(shù)據(jù)庫(kù)發(fā)生的各種錯(cuò)誤能夠處理數(shù)據(jù)庫(kù)發(fā)生的各種錯(cuò)誤可以靈活的修改配置可以靈活的修改配置提供方便使用的工具提供方便使用的工具高性能高性能請(qǐng)請(qǐng)求求響響應(yīng)應(yīng)操操作作結(jié)結(jié)果果要求高效、穩(wěn)健要求高效、穩(wěn)健的數(shù)據(jù)訪問(wèn)層的數(shù)據(jù)訪問(wèn)層打開(kāi)連接,打開(kāi)連接,操作數(shù)據(jù)操作數(shù)據(jù)庫(kù),關(guān)閉庫(kù),關(guān)閉連接連接多次重多次重復(fù)操作復(fù)操作傳統(tǒng)的傳統(tǒng)的JDBC已經(jīng)已經(jīng)無(wú)
5、法滿(mǎn)足無(wú)法滿(mǎn)足需求,那需求,那怎么辦呢?怎么辦呢?什么是連接池技術(shù)連接池連接池 連接池是在內(nèi)存中預(yù)設(shè)好一定數(shù)量的連接對(duì)象,以備連接池是在內(nèi)存中預(yù)設(shè)好一定數(shù)量的連接對(duì)象,以備用戶(hù)在進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)直接使用用戶(hù)在進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)直接使用性能性能數(shù)據(jù)庫(kù)連接的建立、斷開(kāi)均由管理池統(tǒng)一管理數(shù)據(jù)庫(kù)連接的建立、斷開(kāi)均由管理池統(tǒng)一管理連接池技術(shù)與傳統(tǒng)數(shù)據(jù)庫(kù)連接的比較連接池技術(shù)與傳統(tǒng)數(shù)據(jù)庫(kù)連接的比較數(shù)據(jù)庫(kù)操作性能得到提升數(shù)據(jù)庫(kù)操作性能得到提升通過(guò)連接池管理數(shù)據(jù)庫(kù)的連接與釋放、提高了系統(tǒng)資通過(guò)連接池管理數(shù)據(jù)庫(kù)的連接與釋放、提高了系統(tǒng)資源的使用效率源的使用效率連接池技術(shù)工作原理 連接池中的連接連接池中的連接想要獲得
6、連接想要獲得連接返回一個(gè)連接返回一個(gè)連接返回一個(gè)已連接返回一個(gè)已連接好的空閑連接好的空閑連接應(yīng)用程序從連接池中獲得連接應(yīng)用程序從連接池中獲得連接連接池是由容器提供的,連接池是由容器提供的,用來(lái)管理池中連接對(duì)象用來(lái)管理池中連接對(duì)象應(yīng)用程序應(yīng)用程序連接池連接池Connection1Connection2Connection3數(shù)據(jù)源簡(jiǎn)介 數(shù)據(jù)源(數(shù)據(jù)源(DataSource)javax.sql.DataSource接口負(fù)責(zé)建立與數(shù)據(jù)庫(kù)的連接接口負(fù)責(zé)建立與數(shù)據(jù)庫(kù)的連接從從Tomcat的數(shù)據(jù)源獲得連接的數(shù)據(jù)源獲得連接把連接保存在連接池中把連接保存在連接池中應(yīng)用程序應(yīng)用程序Connection1Conne
7、ction2Connection3想要獲想要獲得連接得連接返回一返回一個(gè)連接個(gè)連接連接連接池池連接池中的連接對(duì)象連接池中的連接對(duì)象是由誰(shuí)創(chuàng)建的呢?是由誰(shuí)創(chuàng)建的呢?訪問(wèn)數(shù)據(jù)源4-1 如何獲得如何獲得DataSource對(duì)象對(duì)象數(shù)據(jù)源由數(shù)據(jù)源由Tomcat提供,不能在程序中創(chuàng)建實(shí)例提供,不能在程序中創(chuàng)建實(shí)例使用使用JNDI獲得獲得DataSource引用引用應(yīng)用程序應(yīng)用程序jdbc/s1jdbc/s2數(shù)據(jù)源數(shù)據(jù)源數(shù)據(jù)源名稱(chēng)數(shù)據(jù)源名稱(chēng)Connectioncontext.lookup( jdbc/s1 ) import javax.naming.Context;import javax.naming.
8、InitialContext;import javax.naming.NamingException;import javax.sql.DataSource;public class TitlesBean public List getTitles() try Context ic = new InitialContext(); DataSource source = (DataSource)ic.lookup(java:comp/env/jdbc/news); Connection connection = source.getConnection(); titlesQuery = conn
9、ection.prepareStatement(SELECT * FROM titles ); ResultSet results = titlesQuery.executeQuery(); /為為BookBean對(duì)象的屬性賦值對(duì)象的屬性賦值, ,并添加到并添加到titlesList中中 catch (SQLException exception) exception.printStackTrace(); catch (NamingException namingException) namingException.printStackTrace(); finally closeConn();
10、 使用使用JNDI和數(shù)和數(shù)據(jù)源要導(dǎo)入的包據(jù)源要導(dǎo)入的包通過(guò)通過(guò)Context、DataSource獲取獲取Connection對(duì)象對(duì)象分為兩部分分為兩部分java:comp/env為為JavaEE默認(rèn)路徑默認(rèn)路徑j(luò)dbc/news為為DataSource名名定義定義JNDI異常異常訪問(wèn)數(shù)據(jù)源4-2演示示例:如何獲取數(shù)據(jù)源演示示例:如何獲取數(shù)據(jù)源訪問(wèn)數(shù)據(jù)源4-3 Tomcat的的conf/context.xml中的配置中的配置屬性名稱(chēng)說(shuō)明name指定指定Resource的的JNDI名稱(chēng)名稱(chēng)auth指定管理指定管理Resource的的Manager(Container: :由容器創(chuàng)由容器創(chuàng)建和管理
11、建和管理| |Application:由:由Web應(yīng)用創(chuàng)建和管理)應(yīng)用創(chuàng)建和管理)type指定指定Resource所屬的所屬的Java類(lèi)類(lèi)maxActive指定連接池中處于活動(dòng)狀態(tài)的數(shù)據(jù)庫(kù)連接的最大數(shù)目指定連接池中處于活動(dòng)狀態(tài)的數(shù)據(jù)庫(kù)連接的最大數(shù)目maxIdle指定連接池中處于空閑狀態(tài)的數(shù)據(jù)庫(kù)連接的最大數(shù)目指定連接池中處于空閑狀態(tài)的數(shù)據(jù)庫(kù)連接的最大數(shù)目maxWait指定連接池中的連接處于空閑的最長(zhǎng)時(shí)間,超過(guò)這個(gè)指定連接池中的連接處于空閑的最長(zhǎng)時(shí)間,超過(guò)這個(gè)時(shí)間會(huì)拋出異常,取值為時(shí)間會(huì)拋出異常,取值為-1-1,表示可以無(wú)限期等待,表示可以無(wú)限期等待 訪問(wèn)數(shù)據(jù)源4-4 加入數(shù)據(jù)庫(kù)驅(qū)動(dòng)文件加入數(shù)據(jù)庫(kù)
12、驅(qū)動(dòng)文件把數(shù)據(jù)庫(kù)驅(qū)動(dòng)的把數(shù)據(jù)庫(kù)驅(qū)動(dòng)的.jar文件,加入到文件,加入到Tomcat的的commonlib中中應(yīng)用程序的應(yīng)用程序的web.xml文件的配置文件的配置在在web.xml中配置中配置 jdbc/news javax.sql.DataSource Container 指定指定JNDI的名字,與的名字,與元素中的元素中的name一致一致指定引用資源的類(lèi)名,與指定引用資源的類(lèi)名,與元素中的元素中的type一致一致指定管理所引用資源的指定管理所引用資源的Manager與與元素中的元素中的auth一致一致生活中的組件開(kāi)發(fā)小孩的積木小孩的積木 積木塊積木塊組裝組裝成品成品JavaEE組組件件組件間
13、協(xié)組件間協(xié)作作應(yīng)用程序應(yīng)用程序?yàn)槭裁葱枰狫AVABEAN2-1public int saveOrder(String username,String zipcode,String phone, String creditcard,double total) try con = ConnectionManager.getConnction(); String strSql = insert into BookOrder(username,zipcode,phone, + creditcard,total) values(?,?,?,?,?); pStatement = con.prepareSt
14、atement(strSql); pStatement.setString(1, username); /設(shè)置其它參數(shù)值設(shè)置其它參數(shù)值 result = pStatement.executeUpdate(); catch (SQLException sqlE) sqlE.printStackTrace(); return result;參數(shù)過(guò)多參數(shù)過(guò)多,且為對(duì)象屬且為對(duì)象屬性性如何按照如何按照OO設(shè)計(jì)參數(shù)?設(shè)計(jì)參數(shù)?使用使用JavaBean進(jìn)行參數(shù)的傳進(jìn)行參數(shù)的傳遞遞傳統(tǒng)處理處理的業(yè)務(wù)的弊端傳統(tǒng)處理處理的業(yè)務(wù)的弊端為什么需要JAVA BEAN2-2JavaBean的優(yōu)勢(shì)的優(yōu)勢(shì)解決代碼重復(fù)編寫(xiě),
15、減少代碼冗余解決代碼重復(fù)編寫(xiě),減少代碼冗余功能區(qū)分明確,避免業(yè)務(wù)邏輯處理與頁(yè)面顯示處功能區(qū)分明確,避免業(yè)務(wù)邏輯處理與頁(yè)面顯示處理集中在一起造成混亂理集中在一起造成混亂提高了代碼的維護(hù)性提高了代碼的維護(hù)性JAVABEAN及其分類(lèi)符合規(guī)范的符合規(guī)范的Java類(lèi)都類(lèi)都是是JavaBeanJavaBean的分類(lèi)的分類(lèi)封裝數(shù)據(jù)封裝數(shù)據(jù)按照按照OO原則,屬性與數(shù)據(jù)庫(kù)表字段相對(duì)應(yīng)原則,屬性與數(shù)據(jù)庫(kù)表字段相對(duì)應(yīng)屬性私有屬性私有具有具有public的的set/get方法方法封裝業(yè)務(wù)封裝業(yè)務(wù)具有實(shí)現(xiàn)特定功能的方法和方法實(shí)現(xiàn)具有實(shí)現(xiàn)特定功能的方法和方法實(shí)現(xiàn)通常與一個(gè)封裝數(shù)據(jù)的通常與一個(gè)封裝數(shù)據(jù)的JavaBean對(duì)應(yīng)
16、對(duì)應(yīng)封裝數(shù)據(jù)的JAVABEAN2-1public class Comment private String cid; / 用戶(hù)名用戶(hù)名 private String cnid; / 郵郵編編 private String ccontent; / 電話電話 public Comment () public void setCid(String cid) this. cid= cid; public String getCid() return cid; /其它屬性的其它屬性的setter、getter方法方法將屬性聲明為私有屬性將屬性聲明為私有屬性無(wú)參的公有構(gòu)造方法無(wú)參的公有構(gòu)造方法公有的設(shè)置屬
17、性值方法公有的設(shè)置屬性值方法setXxx( )公有的獲取屬性值方法公有的獲取屬性值方法getXxx( )封裝數(shù)據(jù)的封裝數(shù)據(jù)的JavaBean封裝數(shù)據(jù)的JAVABEAN2-2 使用使用Eclipse工具自動(dòng)生成工具自動(dòng)生成getter/setter方法方法封裝業(yè)務(wù)的JAVABEANpublic class CommentControl public int getMaxId() int result = 0; try Connection con = ConnectionManager.getConnction(); String strSql = select max(cid) from comment ; PreparedStatement pStatement = con.prepareStatement(strSql); ResultSet rs = pStatement.executeUpdate(); if(rs.next() result = rs.getInt(1)+1; catch (SQLExce
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京市海淀區(qū)2024-2025學(xué)年高二(上)期末生物試卷(含解析)
- 牛皮燈拆除施工方案
- 單法蘭液位計(jì)施工方案
- 2025年車(chē)手賽前測(cè)試試題及答案
- 2025年制程質(zhì)量經(jīng)理面試題及答案
- 不認(rèn)可專(zhuān)項(xiàng)施工方案
- cme基準(zhǔn)利率預(yù)測(cè)值
- 等離子處理3m膠
- 地震計(jì)算機(jī)技術(shù)預(yù)測(cè)相關(guān)的政策
- androidstudio課程設(shè)計(jì)報(bào)告
- 10以?xún)?nèi)加減法口算題(13套100道題直接打印)
- 光伏電站事故處理規(guī)程
- 十年免還協(xié)議合同
- 中國(guó)建筑三鐵六律行為安全準(zhǔn)則培訓(xùn)ppt
- 新人教版(新插圖)五年級(jí)下冊(cè)數(shù)學(xué) 第4單元 分?jǐn)?shù)的意義和性質(zhì)單元測(cè)試卷(含答案)
- 大型商場(chǎng)消防系統(tǒng)維保實(shí)施方案
- 動(dòng)物的運(yùn)動(dòng)教案人教版生物八年級(jí)上冊(cè)
- 斷橋門(mén)聯(lián)窗施工方案
- (2023版)高中化學(xué)新課標(biāo)知識(shí)考試題庫(kù)大全(含答案)
- 北師大三年級(jí)數(shù)學(xué)下冊(cè)計(jì)算練習(xí)(每天20道)
- 兒童聽(tīng)力障礙現(xiàn)狀分析與聽(tīng)力康復(fù)的中期報(bào)告
評(píng)論
0/150
提交評(píng)論