首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

JDBC 設計模式優化 JSP 資料庫存取:標籤庫封裝 SQL 操作

     編輯:關於JSP

痛點

  • JSP 內嵌 JDBC 代碼導致維護困難、SQL 散落、連線管理混亂。
  • 重複的 getConnection()、PreparedStatement、資源關閉樣板代碼。

解決方案:自定義標籤封裝資料庫操作

  1. 標籤處理類:繼承 TagSupport,內部持有 DataSource(從 JNDI 取得),封裝 executeQuery/executeUpdate。
  2. TLD 定義:映射標籤名稱、屬性(如 sql、dataSource、var)。
  3. JavaBean 承載 SQL:將 SQL 語句與參數封裝於 Bean,標籤處理類取出執行。

核心類別結構

// 1. 標籤處理類
package com.myactions;
public class MyActionTag extends TagSupport {
    private String sql; // 對應屬性
    public void setSql(String sql) { this.sql = sql; }
    public int doEndTag() {
        // 從 JNDI 取 DataSource,執行 SQL,將 ResultSet 存入 pageContext.setAttribute(var, rs)
        return EVAL_PAGE;
    }
}

// 2. TLD 片段
<tag>
    <name>MyAction</name>
    <tag-class>com.myactions.MyActionTag</tag-class>
    <body-content>empty</body-content>
    <attribute><name>sql</name><required>true</required></attribute>
    <attribute><name>var</name><required>true</required></attribute>
</tag>

// 3. JSP 使用
<%@ taglib uri="/WEB-INF/tlds/mytags.tld" prefix="db" %>
<db:MyAction sql="SELECT * FROM users WHERE dept=?" var="rs" />
<c:forEach var="row" items="${rs}"> ... </c:forEach>

優勢

  • JSP 頁面零 Java 代碼,純標籤聲明式風格。
  • SQL 集中管理於 Bean 或配置檔,易於審計與優化。
  • 連線池、事務控制封裝於標籤庫,業務邏輯不再關心底層 JDBC。
  • 可複用於多個專案,建立企業級標籤庫資產。

演進方向

現代框架(Spring JDBC、MyBatis、JPA)已以更強大的方式解決此問題,標籤庫封裝 JDBC 屬於早期 JSP 模式,理解其設計思想有助於掌握聲明式資料存取演進脈絡。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved