1. 程式人生 > >[04] JSP指令

[04] JSP指令

轉發 Coding 格式 param ror cti 標簽 tld 當前


1、概述

JSP指令用於“轉換階段”提供整個JSP頁面的相關信息,影響由JSP頁面生成的Servlet的整體結構指令不會產生任何的輸出到當前的輸出流中。
指令的基本語法為:
  1. <%@ directive {attr="value"}* %>

其中,directive表示指令名,attr則表示該指令對應的屬性名,一個指令可能有多個屬性。而JSP中常用的指令有三個:page、include、taglib

2、page指令

page指令作用於當前整個JSP頁面,可以放在頁面的任意位置。其屬性共有13個,下面展開常用屬性:
import屬性:用來引入JSP文件需要使用的類
  • e.g. <%@page import="java.util.*, java.io.*" %>
  • 使用逗號可以同時引入多個包,也可以分別多次使用import
  • import是page指令中唯一一個能在JSP文件多次出現的屬性

pageEncoding屬性:用來設置JSP文件的頁面編碼格式
  • e.g. <%@page pageEncoding="utf-8" %>
  • 上例表示設置當前JSP的頁面編碼格式為UTF-8

session屬性:用來設置JSP頁面是否生成session對象,默認值為true
  • e.g. <%@page session="false" %>
  • session屬性為false後,該JSP翻譯後的Java類中將沒有內置對象session

errorPage屬性:設置JSP頁面的錯誤頁面
  • e.g. <%@page errorPage="error.page" %>
  • 如標有上例指令的JSP頁面,若頁面中出現異常未處理,則請求會轉發到錯誤頁面
  • 可以理解為JSP翻譯後的Java類執行過程發生異常,則請求跳轉到錯誤頁面去

isErrorPage屬性:錯誤頁面是否生成內置對象exception,默認值為false
  • e.g. <%@page isErrorPage="true" %>
  • 將需要跳轉達到的錯誤頁面,設置上述指令,則在翻譯後的Java類中會生成exception內置對象
  • 即使一個頁面沒有設置isErrorPage也可以作為錯誤頁面使用,區別在於是否有exception內置對象

3、include指令

e.g. <%@include file="head.jsp" %>
include指令用來靜態包含其他頁面。所謂靜態包含,即在翻譯期間,把包含的頁面也翻譯到當前頁面的Java文件中。
需要註意的是,file屬性表示的是文件的名稱,而不是請求地址,所以不能當成url進行傳參,如 <%@include file="head.jsp?param=xxx" %> 的方式是錯誤的。

4、taglib指令

taglib指令用來聲明用戶使用的自定義標簽,將標簽庫描述符文件導入到JSP頁面中。
簡單地說,在JSP中使用的都是HTML的標簽,瀏覽器可以解析運行,而我們也可以在JSP中自定義一套自己的標簽進行使用,達到JSP文件結構簡練,可讀性強,維護性強等目的。而如何將自定義標簽導入到JSP中聲明並使用,則需要使用到taglib指令。
形如 <%@taglib uri="xxx" prefix="xxx" $>,其中:
  • uri屬性用來描述標簽資源的定位標記(自定義標簽tld文件中定義的唯一標記)
  • prefix屬性則是前綴,可以在聲明時自定義,在一個JSP中可以引入多個標簽庫,但各前綴不能重復

taglib指令涉及到自定義標簽的知識點,之後的內容會寫到,此處作為JSP指令的介紹,則不再詳細展開。

[04] JSP指令