加快JDBC設計中JSP訪問資料庫

來源:互聯網
上載者:User
js|訪問|設計|資料|資料庫


    以前,我們已經提到,JSP程式都是模組,並且具有強大的表達-請求(presentation-request)功能。建立一個完美的資料庫訪問是一個具有挑戰的過程,而JDBC介面能夠很好地完成這一過程。然而,嵌入於JSP代碼中的JDBC代碼,與SQL命令嵌入在JDBC一樣,可以充分利用JSP的功能,為用戶端建立一個整潔而簡便的API。為了達到這一目的,我們可以考慮到使用JSP操作來建立資料庫介面組件。

 
    完美的JSP設計模式是Model-View-Controller (MVC)。傳統三層體係為:Model為程式邏輯和資料;View為查看;以及Controller為請求處理。遵循這一模型,一個JSP程式包含用戶端-伺服器“對話方塊”的每一“行”的頁面。在一個典型的程式中,你可以看到一個查詢頁面,一個驗證頁面,一個資料庫插入頁面,一個資料庫更新頁面,等等。

在上一篇的文章中,我們討論到如何在每一頁面中嵌入JDBC,以保證程式的結構更加合理。然而,建立可執行檔SQL命令,正如變數通過JDBC命令而傳遞一樣,也有可能會增加程式的複雜性。

JDBC設計的JSP操作
JSP資料庫操作的另一方法是,在不使用JDBC的情況下為資料庫建立一些操作的集合。使用這種方法,你可以得到兩種好處:第一,你可以消除使用JDBC的必要,這就使得很多工作得以簡化;第二,你的設計和代碼的組織更加合理(比如可讀性,靈活性,以及可維護性)。

你仍然需要一些驅動程式,但你首先簡化以上的操作。JSP程式中的操作都是一些邏輯塊,通常被其它的JSP程式開發人員編寫和利用,但你可以把它們當成子程式來使用。使用JSP操作的意義是標準化某些功能,以及最大程度地減少嵌入在JSP的Java代碼數量。

JSP提供了一套標準擴充的類。通過這些類,你可以通過一個標籤管理器器(tag handler)定義一個操作。這裡有兩個JSP定義的Java介面:Tag介面和BodyTag介面,分別是由TagSupport類和BodyTagSupport類執行。

你可以建立通用JSP用途的一個標籤庫,並且你也可以執列標籤管理器(tag handler)以擴充類的支援。以下是實現這些過程的步驟。

首先,執行一個標籤管理器的類:

packagecom.myactions;
 
(import statements go here)
 
public class MyActionTag extends TagSupport {
       ...
       }

接著,編譯這段代碼,並將類檔案放置在程式的類庫中。然後,你將需要一個Tag Library Descriptor (TLD)檔案,這是一個XML檔案,以匹配你的操作名稱和相應的標籤管理器的類。

<tag>
       <name>MyAction</name>
       <tagclass>com.myactions.MyActionTag</tagclass>
       <bodycontent> (whatever)  </bodycontent>
       <attribute>myData</attribute>
</tag>

</tag>

相關的Trialware

  • DbUtils (Apache Software Foundation)
  • IBM Informix JDBC Driver (IBM)
  • MySQL Connector/J 3.0 (MySQL AB)
  • SQL4X Manager J 2.2 (MacosGuru)
  • Informix Downloads (IBM Red Brick Warehouse 32bit) (Solaris) (IBM)
  • Informix Downloads (IBM Red Brick Warehouse 64bit) (HPUX) (IBM)
     更多Trialware
  • 假設你已經建立一個名為MyAction的操作,這是一個與com.myactions.MyActionTag類匹配的TLD。TLD檔案必須位於程式的TLDs路徑。

    當你從一個JSP頁叫用作業時,TLD告訴JSP正確的類以使用操作。這就帶來極大的方便,而且只需要少量的代碼。

    但是,從何引入SQL?首先,你需要建立具有串連功能的資料庫訪問。你可以使用javax介面來完成,而javax可見於JDBC 2.0 Optional工具箱。JDBC 2.0的javax.sql.DataSource類提供了你所需要的串連。

    此時,SQL位於什麼地方?它在bean中。你可以使用JDBCcreateStatement和PreparedStatement在bean中建立一個方法。將這一方法成為一個公用的Vector,並正確地將你的SQL聲明傳遞到這一方法。

    總結
    你的資料庫bean執行一個嵌入在操作體的SQL語句,你可以傳遞一個語句給SQL語句,或者使用它來執行一個預先的操作。可以通過標籤管理器來執行你的操作。由於JDBC被嵌入於庫代碼中,你將不能在JSP程式中明確地使用它。

    初次使用這種方法會覺得它比JDBC中的嵌入SQL,以及JSP中的嵌入JDBC更加複雜,但是,你建立SQL操作並將它們存放在一個TLD,你只需做一次,在所有的JSP程式中就可以訪問這些操作。這就是這種方法的優點。

    下一次,我們將會講述到JSP頁和會話(sessions)之間的資料傳遞。





    相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.