fkjava

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            49 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

           

              從服務(wù)器端促進程序快速開發(fā)的Java Server Pages JSP)決定它成為一種廣為流行的工具。雖然呆板的一面仍然存在,然而無論它包含多少缺點,JSP能夠為Web程序設(shè)計者提供很多東西,尤其是與數(shù)據(jù)庫的輸入和輸出操作與數(shù)據(jù)的處理。

             

              通過JSP來進行數(shù)據(jù)庫訪問不需要太多的引導(dǎo)。問題是如何使開發(fā)者能夠接受Web程序的數(shù)據(jù)庫訪問比傳統(tǒng)的本地OLAP系統(tǒng)的數(shù)據(jù)庫訪問更加具有吸引力,并且使他們認(rèn)識到,整潔和簡要的數(shù)據(jù)訪問方法才是關(guān)鍵的。在這一點上,JSP可以很好地解決。

             

              你能夠做哪些?

             

              如果你正在編寫高數(shù)據(jù)量、數(shù)據(jù)密度大的Web程序時,你的數(shù)據(jù)庫訪問應(yīng)該具備哪一方面的要求?如果你正在使用JSP,那么你必須處理大量的服務(wù)器端的數(shù)據(jù)。程序也許需要大量的數(shù)據(jù),或者很多用戶,或者這二者的結(jié)合。你所考慮的可能范圍還會包括:性能的優(yōu)化,可檢測性,每一用戶的多個查詢的影響,查詢的復(fù)雜性,以及當(dāng)單一的會話處理大量數(shù)據(jù)時,高等級的類型轉(zhuǎn)換。

             

              這其中包含大規(guī)模的處理。但是,JSP能夠幫助你很好地處理,因為它能夠與Java Database Connectivity API JDBC)很好的兼容。你可以將JDBC包含在JSP代碼中,并且JDBC能夠傳遞聲明執(zhí)行類似數(shù)據(jù)庫的命令,只要你能夠正確地使用JDBC驅(qū)動程序。

             

              開始

             

              這里是一個通常的、抽象的JSP程序執(zhí)行的體系。首選的JSP設(shè)計模式為模型-視圖-控制器(MVCModel-View-Controller),即傳統(tǒng)三層體系的一種變異,以更好的適合于服務(wù)器程序。在JSPMVC設(shè)計模式中,Model指的是程序的邏輯與數(shù)據(jù),View為查看,以及Controller為請求處理。

             

              當(dāng)你設(shè)計一個JSP程序時,在客戶端與服務(wù)器交互之間建立第一步驟的頁面,這是最好的一個過程。例如,在一個典型程序中,在數(shù)據(jù)交換中的每一個特定步驟都會有頁面:一個數(shù)據(jù)入口頁面,一個驗證請求頁面,一個數(shù)據(jù)庫響應(yīng)頁面,以及這些頁面的子頁面(一個更改記錄的頁面,一個刪除記錄的頁面,等等)。

             

              你可以將JDBC嵌入到每一頁面中,以完成被請求的數(shù)據(jù)庫操作。然而,這一操作也會冒很大的風(fēng)險,因為由于混合了JSPJDBC而混合了整個程序──JDBC是基于SQL.這也就是SQL被封裝在JDBC,JDBC也被封裝在JSP──這也足夠讓你暈頭轉(zhuǎn)向的。如果你選擇這一方法,你將會獲得你想要的功能,但一定要保證你的程序邏輯與數(shù)據(jù)庫訪問代碼的關(guān)系非常清晰,這一點格外小心。

             

              嵌入式JDBC

             

              JDBC API不會直接地與數(shù)據(jù)庫進行交流。其中的驅(qū)動程序完成的實際的連接,你可以在賣方的Web站點上下載這些驅(qū)動程序。除此之外,還有四種JDBC的驅(qū)動程序類型,如果你決定使用JDBC,你需要正確地選擇最為適合你需要的那種類型。你將使用一個DriverManager類來處理基于驅(qū)動程序的連接。

             

              你可以使用一個名為getConnectionDriverManager方法來建立你的數(shù)據(jù)庫連接。你還可以使用它的URL參數(shù)來識別數(shù)據(jù)庫:

             

              public static Connection getConnectionjdbc:odbc:nameOfDatabase

             

              現(xiàn)在,告訴DriverManager有關(guān)驅(qū)動程序的信息(應(yīng)該在你的classpath中):

             

              Class.forName(“sun.jdbc.odbc.nameOfJDBCDriver”);

             

              你已經(jīng)將數(shù)據(jù)庫連接到JSP程序,但你仍然不能夠執(zhí)行一個數(shù)據(jù)庫命令。解決這一點,你可以在JSP代碼中生成聲明以建立數(shù)據(jù)庫命令,如下所示:

             

              public Statement createStatementintresultSetType, intresultSetConcurrency

             

              其中的參數(shù)能夠讓你控制從數(shù)據(jù)庫查詢得到的結(jié)果。當(dāng)使用第一個參數(shù)時,可以在程序中看到結(jié)果;當(dāng)使用第二個參數(shù)時,你可以通過查詢來更新數(shù)值(這是一個難以相信的功能,在以后的文章中值得進一步討論)。

             

              A

             

              C#Listing">http://builder.com.com/5100-6387-5172666.html?tag=sC#Listing

             

              AListing A顯示列舉了下兩種方法的復(fù)雜性。

             

              聲明(Statement)就是SQL命令。PreparedStatement就是SQL的聲明,你可以通過其中的參數(shù)來控制程序的過程。CallableStatement是用于訪問SQL存儲程序。你是否開始意識到,如果你沒有看到這些說明,你是否覺得這些聲明很復(fù)雜?請注意到,通過調(diào)用rollback方法,你可以撤除交易過程。

             

              如果你想完全使用這些數(shù)據(jù)庫訪問的方法,你唯一遺漏的還有:

             

              ResultSetexecuteQuerystring sqlQuery

             

              (你可以使用executeQuery來完成以上過程。你也可以使用一個executeUpdate來完成更新、插入和刪除)。你以上的聲明接口使你可以使用一些方法來執(zhí)行SQL聲明。ResultSet所做的就是訪問從查詢得到的數(shù)據(jù),所以你可以在JSP程序中使用這些數(shù)據(jù)。

             

              通過將JSP程序分解成單一的、功能明顯的頁面,以及在任何給定頁面中執(zhí)行一個單一的數(shù)據(jù)庫操作,可以很大程度地簡化你的數(shù)據(jù)庫操作,以及建立可以用于以后程序開發(fā)的頁面,即使你將SQL嵌入到這些頁面的JDBC中。

             

          但是你還可以做更多的事情,以使得你的JSP數(shù)據(jù)庫訪問更加整潔和容易維護。在JSP代碼中嵌入JDBC,以及通過發(fā)送SQL命令與數(shù)據(jù)庫通訊,這些過程都很好。但是,它要求在不能增加代碼復(fù)雜程度下,建立通過接口的SQL命令的程序。當(dāng)你的SQL處理需要提高靈活性的時候,你可以進一步地分離你的數(shù)據(jù)庫接口代碼,以清潔你的JSP程序。

           

               您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org

               信息咨詢:Q564205990            星老師

          posted on 2012-08-17 13:13 瘋狂軟件 閱讀(147) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 元阳县| 平凉市| 襄城县| 久治县| 太仆寺旗| 如皋市| 延川县| 安陆市| 屏南县| 衡阳市| 平塘县| 宾川县| 儋州市| 嘉黎县| 咸丰县| 武功县| 茌平县| 拉萨市| 象山县| 松桃| 博白县| 鹤岗市| 都安| 治县。| 乐亭县| 同德县| 诸城市| 梁河县| 溧水县| 余庆县| 化隆| 绥中县| 福贡县| 宜兰县| 青岛市| 凤山县| 马龙县| 乐山市| 临潭县| 乌苏市| 广德县|