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

JSP 自訂標籤實作完整流程:從 Tag 類別到 TLD 定義

     編輯:關於JSP

自訂標籤開發三步驟

1. 編寫標籤處理類別 (實作 Tag 介面)

package com.example.tag;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.PageContext;
public class HelloTag implements Tag {
  private PageContext pageContext;
  private Tag parent;
  
  public void setPageContext(PageContext pc) { this.pageContext = pc; }
  public void setParent(Tag parent) { this.parent = parent; }
  public Tag getParent() { return parent; }
  
  public int doStartTag() {
    try {
      pageContext.getOut().print("Hello World!");
    } catch (Exception e) {}
    return SKIP_BODY; // 無標籤主體內容
  }
  
  public int doEndTag() { return EVAL_PAGE; }
  public void release() {} // 釋放資源
}

關鍵常數: EVAL_PAGE 繼續處理頁面、SKIP_BODY 跳過主體、SKIP_PAGE 停止處理。

2. 編寫 TLD 標籤定義檔 (hello.tld)

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="https://java.sun.com/xml/ns/javaee" version="2.1">
  <tlib-version>1.0</tlib-version>
  <short-name>mytag</short-name>
  <uri>https://example.com/mytag</uri>
  <tag>
    <name>hello</name>
    <tag-class>com.example.tag.HelloTag</tag-class>
    <body-content>empty</body-content>
  </tag>
</taglib>

3. JSP 頁面使用自訂標籤

<%@ taglib prefix="my" uri="https://example.com/mytag" %>
<html><body>
  <my:hello /> <!-- 輸出: Hello World! -->
  <my:hello /> <!-- 再次輸出 -->
</body></html>

標籤庫優勢

  • 最大程度消除 JSP 中嵌入 Java 程式碼 (Scriptlet)
  • 增強程式碼擴展性、可讀性、可重用性
  • 簡化 JSP 頁面編寫工作量,設計師可專注版面
  • 封裝複雜邏輯為簡單標籤,如 <my:pager />、<my:menu />

進階標籤類型

部署位置

  • TLD 檔案放置 WEB-INF/tlds/ 或 META-INF/ (Jar 內)
  • 標籤類別編譯後放 WEB-INF/classes/ 或打包 Jar 放 WEB-INF/lib/
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
類型介面/基類特點
簡單標籤Tag / SimpleTagSupport無主體、無屬性、單一功能
帶屬性標籤Tag + setter 方法支援屬性配置 <my:tag attr="value">
帶主體標籤BodyTag / BodyTagSupport處理標籤內容 <my:tag>body</my:tag>
迭代標籤IterationTag重複處理主體 EVAL_BODY_AGAIN