JSP指令


以下內容引用自http://wiki.jikexueyuan.com/project/jsp/directives.html

JSP指令(Directives)為容器提供方向和指導,告訴它如何處理JSP過程的某些方面。

JSP指令影響Servlet類的總體結構。它通常具有以下形式:

<%@ directive attribute="value" %>

指令有若干個屬性,可以以鍵-值對的形式列出並由逗號分隔。

@符號和指令名稱之間的空格,以及最后一個屬性和結束標志%>之間的空格,是可選的。

指令標簽有三種類型:

指令 描述
<%@ page ... %> 定義page-dependent屬性,比如腳本語言,錯誤頁面和緩沖要求。
<%@ include ... %> 包含在轉換階段的文件。
<%@ taglib ... %> 聲明了一個用於頁面中的標簽庫,包括自定義操作。

一、頁面指令

頁面指令用於為屬於當前JSP頁面的容器提供指示。可以在JSP頁面的任何地方編寫頁面指令代碼。按照慣例,通常在JSP頁面的頂部編寫頁面指令代碼。

下面是頁面指令的基本語法:

<%@ page attribute="value" %>

可以編寫等同於上述語法的XML,如下所示:

<jsp:directive.page attribute="value" />

二、屬性

以下是頁面指令相關的屬性列表:

屬性 目的
buffer 指定一個輸出流的緩沖模型。
autoFlush 控制Servlet輸出緩沖區的行為。
contentType 定義了字符編碼方案。
errorPage 定義了Java未檢查運行時異常報告的另一個JSP的URL。
isErrorPage 表明這個JSP頁面是否是由另一個JSP頁面的errorPage屬性指定的URL。
extends 指定一個超類,生成的Servlet必須擴展
import 指定在JSP中使用的包或類的列表,正如Java導入聲明為Java類所做的相同。
info 定義一個字符串,可以訪問Servlet的getServletInfo()方法。
isThreadSafe 為生成的Servlet定義線程模型。
language 定義了在JSP頁面中使用的編程語言。
session 指定JSP頁面是否參與HTTP會話
isELIgnored 指定JSP頁面中的EL表達式中是否將被忽略。
isScriptingEnabled 決定是否允許使用腳本元素。

三、包含指令

包含指令用於在轉換階段包含一個文件。這個指令告訴容器在轉換階段將其他外部文件的內容與當前JSP合並。可以在JSP頁面中的任何位置編寫include指令。

一般使用這個指令的形式如下:

<%@ include file="relative url" >

包含指令中的文件名實際上是一個相對URL。如果只指定一個文件名而沒有相關路徑,JSP編譯器就會假定文件與JSP在同一個目錄下。

可以編寫等同於上述語法的XML,如下所示:

<jsp:directive.include file="relative url" />

示例:

include指令的一個很好的例子是一個具有多頁內容的公共頁眉和頁腳。

定義以下三個文件(a)header.jps,(b)footer.jsp(c)main.jsp如下:

以下是header.jsp內容的:

<%! 
   int pageCount = 0;
   void addCount() {
      pageCount++;
   }
%>

<% addCount(); %>

<html>
   <head>
      <title>The include Directive Example</title>
   </head>
   
   <body>
      <center>
         <h2>The include Directive Example</h2>
         <p>This site has been visited <%= pageCount %> times.</p>
      </center>
      <br/><br/>

以下是內容footer.jsp中 -

      <br/><br/>
      <center>
         <p>Copyright © 2010</p>
      </center>
   </body>
</html>

最后這里是main.jsp的內容-

<%@ include file="header.jsp" %>
<center>
   <p>Thanks for visiting my page.</p>
</center>
<%@ include file="footer.jsp" %>

現在把所有這些文件保存在根目錄下,並嘗試訪問main.jsp

刷新main.jsp,會發現頁面匹配計數器不斷增加。

四、taglib指令

JSP API允許用戶定義自定義的JSP標簽,看起來像HTML或XML標簽,且標簽庫是一組用戶定義的標簽,能夠實現自定義的行為。

taglib指令聲明了JSP頁面使用一組自定義標簽,識別庫的位置,並提供方法來確定JSP頁面中的自定義標簽。

taglib指令遵循以下語法:

<%@ taglib uri="uri" prefix="prefixOfTag" >

其中,uri屬性值解析為容器理解的一個位置,prefix屬性通知容器什么標記是自定義操作。

可以編寫相當於上述的語法的XML,如下所示:

<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />

示例:

例如,假設custlib標簽庫包含一個名為hello的標簽如果想使用一個前綴為mytag的hello標簽,標簽將是<mytag:hello>,它將在JSP文件中被使用如下:

<%@ taglib uri="http://www.example.com/custlib" prefix="mytag" %>

<html>
   <body>
      <mytag:hello/>
   </body>
</html>

 

測試工程:https://github.com/easonjim/5_java_example/tree/master/jspbasics/test2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM