JSP三大編譯指令之page指令

來源:互聯網
上載者:User

JSP的編譯指令是通知JSP引擎的訊息,它不直接產生輸出。編譯指令都有預設值,因此開發人員無須為每個指令設定值。
常見的編譯指令有如下三個:
① page:該指令是針對當前頁面的指令。
② include: 用於指定包含另一個頁面。
③ taglib: 用於定義和訪問自訂標籤。

使用編譯指令的文法格式如下:

<%@ 編譯指令名 屬性名稱=“屬性值”...%>

page指令

page指令通常位於JSP頁面的頂端,一個JSP頁面可以使用多條page指令。下面介紹page指令各屬性的含義:
language:聲明當前JSP頁面使用的指令碼語言的種類。目前該屬性的值只能為java,預設值也為java,所以通常無須設定。
import
:用來匯入包。下面幾個包是預設自動匯入的,預設匯入的包有:java.lang.*, javax.servlet.*, javax.servlet.http.*, javax,.servlet.jsp.*.
contentType:用於告知用戶端,伺服器對此次請求所發回的響應的本文格式(MIME類型)和編碼字元集。預設的MIME類型為text/html,預設的字元集為ISO-8859-1,國內開發一般將字元集設定為UTF-8或者GBK。所以常見這一項為:contentType="text/html;charset=UTF-8",這就是說,告訴用戶端,伺服器的響應的本文檔案格式為text/html,這樣用戶端就會選擇以它自己的預設的瀏覽器開啟檔案,而不是別的應用程式。charset=UTF-8可以告知用戶端瀏覽器,伺服器返回的檔案的編碼格式為UTF-8,這樣瀏覽器就按照UTF-8格式進行解碼並且以UTF-8字元集進行顯示頁面。contentType的作用本質上相當於類比了一個Http協議的訊息頭。contentType雖然寫在JSP檔案中,但是因為JSP檔案其實並不能直接響應用戶端請求,它必須編譯成對應的Servlet以後才能響應請求。所以本質上這個contentType是針對Servlet的設定,即Servlet告訴用戶端,我返回的檔案(以流的形式,response.getWriter())的MIME類型為text/html,檔案的編碼字元集為UTF-8。
pageEncoding:設定JSP源檔案儲存時所使用的編碼(MyEclipse中右擊檔案->Properties->Resource->Text file encoding,對於MyEclipse,pageEncoding的值設定為哪種字元集,儲存時自動採用這種字元集儲存)。因為JSP檔案要想響應用戶端的請求,它就必須先被編譯成一個Servlet,而Servlet是一個Java類,Java類在記憶體中是以Unicode進行編碼的,如果JSP引擎(將JSP翻譯成對應的Servlet)不知道JSP的編碼格式,就無法進行解碼,然後將其轉換成記憶體中的Unicode編碼。注意區分contentType的charset和pageEncoding,charset是響應時Servlet(JSP已經編譯成了Servlet)告訴用戶端瀏覽器”我“是以這種字元編碼的,”你“也要以這種字元解碼並顯示,整個過程涉及伺服器和用戶端兩方面,而pageEncoding是伺服器端JSP檔案告訴JSP引擎要以何種編碼進行解碼,即此時JSP還沒被編譯成Servlet,它是被編譯成Servlet的前提準備工作,整個過程都發生在伺服器端,與用戶端無關。
session:設定這個JSP頁面是否支援session機制,預設為true,所以一般不需要設定,保持預設值即可。
errorPage:指定錯誤處理頁面的地址。如果本頁面產生了異常或者錯誤,而該JSP頁面沒有對應的處理代碼,此時就會自動調用該屬性所指向的JSP頁面。
isErrorPage:和errorPage屬性配合使用。設定本JSP頁面是否為錯誤處理頁面。
info:設定該JSP程式(不要忘記本質上是個Servlet)的資訊,也可以看做其說明。可以通過Servlet.getServletInfo()方法擷取該值。在JSP頁面中,可以直接調用getServletInfo()方法擷取該值如:<%=getServletInfo()%>.因為JSP是Servlet,而任何一個Servlet都實現了Servlet介面,Servlet介面中含有getServletInfo()方法。親,還記得大明湖畔的Servlet介面中的五個方法嗎!
extends
:指定JSP編譯產生的Servlet所繼承的父類或所實現的介面,一般很少用。
buffer
:指定輸出緩衝區的大小。JSP的隱含對象out(JSP有九大隱含對象或者說內建對象)用於緩衝JSP(其實是Servlet)對用戶端瀏覽器的輸出,預設值為8KB,可以設定為none,也可以設定為其他的值,單位為KB。
autoFlush:當輸出緩衝區即將溢出時,是否需要強制輸出緩衝區的內容。設定為true時可以正常輸出,設定為false時,則會在buffer溢出時產生一個異常。

上面11個屬性中最常用的還是import,contentType,pageEncoding,所以最常見的最簡單的JSP模版為:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>Insert title here</title></head><body></body></html>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.