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

JSP 指令元素完整手冊:page、include、taglib 屬性詳解與實戰技巧

     編輯:關於JSP

JSP 指令(Directive)不產生輸出,而是指導容器如何編譯頁面。三大指令 page、include、taglib 涵蓋了編碼、導入、緩衝、錯誤處理、標簽庫等核心配置。本文系統整理屬性用法與避坑指南。

一、page 指令:頁面級全局配置

<%@ page
    language="java"
    contentType="text/html;charset=UTF-8"
    pageEncoding="UTF-8"
    session="true"
    buffer="8kb"
    autoFlush="true"
    isThreadSafe="true"
    errorPage="/error/500.jsp"
    isErrorPage="false"
    import="java.util.*,com.example.model.*"
    isELIgnored="false"
%>
屬性默認值關鍵說明
languagejava目前僅支持 java,保留擴展性
extends無指定生成 Servlet 父類,**慎用**,限制容器優化
importjava.lang.*, javax.servlet.*, javax.servlet.jsp.*, javax.servlet.http.*多包用逗號分隔,建議在文件頂部集中聲明
sessiontrue無需 Session 的頁面(如靜態展示、API)設為 false 節省內存
buffer8kbnone 關閉緩衝,大頁面可調大如 32kb;關閉後 autoFlush 必為 true
autoFlushtruetrue:緩衝區滿自動刷新;false:拋異常(需配合 buffer≠none)
isThreadSafetruefalse 會強制單線程執行,嚴重降低吞吐,**生產禁用**
info無任意字符串,可通過 getServletInfo() 獲取,用於版本/作者標識
errorPage無拋出未捕獲異常時轉發的頁面(相對路徑),需配合目標頁 isErrorPage=true
isErrorPagefalsetrue 時可使用隱含對象 exception 獲取異常信息
contentTypetext/html;ISO-8859-1響應 MIME + charset,**必須顯式設置 UTF-8**
pageEncodingISO-8859-1源文件編碼,**必須與文件實際保存編碼一致**
isELIgnoredfalsetrue 禁用 EL 表達式(${...} 當文本輸出),舊項目遷移時偶爾用到

二、include 指令:編譯期靜態包含

<%@ include file="/common/header.jsp" %>
  • 編譯期合併:被包含文件內容直接插入當前 JSP,再統一編譯為一個 Servlet。
  • 共享變量作用域:包含方與被包含方在同一 _jspService 方法中,變量名衝突會編譯報錯。
  • 適用場景:頁頭頁尾、版權聲明、靜態片段復用。
  • 編碼注意:被包含文件若含中文,需在其自身 pageEncoding 聲明正確編碼,或在包含處統一設置。

三、taglib 指令:引入標簽庫

<%@ 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" %>
<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> <!-- Tag File 方式 -->
  • uri:標準庫使用官方 URI;自定義 TLD 文件放在 WEB-INF/tld/,uri 為 TLD 中 <uri> 值。
  • prefix:建議語義化(c=core, fmt=format, fn=function, sec=security 等),避免衝突。
  • tagdir:JSP 2.0+ 支持直接掃描 /WEB-INF/tags/**/*.tag 文件,無需 TLD,開發自定義標簽極其便捷。

四、實戰避坑清單

  1. page 指令必須在文件第一行(前面不能有空白、註釋、BOM),否則 pageEncoding 可能不生效導致中文亂碼。
  2. include 指令 vs <jsp:include> 動作:前者編譯期合併(性能好、共享變量);後者運行期包含(獨立編譯、參數傳遞靈活、支援動態路徑)。按需選擇。
  3. taglib 引入失敗:檢查 TLD 文件是否在 WEB-INF/tld/、web.xml 是否聲明 <jsp-config><taglib>(Servlet 2.4+ 通常自動掃描無需配置)、jar 包是否含 META-INF/tld/。
  4. isELIgnored 默認 false:若頁面輸出 ${user.name} 字面量,檢查 web.xml version 屬性(2.4+ 默認啟用 EL)或額外設置 isELIgnored="true"。

掌握三大指令的屬性語義與交互關係,能讓 JSP 編譯行為可控、可預測,是從「能跑」到「穩健」的關鍵一步。

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