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

JSP 自訂標籤開發完整教程:從概念到實作

     編輯:關於JSP

一、核心概念

術語說明
標籤XML 元素,讓 JSP 更簡潔、易維護、支援多語言;名稱與屬性大小寫敏感。
標籤庫功能相關、邏輯關聯的標籤集合。
TLD(標籤庫描述檔)XML 設定檔,映射標籤與處理類,類似 web.xml。
標籤處理類繼承 TagSupport 或實作 SimpleTag 的 Java 類,實現標籤具體功能。

二、自訂標籤格式與部署條件

JSP 容器需滿足兩條件:

  1. 識別標籤所屬標籤庫 → 由 taglib 指令的 prefix 屬性完成。
  2. 找到實現類 → 由 uri 定位 TLD,TLD 中宣告處理類完整名稱。

容器啟動時掃描 WEB-INF 下 META-INF/*.tld,建立 URI 與 TLD 的映射。JSP 頁面僅需 <%@ taglib uri="..." prefix="..." %> 即可匹配。

三、標籤處理流程(10 步驟)

  1. JSP 引入標籤庫
  2. 使用標籤
  3. 容器依 prefix 取得 uri
  4. 在 web.xml 找對應 taglib 元素
  5. 取得 taglib-location 值
  6. 從 WEB-INF/ 讀取 TLD
  7. 在 TLD 中找 tag 元素匹配 tagname
  8. 取得 tag-class 值
  9. 實例化處理類
  10. 呼叫 doStartTag()/doEndTag() 完成處理

四、建立與使用標籤庫基本步驟

  1. 撰寫標籤處理類
  2. 撰寫 TLD 檔案
  3. 在 web.xml 設定 taglib 元素
  4. JSP 頁面引入標籤庫

五、TagSupport 類詳解

  • 處理類必須繼承 javax.servlet.jsp.TagSupport。
  • 主要屬性:parent(父標籤處理類)、pageContext(PageContext 物件)。
  • 容器在呼叫 doStartTag/doEndTag 前會先呼叫 setPageContext/setParent 初始化,因此可直接存取 pageContext。
  • 建構子中不可存取 pageContext(尚未初始化)。

六、處理標籤的兩個核心方法

方法觸發時機回傳值與含義
doStartTag()遇到起始標籤SKIP_BODY:忽略標籤主體;EVAL_BODY_INCLUDE:正常執行主體
doEndTag()遇到結束標籤SKIP_PAGE:立即停止頁面執行;EVAL_PAGE:繼續正常執行

七、自訂標籤屬性

標籤若含自訂屬性,處理類需宣告對應成員變數,並提供 setter/getter。

八、建立標籤處理類步驟(進階)

  1. 建立靜態文字檔(替換標籤的內容)
  2. Web 應用啟動時載入靜態文字
  3. 撰寫標籤處理類

九、使用 Properties 儲存靜態文字

java.util.Properties 以 key/value 形式存放於 WEB-INF,支援流讀寫。常用 API:setProperty、getProperty、load(InputStream)、store(OutputStream, String)。

十、ServletContext 讀取屬性檔

關鍵 API:getResourceAsStream(String path) 以輸入流讀取 WEB-INF/xxx.properties,載入 Properties 後 setAttribute 存入 ServletContext 供標籤類取用。

十一、Web 應用啟動時載入靜態文字

建立繼承 HttpServlet 的類,在 web.xml 設定 load-on-startup,於 init() 中完成上述載入流程。

十二、標籤處理類實作範本

import javax.servlet.jsp.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.*;

public class MyTag extends TagSupport {
    public int doStartTag() throws JspException {
        // 1. 從 ServletContext 取得 Properties
        // 2. 取 key 對應值
        // 3. 處理並輸出
        return EVAL_BODY_INCLUDE;
    }
}

十三、TLD 檔案結構

三類元素:taglib(標籤庫資訊)、tag(標籤定義)、attribute(屬性定義)。

  • taglib:shortname(預設前綴)、uri(唯一識別符)。
  • tag:name、tagclass、bodycontent(empty/JSP/tagdependent)。
  • attribute:name、required、rtexprvalue(是否支援請求時運算式)。

十四、Web 應用中使用標籤

  1. web.xml 加入 taglib 元素:taglib-uri、taglib-location。
  2. JSP 頁面 <%@ taglib uri="..." prefix="..." %>,uri 需與 web.xml 一致。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved