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

JSP 2.0+ Tag File 與 Fragment 技術:佈局複用的現代解法

     編輯:關於JSP

專案中發現 `.tag` 檔案,原以為是第三方模板引擎,查證後才知是 JSP 2.0 引入的 Tag File 與 JSP Fragment 技術。比傳統 `` 更強大,類似 SiteMesh 裝飾器模式,實現「頁面結構與內容分離、佈局模板複用」。

核心概念

  • Tag File (`.tag`):以標籤形式封裝可複用的頁面片段,支援屬性與 Fragment 參數。
  • JSP Fragment:可延遲求值的 JSP 內容塊,作為屬性傳遞給 Tag File,由 Tag File 決定何時、何地渲染 (via ``)。

實戰範例:三欄佈局模板

1. 定義模板標籤 WEB-INF/tags/tpl.tag

<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ attribute name="title"%>
<%@ attribute name="tpl1" fragment="true" required="true"%>
<%@ attribute name="tpl2" fragment="true" required="true"%>
<%@ attribute name="tpl3" fragment="true" required="true"%>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>${title}</title>
  <style>
    #div1,#div2,#div3 { width:90%; margin:10px auto; border:10px solid red; }
  </style>
</head>
<body>
  <h1>jsp2.0 標籤檔案</h1>
  <div id="div1"><jsp:invoke fragment="tpl1" /></div>
  <div id="div2"><jsp:invoke fragment="tpl2" /></div>
  <div id="div3"><jsp:invoke fragment="tpl3" /></div>
  <h2>jsp2.0 fragment 技術</h2>
</body>
</html>

2. 使用模板 index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="xjo" tagdir="/WEB-INF/tags" %>
<xjo:tpl title="jsp標籤檔案的使用">
  <jsp:attribute name="tpl1">
    <h1>tpl1 中的內容</h1>
  </jsp:attribute>
  <jsp:attribute name="tpl2">
    <h1>tpl2 中的內容</h1>
  </jsp:attribute>
  <jsp:attribute name="tpl3">
    <h1>tpl3 中的內容</h1>
  </jsp:attribute>
</xjo:tpl>

關鍵優勢

特性傳統 includeTag File + Fragment
參數傳遞僅請求參數/屬性支援 Fragment 內容塊延遲渲染
結構控制被包含頁面決定結構模板標籤完全掌控佈局結構
類型安全無屬性可宣告 required、type、fragment
IDE 支援弱Eclipse/MyEclipse 可識別 .tag 提供自動完成

適用場景

  • 全站統一版型 (Header、Footer、Sidebar、Content 區塊)
  • 多種頁面共用相同佈局但內容區塊不同
  • 需強制內容區塊順序、樣式、包裝標籤的情境

Tag File + Fragment 是 JSP 原生的「模板繼承」實現,無需引入 SiteMesh、Tiles、Freemarker 等第三方框架,輕量且標準化,強烈建議在 JSP 2.0+ 環境優先採用。

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