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

JSTL 標簽庫與自定義標簽開發入門:核心標簽、EL 表達式、簡單標簽實戰

     編輯:Java 相關知識

JSTL 快速啟動

  1. 導包:jstl-1.2.jar (含標準實現),Servlet 容器通常已提供 API,需自帶實現包。
  2. 引入標簽庫:

<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="https://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="https://java.sun.com/jsp/jstl/functions" %>

核心標簽速查 (c:)

標簽用途示例
<c:out>安全輸出 (自動轉義 XML)<c:out value="${user.name}" default="匿名"/>
<c:set>設置變量<c:set var="total" value="${price*qty}"/>
<c:if>條件判斷<c:if test="${user.vip}">...</c:if>
<c:choose/when/otherwise>多條件分支類似 switch
<c:forEach>遍歷集合/數組/範圍<c:forEach items="${list}" var="item">${item}</c:forEach>
<c:forTokens>字符串分割遍歷<c:forTokens items="a,b,c" delims="," var="x">${x}</c:forTokens>
<c:url>編碼 URL (含 SessionID)<c:url value="/shop/cart" var="url"/>
<c:import>包含外部資源 (可跨域)<c:import url="https://api.example.com/data"/>

EL 表達式 (${...})

  • 隱式對象:pageScope/requestScope/sessionScope/applicationScope/param/paramValues/header/headerValues/cookie/initParam/pageContext。
  • 運算符:+ - * / div % mod、== eq != ne < lt > gt <= le >= ge、&& and || or ! not、empty (null/空串/空集合/空數組)。
  • 自動類型轉換、空值安全 (不拋 NPE)。

自定義簡單標簽 (SimpleTagSupport, JSP 2.0+)

優勢:無 doStartTag/doEndTag 狀態機,只需實現 doTag(),不支持 body-content="JSP" (僅 empty/scriptless)。

步驟 1: 標簽類


package tags;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTag extends SimpleTagSupport {
    private String pattern; // 屬性

    public void setPattern(String pattern) { this.pattern = pattern; }

    @Override
    public void doTag() throws JspException, IOException {
        PageContext pc = (PageContext) getJspContext();
        String formatted = new SimpleDateFormat(pattern).format(new Date());
        pc.getOut().print(formatted);
    }
}

步驟 2: TLD 描述符 (datetag.tld)




    1.1
    d1
    https://example.com/tags
    
        date
        tags.DateTag
        empty
        
            pattern
            true
            true 
        
    

步驟 3: JSP 使用


<%@ taglib prefix="my" uri="https://example.com/tags" %>




經典標簽 vs 簡單標簽選型

特性經典標簽 (BodyTagSupport)簡單標簽 (SimpleTagSupport)
標簽體內容支持 JSP 腳本片段僅 static text / EL / JSTL (scriptless)
生命周期doStartTag → doAfterBody → doEndTagdoTag (一次性)
訪問標簽體getBodyContent() 可多次處理getJspBody().invoke(writer) 僅一次
開發難度較高低,推薦新項目
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved