JSP程序都是模塊並且具有強大的表達請求(divsentationrequest)功能
建立一個完美的數據庫訪問是一個具有挑戰的過程而JDBC接口能夠很好地完成這一過程
然而嵌入於JSP代碼中的JDBC代碼與SQL命令嵌入在JDBC一樣可以充分利用JSP的功能為客戶端建立一個整潔而簡便的API為了達到這一目的我們可以考慮到使用JSP操作來建立數據庫接口組件
完美的JSP設計模式是ModelViewController (MVC)傳統三層體系為Model為程序邏輯和數據;View為查看;以及Controller為請求處理遵循這一模型一個JSP程序包含客戶端服務器“對話框”的每一“行”的頁面在一個典型的程序中你可以看到一個查詢頁面一個驗證頁面一個數據庫插入頁面一個數據庫更新頁面等等
JDBC設計的JSP操作
JSP數據庫操作的另一方法是在不使用JDBC的情況下為數據庫建立一些操作的集合使用這種方法你可以得到兩種好處
第一你可以消除使用JDBC的必要這就使得很多工作得以簡化;
第二你的設計和代碼的組織更加合理(比如可讀性靈活性以及可維護性)
你仍然需要一些驅動程序但你首先簡化以上的操作JSP程序中的操作都是一些邏輯塊通常被其它的JSP程序開發者編寫和利用但你可以把它們當成子程序來使用使用JSP操作的意義是標准化某些功能以及最大程度地減少嵌入在JSP的Java代碼數量
JSP提供了一套標准擴展的類通過這些類你可以通過一個標簽管理器器(tag handler)定義一個操作這裡有兩個JSP定義的Java接口Tag接口和BodyTag接口分別是由TagSupport類和BodyTagSupport類執行
你可以建立通用JSP用途的一個標簽庫並且你也可以執行標簽管理器(tag handler)以擴展類的支持以下是實現這些過程的步驟
首先執行一個標簽管理器的類
packagecommyactions;
(importstatementsgohere)
publicclassMyActionTagextendsTagSupport{
}
接著編譯這段代碼並將類文件放置在程序的類庫中然後你將需要一個Tag Library Descriptor (TLD)文件這是一個XML文件以匹配你的操作名稱和相應的標簽管理器的類
MyAction
commyactionsMyActionTag
(whatever)
myData
相關的Trialware
DbUtils (Apache Software Foundation)
IBM Informix JDBC Driver (IBM)
MySQL Connector/J (MySQL AB)
SQLX Manager J (MacosGuru)
Informix Downloads (IBM Red Brick Warehouse bit) (Solaris) (IBM)
Informix Downloads (IBM Red Brick Warehouse bit) (HPUX) (IBM)
更多Trialware
假設你已經建立一個名為MyAction的操作這是一個與commyactionsMyActionTag類匹配的TLDTLD文件必須位於程序的TLDs路徑
當你從一個JSP頁調用操作時TLD告訴JSP正確的類以使用操作這就帶來極大的方便而且只需要少量的代碼
但是從何引入SQL?首先你需要建立具有連接功能的數據庫訪問你可以使用javax接口來完成而javax可見於JDBC Optional工具箱JDBC 的javaxsqlDataSource類提供了你所需要的連接
此時SQL位於什麼地方?它在bean中你可以使用JDBCcreateStatement和PreparedStatement在bean中建立一個方法將這一方法成為一個公共的Vector並正確地將你的SQL聲明傳遞到這一方法
總結
你的數據庫bean執行一個嵌入在操作體的SQL語句你可以傳遞一個語句給SQL語句或者使用它來執行一個預先的操作可以通過標簽管理器來執行你的操作由於JDBC被嵌入於庫代碼中你將不能在JSP程序中明確地使用它
初次使用這種方法會覺得它比JDBC中的嵌入SQL以及JSP中的嵌入JDBC更加復雜但是你建立SQL操作並將它們存放在一個TLD你只需做一次在所有的JSP程序中就可以訪問這些操作這就是這種方法的優點
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19988.html