指令元素
指令元素位于<%@之后和%>之前,指令元素分為:page、include和taglib三種。
? page指令
language:
目前只支持java這一種。
import:
在JSP頁(yè)面中使用的完整的類(lèi)和接口名稱(chēng)。
import有兩種語(yǔ)法格式,一種是用逗號(hào)分隔,如:
<%@page include=”java.util.ArrayList,java.io.*”%>
另一種是重復(fù)設(shè)置import屬性,如:
<%@page import=”java.util.ArrayList”%>
<%@page import=”java.io.*”%>
session:
true或false,默認(rèn)值為true。
當(dāng)session設(shè)置為true時(shí),相當(dāng)于JSP轉(zhuǎn)換后的Servlet中調(diào)用了request.getSession()。
buffer:
none或sizekb,該屬性指定out對(duì)象(JspWriter)所使用的緩沖區(qū)大小,如果設(shè)置為none,將不使用緩沖區(qū),所有輸出將通過(guò)ServletResponse和PrintWriter對(duì)象寫(xiě)出。該屬性默認(rèn)值為8kb。
autoFlush:
true和false,是否自動(dòng)刷新緩沖區(qū),默認(rèn)值為true。
isThreadSafe:
該屬性用于指定JSP頁(yè)面的訪問(wèn)是否是線程安全的,如果設(shè)置為false,則JSP頁(yè)面轉(zhuǎn)換后的Servlet將繼承SingleThreadModel接口,建議使用默認(rèn)值true。
info:
設(shè)置頁(yè)面的文字信息,該信息可以通過(guò)使用getServletInfo()方法得到。
errorPage:
定義JSP頁(yè)面發(fā)生異常時(shí),將轉(zhuǎn)向哪一個(gè)錯(cuò)誤處理頁(yè)面。在web.xml配置文件中,也可以指定錯(cuò)誤處理頁(yè)面。
isErrorPage:
true和false,用于指定該JSP頁(yè)面是否是錯(cuò)誤處理頁(yè)面。
contentType:
用于設(shè)定MIME類(lèi)型和字符編碼。
pageEncoding:
設(shè)置字符編碼,如果該屬性未設(shè)置,同時(shí)也沒(méi)有通過(guò)contentType設(shè)置字符編碼,則使用默認(rèn)值iso-8859-1。
isELIgnored:
true和false,該屬性用于定義在JSP頁(yè)面是否執(zhí)行或忽略EL表達(dá)式,在Servlet2.4及以上版本中該屬性的默認(rèn)值為false。
? include指令
該指令的語(yǔ)法格式為:
<%@include file=”relative URL”%>
? taglib指令
taglib指令允許頁(yè)面使用用戶定制的標(biāo)簽,taglib指令有uri、tagdir和prefix三個(gè)屬性。
uri:
可以是絕對(duì)或相對(duì)的uri,用于定位標(biāo)簽庫(kù)描述符的位置。
tagdir:
該屬性指示前綴(prefix)將被用于標(biāo)識(shí)安裝在WEB-INF/tags/目錄或其子目錄下的標(biāo)簽文件。
prefix:
定義了標(biāo)簽的前綴。
腳本元素
? 聲明
? 腳本段
? 表達(dá)式
動(dòng)作元素
? <jsp:useBean>、<jsp:setProperty>和<jsp:getProperty>
? <jsp:param>
? <jsp:include>
? <jsp:forward>
? <jsp:plugin>、<jsp:params>和<jsp:fallback>
注釋
JSP除了支持HTML的注釋外,還支持<%– 注釋內(nèi)容 –%>的注釋方式,這兩者的區(qū)別在于后者不會(huì)將注釋內(nèi)容發(fā)送到客戶端。
JSP隱含對(duì)象
request
response
pageContext
pageContext提供了獲取其它隱含對(duì)象的方法,如getRequest()、getResponse()、getSession()、getServletContext()、getOut()、getServletConfig()、getPage()、getException()等。
六個(gè)重要的方法:
public abstract void setAttribute(String, Object [, int scope])
public abstract Object getAttribute(String[, int scope])
public abstract Object findAttribute(String[, int scope])
public abstract void removeAttribute(String[, int scope])
public void forward(String)
public void include(String)
scope表示范圍屬性,有四種。
session
application
out
out對(duì)象的類(lèi)型是javax.servlet.jsp.JspWriter,是java.io.Writer的派生類(lèi),以字符流輸出數(shù)據(jù),是PrintWriter帶緩沖的版本。
七個(gè)重要的方法:
public abstract void clear() throws IOException
public abstract void clearBuffer() throws IOException
public abstract void close() throws IOException
public abstract void flush() throws IOException
public int getBufferSize()
public abstract int getRemaining()
public boolean isAutoFlush()
config
page
exception
對(duì)象的范圍
page
request
session
application
JavaBean
JavaBean組件本質(zhì)就是一個(gè)類(lèi),它具有以下特性:
1) public類(lèi)型。
2) 有一個(gè)默認(rèn)的構(gòu)造方法。
3) 提供get和set方法來(lái)獲取和設(shè)置屬性的值。
JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù)(JSTL)
JSTL規(guī)范由SUN公司制定,Apache的Jakarta小組負(fù)責(zé)實(shí)現(xiàn)。JSTL1.1支持Servlet2.4和JSP2.0,JSTL1.0支持Servlet2.3和JSP1.2。
使用JSTL時(shí),需要jstl.jar和standard.jar兩個(gè)包,在apache官方網(wǎng)站可以下載,網(wǎng)址是:http://www.apache.org/dist/jakarta/taglibs/standard/
它們?cè)趈akarta-taglibs-standard-current.zip壓縮包中。
JSTL由五個(gè)不同的標(biāo)簽庫(kù)組成:
功能范圍 |
URI |
前綴 |
core |
http://java.sun.com/jsp/jstl/core |
c |
I18N |
http://java.sun.com/jsp/jstl/fmt |
fmt |
SQL |
http://java.sun.com/jsp/jstl/sql |
sql |
XML |
http://java.sun.com/jsp/jstl/xml |
x |
Functions |
http://java.sun.com/jsp/jstl/functions |
fn |
JSTL核心標(biāo)簽庫(kù)
<c:out>標(biāo)簽
沒(méi)有標(biāo)簽體:
<c:out value=”” default=””escapeXml=”true|false”>
有標(biāo)簽體:
<c:out value=””escapeXml=”true|false”>default value</c:out>
<c:set>標(biāo)簽
方式一:
<c:set var=”username” value=”pbz” scope=”page|request|session|application” />
方式二:
<c:set var=”username” scope=”page|request|session|application”>pbz</c:out>
方式三:
<c:set target=”對(duì)象名” property=”屬性名” value=”值” />
<c:remove>標(biāo)簽
<c:remove var=”變量名” scope=”page|request|session|application” />
<c:catch>標(biāo)簽
<c:catch var=”exception”>
過(guò)程語(yǔ)句
</c:catch>
<c:out value=”${exception.message}” />
<c:if>標(biāo)簽
<c:if test=”表達(dá)式,結(jié)果為true或false” [var=”保存前面test結(jié)果的變量名” scope=”page|request|session|application”]>
過(guò)程語(yǔ)句
</c:if>
<c:choose>標(biāo)簽
<c:choose>、<c:when>和<c:otherwise>配合使用,相當(dāng)于if…else。
<c:forEach>標(biāo)簽
<c:forEach var=”每次循環(huán)中的中間對(duì)象名” items=”被迭代的集合對(duì)象名” [begin=”” end=”” step=”” varStatus=”狀態(tài)名”]>
<c:out value=”${每次循環(huán)中的中間對(duì)象名.屬性名或鍵名}” />
</c:forEach>
狀態(tài)名是迭代標(biāo)簽所產(chǎn)生的一個(gè)對(duì)象名,它具有以下屬性:
count
index
first
last