JSP编译指令
page指令
? page指令作用于整個(gè)JSP頁(yè)面,其定義了與頁(yè)面相關(guān)的一些屬性,這些屬性將被用于和JSP服務(wù)器進(jìn)行通信。
? page指令的語(yǔ)法如下:
? <%@ page屬性1=“屬性值” 屬性2=“屬性值”……%>
? 其XML形式為:<jsp:directive.page屬性1=“屬性值” 屬性2=“屬性值” …/>
? page指令有13個(gè)屬性。
(1)language="scriptingLanguage"
? 該屬性用于指定在腳本元素中使用的腳本語(yǔ)言,默認(rèn)值是java。
(2)extends="className"
? 該屬性用于指定JSP頁(yè)面轉(zhuǎn)換后的Servlet類(lèi)所繼承的父類(lèi),屬性的值是一個(gè)完整的類(lèi)名。
(3) import="importList"
? 該屬性用于聲明在JSP頁(yè)面中可以使用的Java類(lèi)。屬性的值和Java程序中的import聲明類(lèi)似,該屬性的值是以逗號(hào)分隔的導(dǎo)入列表,例如:
? <%@ pageimport="java.util.Vector" %>
? <%@ page import="java.io.*" %>
? 要注意的是,page指令中只有import屬性可以重復(fù)使用。如果不寫(xiě)該屬性,import默認(rèn)引入以下4個(gè)包:java.lang.*,javax.servlet.*,javax.servlet.jsp.*和javax.servlet.http.*。
(4)session="true|false"
? 該屬性用于指定在JSP頁(yè)面中是否可以使用session對(duì)象,默認(rèn)值是true。
(5)buffer="none|sizeKB"
? 該屬性用于指定out對(duì)象使用的緩沖區(qū)大小,如果設(shè)置為none,將不使用緩沖區(qū),所有的輸出直接通過(guò)ServletResponse的PrintWriter對(duì)象寫(xiě)出。該屬性的值以KB為單位,默認(rèn)值是8KB。
(6)autoFlush="true|false"
? 該屬性用于緩沖區(qū)滿(mǎn)時(shí),緩存的輸出是否應(yīng)該自動(dòng)刷新。如果設(shè)置為false,當(dāng)緩沖區(qū)溢出的時(shí)候,一個(gè)異常將被拋出。默認(rèn)值為true。
(7)isThreadSafe="true|false"
? 該屬性用于指定對(duì)JSP頁(yè)面的訪問(wèn)是否是線(xiàn)程安全的。如果設(shè)置為true,則向JSP容器表明這個(gè)頁(yè)面可以同時(shí)被多個(gè)客戶(hù)端請(qǐng)求訪問(wèn)。默認(rèn)值是true。
(8) info="info_text"
? 該屬性用于指定頁(yè)面的相關(guān)信息,該信息可以通過(guò)調(diào)用Servlet接口的getServletInfo()方法來(lái)得到。
(9) errorPage="error_url"
? 該屬性用于指定當(dāng)JSP頁(yè)面發(fā)生異常時(shí),將轉(zhuǎn)向哪一個(gè)錯(cuò)誤處理頁(yè)面。
? 注意:如果一個(gè)頁(yè)面通過(guò)使用該屬性定義了錯(cuò)誤頁(yè)面,那么在web.xml文件中定義的任何錯(cuò)誤頁(yè)面將不會(huì)被使用。
(10) isErrorPage="true|false"
? 該屬性用于指定當(dāng)前的JSP頁(yè)面是否是另一個(gè)JSP頁(yè)面的錯(cuò)誤處理頁(yè)面。默認(rèn)值是false。
(11)contentType="type"
? 該屬性指定用于響應(yīng)的JSP頁(yè)面的MIME類(lèi)型和字符編碼,中文頁(yè)面中必須要設(shè)置。例如:<%@page contentType="text/html;charset=gb2312" %>
(12) pageEncoding="peinfo"
? 該屬性指定JSP頁(yè)面使用的字符編碼。如果設(shè)置了這個(gè)屬性,則JSP頁(yè)面的字符編碼使用該屬性指定的字符集,如果沒(méi)有設(shè)置這個(gè)屬性,則JSP頁(yè)面使用contentType屬性指定的字符集,如果這兩個(gè)屬性都沒(méi)有指定,則使用字符集“ISO-8859-1”。
(13)isELIgnored="true|false"
? 該屬性用于定義在JSP頁(yè)面中是否執(zhí)行或忽略EL表達(dá)式。如果設(shè)置為true,EL表達(dá)式將被容器忽略,如果設(shè)置為false,EL表達(dá)式將被執(zhí)行。
? 注意:無(wú)論將page指令放在JSP文件的哪個(gè)位置,它的作用范圍都是整個(gè)JSP頁(yè)面。
? 為了JSP程序的可讀性,以及養(yǎng)成良好的編程習(xí)慣,應(yīng)該將page指令放在JSP文件的頂部。
.include指令
? include指令用于在JSP頁(yè)面中靜態(tài)包含一個(gè)文件,該文件可以是JSP頁(yè)面、HTML網(wǎng)頁(yè)、文本文件或一段Java代碼。使用了include指令的JSP頁(yè)面在轉(zhuǎn)換時(shí),JSP服務(wù)器會(huì)在指令出現(xiàn)的位置插入所包含文件的文本或代碼。
? include指令的語(yǔ)法為:
? <%@ include file="relativeURL"%>
? XML語(yǔ)法格式的include指令為:
? <jsp:directive.include? file="relativeURL"/>
? 其中file屬性值為相對(duì)于當(dāng)前JSP文件的URL。
例:<%@page contentType="text/html;charset=gb2312" %>
<html>
<head><title>歡迎你</title></head>
?<body>
?歡迎你,現(xiàn)在的時(shí)間是
?<%@ include file="date.jsp" %>
?</body>
?</html>
?date.jsp:
?<% out.println (new java.util.Date (). toLocaleString ()); %>
- 使用include編譯指令的好處:
可以將一個(gè)復(fù)雜的JSP頁(yè)面分割成若干個(gè)簡(jiǎn)單的、能進(jìn)行單獨(dú)處理的部分。這種方式大大增強(qiáng)了JSP頁(yè)面的管理性和靈活性及擴(kuò)展型。當(dāng)要修改頁(yè)面時(shí),可以只單獨(dú)對(duì)要修改的包含文件進(jìn)行修改即可。
- 注意事項(xiàng):
? 1)在test1.jsp中進(jìn)行 <%@ include file="test2.jsp" %>出現(xiàn)錯(cuò)誤。
錯(cuò)誤為:Multiple annotations found at this line:
- Duplicate local variable path
- Duplicate local variable
解決方法:
法I:將test2.jsp中的path和basepath改為其他名字?
法II:將test2.jsp中的path和basepath刪除
taglib指令
? taglib指令允許頁(yè)面使用用戶(hù)自定義的標(biāo)記。taglib指令的語(yǔ)法如下:
? <%@ taglib (uri="tagLibraryURI"| tagdir="tagDir")prefix="tagPrefix"%>
? XML語(yǔ)法的格式為:
? <jsp:directive.taglib (uri="tagLibraryURI"| tagdir="tagDir")prefix="tagPrefix"/>
taglib指令的三個(gè)屬性:
(1) uri
? 該屬性惟一地標(biāo)識(shí)和前綴(prefix)相關(guān)的標(biāo)簽庫(kù)描述符,可以是絕對(duì)或者相對(duì)的URI。這個(gè)URI被用于定位標(biāo)記庫(kù)描述符的位置。
(2)tagdir
? 該屬性指示前綴(prefix)將被用于標(biāo)識(shí)安裝在/WEB-INF/tags/目錄或其子目錄下的標(biāo)簽文件。
(3)prefix
? 定義一個(gè)prefix:tagname形式的字符串前綴,用于區(qū)分多個(gè)自定義標(biāo)簽。以jsp:,jspx:,java:, javax:,servlet:,sun:和sunw:開(kāi)始的前綴被保留。前綴的命名必須遵循XML名稱(chēng)空間的命名約定。
? 在JSP2.0規(guī)范中,空前綴是非法的。
總結(jié)
- 上一篇: Hadoop64位版本安装后遇到的警告处
- 下一篇: Spring项目中使用webservic