從服務器端促進程序快速開發的Java Server Pages (JSP)決定它成為一種廣為流行的工具雖然呆板的一面仍然存在然而無論它包含多少缺點JSP能夠為Web程序設計者提供很多東西尤其是與數據庫的輸入和輸出操作與數據的處理
通過JSP來進行數據庫訪問不需要太多的引導問題是如何使開發者能夠接受Web程序的數據庫訪問比傳統的本地OLAP系統的數據庫訪問更加具有吸引力並且使他們認識到整潔和簡要的數據訪問方法才是關鍵的在這一點上JSP可以很好地解決
你能夠做哪些?
如果你正在編寫高數據量數據密度大的Web程序時你的數據庫訪問應該具備哪一方面的要求?如果你正在使用JSP那麼你必須處理大量的服務器端的數據程序也許需要大量的數據或者很多用戶或者這二者的結合你所考慮的可能范圍還會包括性能的優化可檢測性每一用戶的多個查詢的影響查詢的復雜性以及當單一的會話處理大量數據時高等級的類型轉換
這其中包含大規模的處理但是JSP能夠幫助你很好地處理因為它能夠與Java Database Connectivity API (JDBC)很好的兼容你可以將JDBC包含在JSP代碼中並且JDBC能夠傳遞聲明執行類似數據庫的命令只要你能夠正確地使用JDBC驅動程序
開始
這裡是一個通常的抽象的JSP程序執行的體系首選的JSP設計模式為模型視圖控制器(MVCModelViewController)即傳統三層體系的一種變異以更好的適合於服務器程序在JSP的MVC設計模式中Model指的是程序的邏輯與數據View為查看以及Controller為請求處理
當你設計一個JSP程序時在客戶端與服務器交互之間建立第一步驟的頁面這是最好的一個過程例如在一個典型程序中在數據交換中的每一個特定步驟都會有頁面一個數據入口頁面一個驗證請求頁面一個數據庫響應頁面以及這些頁面的子頁面(一個更改記錄的頁面一個刪除記錄的頁面等等)
你可以將JDBC嵌入到每一頁面中以完成被請求的數據庫操作然而這一操作也會冒很大的風險因為由於混合了JSP和JDBC而混合了整個程序──JDBC是基於SQL這也就是SQL被封裝在JDBC而JDBC也被封裝在JSP──這也足夠讓你暈頭轉向的如果你選擇這一方法你將會獲得你想要的功能但一定要保證你的程序邏輯與數據庫訪問代碼的關系非常清晰這一點格外小心
嵌入式JDBC
JDBC API不會直接地與數據庫進行交流其中的驅動程序完成的實際的連接你可以在賣方的Web站點上下載這些驅動程序除此之外還有四種JDBC的驅動程序類型如果你決定使用JDBC你需要正確地選擇最為適合你需要的那種類型你將使用一個DriverManager類來處理基於驅動程序的連接
你可以使用一個名為getConnection的DriverManager方法來建立你的數據庫連接你還可以使用它的URL參數來識別數據庫
public static Connection getConnection(jdbc:odbc:nameOfDatabase)
現在告訴DriverManager有關驅動程序的信息(應該在你的classpath中)
ClassforName(“sunjdbcodbcnameOfJDBCDriver”);
你已經將數據庫連接到JSP程序但你仍然不能夠執行一個數據庫命令解決這一點你可以在JSP代碼中生成聲明以建立數據庫命令如下所示
public Statement createStatement(intresultSetType intresultSetConcurrency)
其中的參數能夠讓你控制從數據庫查詢得到的結果當使用第一個參數時可以在程序中看到結果;當使用第二個參數時你可以通過查詢來更新數值(這是一個難以相信的功能在以後的文章中值得進一步討論)
表A
?tag=sc#Listing
AListing A顯示列舉了下兩種方法的復雜性
聲明(Statement)就是SQ
L命令PreparedStatement就是SQL的聲明你可以通過其中的參數來控制程序的過程CallableStatement是用於訪問SQL存儲程序你是否開始意識到如果你沒有看到這些說明你是否覺得這些聲明很復雜?請注意到通過調用rollback方法你可以撤除交易過程
如果你想完全使用這些數據庫訪問的方法你唯一遺漏的還有
ResultSetexecuteQuery(string sqlQuery)
(你可以使用executeQuery來完成以上過程你也可以使用一個executeUpdate來完成更新插入和刪除)你以上的聲明接口使你可以使用一些方法來執行SQL聲明ResultSet所做的就是訪問從查詢得到的數據所以你可以在JSP程序中使用這些數據
通過將JSP程序分解成單一的功能明顯的頁面以及在任何給定頁面中執行一個單一的數據庫操作可以很大程度地簡化你的數據庫操作以及建立可以用於以後程序開發的頁面即使你將SQL嵌入到這些頁面的JDBC中
但是你還可以做更多的事情以使得你的JSP數據庫訪問更加整潔和容易維護在JSP代碼中嵌入JDBC以及通過發送SQL命令與數據庫通訊這些過程都很好但是它要求在不能增加代碼復雜程度下建立通過接口的SQL命令的程序當你的SQL處理需要提高靈活性的時候你可以進一步地分離你的數據庫接口代碼以清潔你的JSP程序
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19981.html