時(shí)間:2015/6/28來(lái)源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評(píng)論(0)
從服務(wù)器端促進(jìn)程序快速開(kāi)發(fā)的java Server Pages (JSP)決定它成為一種廣為流行的工具。雖然呆板的一面仍然存在,然而無(wú)論它包含多少缺點(diǎn),JSP能夠?yàn)閃eb程序設(shè)計(jì)者提供很多東西,尤其是與數(shù)據(jù)庫(kù)的輸入和輸出操作與數(shù)據(jù)的處理。
通過(guò)JSP來(lái)進(jìn)行數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)不需要太多的引導(dǎo)。問(wèn)題是如何使開(kāi)發(fā)者能夠接受Web程序的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)比傳統(tǒng)的本地OLAP系統(tǒng)的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)更加具有吸引力,并且使他們認(rèn)識(shí)到,整潔和簡(jiǎn)要的數(shù)據(jù)訪(fǎng)問(wèn)方法才是關(guān)鍵的。在這一點(diǎn)上,JSP可以很好地解決。
你能夠做哪些?
如果你正在編寫(xiě)高數(shù)據(jù)量、數(shù)據(jù)密度大的Web程序時(shí),你的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)應(yīng)該具備哪一方面的要求?如果你正在使用JSP,那么你必須處理大量的服務(wù)器端的數(shù)據(jù)。程序也許需要大量的數(shù)據(jù),或者很多用戶(hù),或者這二者的結(jié)合。你所考慮的可能范圍還會(huì)包括:性能的優(yōu)化,可檢測(cè)性,每一用戶(hù)的多個(gè)查詢(xún)的影響,查詢(xún)的復(fù)雜性,以及當(dāng)單一的會(huì)話(huà)處理大量數(shù)據(jù)時(shí),高等級(jí)的類(lèi)型轉(zhuǎn)換。
這其中包含大規(guī)模的處理。但是,JSP能夠幫助你很好地處理,因?yàn)樗軌蚺cJava Database Connectivity API (JDBC)很好的兼容。你可以將JDBC包含在JSP代碼中,并且JDBC能夠傳遞聲明執(zhí)行類(lèi)似數(shù)據(jù)庫(kù)的命令,只要你能夠正確地使用JDBC驅(qū)動(dòng)程序。
開(kāi)始
這里是一個(gè)通常的、抽象的JSP程序執(zhí)行的體系。首選的JSP設(shè)計(jì)模式為模型-視圖-控制器(MVCModel-View-Controller),即傳統(tǒng)三層體系的一種變異,以更好的適合于服務(wù)器程序。在JSP的MVC設(shè)計(jì)模式中,Model指的是程序的邏輯與數(shù)據(jù),View為查看,以及Controller為請(qǐng)求處理。
當(dāng)你設(shè)計(jì)一個(gè)JSP程序時(shí),在客戶(hù)端與服務(wù)器交互之間建立第一步驟的頁(yè)面,這是最好的一個(gè)過(guò)程。例如,在一個(gè)典型程序中,在數(shù)據(jù)交換中的每一個(gè)特定步驟都會(huì)有頁(yè)面:一個(gè)數(shù)據(jù)入口頁(yè)面,一個(gè)驗(yàn)證請(qǐng)求頁(yè)面,一個(gè)數(shù)據(jù)庫(kù)響應(yīng)頁(yè)面,以及這些頁(yè)面的子頁(yè)面(一個(gè)更改記錄的頁(yè)面,一個(gè)刪除記錄的頁(yè)面,等等)。
你可以將JDBC嵌入到每一頁(yè)面中,以完成被請(qǐng)求的數(shù)據(jù)庫(kù)操作。然而,這一操作也會(huì)冒很大的風(fēng)險(xiǎn),因?yàn)橛捎诨旌狭薐SP和JDBC而混合了整個(gè)程序──JDBC是基于SQL。這也就是SQL被封裝在JDBC,而JDBC也被封裝在JSP──這也足夠讓你暈頭轉(zhuǎn)向的。如果你選擇這一方法,你將會(huì)獲得你想要的功能,但一定要保證你的程序邏輯與數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)代碼的關(guān)系非常清晰,這一點(diǎn)格外小心。
嵌入式JDBC
JDBC API不會(huì)直接地與數(shù)據(jù)庫(kù)進(jìn)行交流。其中的驅(qū)動(dòng)程序完成的實(shí)際的連接,你可以在賣(mài)方的Web站點(diǎn)上下載這些驅(qū)動(dòng)程序。除此之外,還有四種JDBC的驅(qū)動(dòng)程序類(lèi)型,如果你決定使用JDBC,你需要正確地選擇最為適合你需要的那種類(lèi)型。你將使用一個(gè)DriverManager類(lèi)來(lái)處理基于驅(qū)動(dòng)程序的連接。
你可以使用一個(gè)名為getconnection的DriverManager方法來(lái)建立你的數(shù)據(jù)庫(kù)連接。你還可以使用它的URL參數(shù)來(lái)識(shí)別數(shù)據(jù)庫(kù):
public static Connection getConnection(jdbc:odbc:nameOfDatabase)
現(xiàn)在,告訴DriverManager有關(guān)驅(qū)動(dòng)程序的信息(應(yīng)該在你的classpath中):
Class.forName("sun.jdbc.odbc.nameOfJDBCDriver");
你已經(jīng)將數(shù)據(jù)庫(kù)連接到JSP程序,但你仍然不能夠執(zhí)行一個(gè)數(shù)據(jù)庫(kù)命令。解決這一點(diǎn),你可以在JSP代碼中生成聲明以建立數(shù)據(jù)庫(kù)命令,如下所示:
public Statement createStatement(intresultSetType, intresultSetConcurrency)
其中的參數(shù)能夠讓你控制從數(shù)據(jù)庫(kù)查詢(xún)得到的結(jié)果。當(dāng)使用第一個(gè)參數(shù)時(shí),可以在程序中看到結(jié)果;當(dāng)使用第二個(gè)參數(shù)時(shí),你可以通過(guò)查詢(xún)來(lái)更新數(shù)值(這是一個(gè)難以相信的功能,在以后的文章中值得進(jìn)一步討論)。
表A
https://builder.com.com/5100-6387-5172666.html?tag=sc#Listing
AListing A顯示列舉了下兩種方法的復(fù)雜性。
聲明(Statement)就是SQL命令。PreparedStatement就是SQL的聲明,你可以通過(guò)其中的參數(shù)來(lái)控制程序的過(guò)程。CallableStatement是用于訪(fǎng)問(wèn)SQL存儲(chǔ)程序。你是否開(kāi)始意識(shí)到,如果你沒(méi)有看到這些說(shuō)明,你是否覺(jué)得這些聲明很復(fù)雜?請(qǐng)注意到,通過(guò)調(diào)用rollback方法,你可以撤除交易過(guò)程。
如果你想完全使用這些數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)的方法,你唯一遺漏的還有:
ResultSetexecuteQuery(string sqlQuery)
(你可以使用executeQuery來(lái)完成以上過(guò)程。你也可以使用一個(gè)executeUpdate來(lái)完成更新、插入和刪除)。你以上的聲明接口使你可以使用一些方法來(lái)執(zhí)行SQL聲明。ResultSet所做的就是訪(fǎng)問(wèn)從查詢(xún)得到的數(shù)據(jù),所以你可以在JSP程序中使用這些數(shù)據(jù)。
通過(guò)將JSP程序分解成單一的、功能明顯的頁(yè)面,以及在任何給定頁(yè)面中執(zhí)行一個(gè)單一的數(shù)據(jù)庫(kù)操作,可以很大程度地簡(jiǎn)化你的數(shù)據(jù)庫(kù)操作,以及建立可以用于以后程序開(kāi)發(fā)的頁(yè)面,即使你將SQL嵌入到這些頁(yè)面的JDBC中。
但是你還可以做更多的事情,以使得你的JSP數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)更加整潔和容易維護(hù)。在JSP代碼中嵌入JDBC,以及通過(guò)發(fā)送SQL命令與數(shù)據(jù)庫(kù)通訊,這些過(guò)程都很好。但是,它要求在不能增加代碼復(fù)雜程度下,建立通過(guò)接口的SQL命令的程序。當(dāng)你的SQL處理需要提高靈活性的時(shí)候,你可以進(jìn)一步地分離你的數(shù)據(jù)庫(kù)接口代碼,以清潔你的JSP程序。
關(guān)鍵詞標(biāo)簽:JSP,數(shù)據(jù)庫(kù)
相關(guān)閱讀
熱門(mén)文章 eclipse中如何設(shè)置字體大小_eclipse字體大小
人氣排行 JS驗(yàn)證日期格式是否正確Java中3DES加密解密調(diào)用示例Java技術(shù)-J2EE開(kāi)發(fā)日記-MyEclipse快捷鍵與插件大全用Java刪除文件夾里的所有文件JavaScript基本語(yǔ)法-常量和變量C#中的空值的判斷JAVA實(shí)現(xiàn)屏幕抓圖 遠(yuǎn)程桌面控制100多個(gè)很有用的JavaScript函數(shù)以及基礎(chǔ)寫(xiě)法匯總