1. 程式人生 > >jsp中的三個指令

jsp中的三個指令

一、JSP的3個指令

JSP指令(directive)是為JSP引擎而設計的,它們並不直接產生任何可見輸出,而只是告訴引擎如何處理JSP頁面中的其餘部分。

指令用來申明JSP頁面的一些屬性,比如編碼方式,文件型別。我們在servlet中也會申明我們使用的編碼方式和響應的文件型別的,而JSP就是用指令來申明。上面我們也說到了一條指令,也就是page指令。

JSP指令格式:<%@ directive {attribute=value}* %>(<%@ 指令名稱 屬性1=“屬性值1” 屬性2=“屬性值2”。。。%>)

  分析:  

    directive:指令名稱,例如page指令

    attribute=value:緊跟指令名稱後面的就是各種屬性,以鍵值對的形式書寫

    *:代表後面能跟0個或多個屬性。

1.1、page指令(用來宣告JSP頁面的屬性等)

  <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  page指令,後面跟著三個屬性,分別是language、contentType、pageEncoding。

  這只是其中的幾個屬性,並沒有寫全,page指令允許的屬性如下表所示: 

        屬性名稱        取值範圍          描述

        language        java      解釋該JSP檔案時採用的語言,一般為java語言,預設為java

        extends        任何類的全名   編譯該JSP檔案時繼承哪個類,JSP為Servlet,因此當指明繼承普通類時需要實現Servlet的init、destroy等方法

        import         任何包名、類名  引入該JSP中用到的類、包等,import是唯一可以宣告多次的page指令屬性,一個import可以引用uogelei,中間用英文逗號隔開,

                              如<%@ page import="java.util.List,java.util.ArrayList"%>

        session        true、false    該JSP內是否內建Session物件,如果為true,則內建Session物件,可直接使用,否則反之,預設為true

        autoFlush       true,false    是否執行快取,如果為true,則使用out.println()等方法輸出的字串並不是立刻到達客戶端伺服器的,而是暫時存到快取裡,快取滿

                             了或者程式執行完畢或者執行out.flush()操作時才到客戶端,預設為true。

        buffer        none或者數字KB   指定快取大小,當autoFlush設為true時有效,例如<%@ page buffer=10kb%>

        isThreadSafe      true,false    是否執行緒安全,如果為true,則執行多個執行緒同時執行該jsp程式,否則只執行一個執行緒,其餘執行緒等待,預設為false

        isErrorPage      true,false     指定該頁面是否為錯誤顯示頁面,如果為true,則該JSP內建有一個Exception物件exception,可直接使用,否則沒有,預設為false

        errorPage     某個JSP頁面的相對路徑  指明一個錯誤頁面,如果該JSP程式丟擲一個未捕捉的異常,則轉到errorPage指定的頁面,errorPage指定的頁面通常

                               isErrorPage屬性為true,且內建的exception物件為未捕捉的異常

        contentType     有效的文件型別    客戶端瀏覽器根據該屬性判斷文件型別,例如 HTML格式為text/html、純文字格式為text/plain、JPG影象為image/jpeg、GIF影象為image/gif、

                              WORD文件為application/msword,該屬性常跟著charset設定編碼一起,作用是通知伺服器和瀏覽器都使用同一個碼錶

        info          任意字串      指明JSP的資訊,該資訊可以通過Servlet.getServletInfo()方法獲取到

    trimDirective Whitespaces    true、false     是否去掉指令前後的空白字元,預設為false

        pageEncoding    UTF-8,ISO-8859-1等    指定一張碼錶來對該JSP頁面進行編碼

1.2、include指令

  比較簡單,只有一種形式 <%@ include file="relativeURL"%>  relativeURL:本應用程式內另一個JSP檔案或者HTML檔案的路徑,例如,網址內所有頁面均有一個統一風格的導航欄和頁尾版權,那麼就可以使用該指令將其包含進來。

  特點:include指令會將包含頁面的原始碼新增到使用include指令的頁面中來,然後編譯成class檔案,而等下會講到的一個JSP行為,<jsp:include page="relativeURL">作用跟include指令一樣,

      但是不同的是,include行為是執行時單獨執行包含頁面,然後把執行的結果包含到本頁面來,屬於先執行後包含。  

  注意:  

    靜態包含:把其它資源包含到當前頁面中。
      <%@ include file="/include/header.jsp" %>
    動態包含:
      <jsp:include page="/include/header.jsp"></jsp:include>

    兩者的區別:翻譯的時間段不同
      前者:在翻譯時就把兩個檔案合併
      後者:不會合並檔案,當代碼執行到include時,才包含另一個檔案的內容。

    原則:能用靜的就不用動的。

1.3、taglib指令

  JSP支援標籤技術,後面會講到標籤的用法,jstl標籤庫的使用等,

  作用:用來指明JSP頁面內使用的JSP標籤庫,taglib指令有兩個屬性,uri為類庫的地址,prefix為標籤的字首

  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>