-
JSP 基本結(jié)構(gòu)
JSP 頁(yè)面組成:模板文本(HTML,XML,純文本)幻林,JSP 元素芋浮;
JSP 元素:腳本元素谤祖,指令元素,動(dòng)作元素
腳本元素 腳本 <% %> 表達(dá)式 <%=%> 聲明 <%!%> 注釋 <%-- --%> 指令元素 <%@page <%@include <%@taglib 動(dòng)作元素 <jsp:include <jsp:forward <jsp:param <jsp:useBean
-
JSP 腳本
語(yǔ)法:<% JSP腳本 %> JSP 表達(dá)式(簡(jiǎn)單的輸出形式) 語(yǔ)法:<%= 表達(dá)式 %> JSP 聲明(聲明一個(gè)或多個(gè)變量和方法啼辣,在 JSP 頁(yè)面初始化時(shí)進(jìn)行初始化,類的成員變量和方法) 語(yǔ)法:<%! JSP 聲明 %> JSP 注釋 語(yǔ)法:<%-- JSP注釋 --%>
-
JSP 指令
-
page 指令
描述了和頁(yè)面相關(guān)的信息御滩,導(dǎo)入所需類包鸥拧,指明輸出內(nèi)容類型,控制 Session 等削解;
語(yǔ)法:<%@page 屬性列表 %>屬性:
language Java
import 導(dǎo)入 Java 軟件包或類名列表
isThreadSafe true
contentType MIME 類型和 JSP 頁(yè)面響應(yīng)時(shí)的編碼方式富弦,"text/htm;charset=ISO8859-1"
pageEncoding 指定 JSP 文件本身編碼方式,pageEncoding="UTF-8"
session true
errorPage 設(shè)定 JSP 頁(yè)面異常時(shí)重新指向的頁(yè)面 URL
isErrorPage true
isELIgnored false
buffer
autoFlush -
include 指令(靜態(tài)包含)
在頁(yè)面翻譯期間引入另一個(gè)文件钠绍,被包含的文件可以是 JSP,HTML 或文本文件舆声;
語(yǔ)法:<%@include file="文件"%> -
taglib 指令
指定 JSP 頁(yè)面所使用的標(biāo)簽庫(kù),可以在 JSP 頁(yè)面中使用標(biāo)簽庫(kù)中的標(biāo)簽
語(yǔ)法:<%@taglib url="標(biāo)簽庫(kù)URI" prefix="標(biāo)簽前綴"%>保留前綴有:java,javax,jsp,jspx,servlet,sun,sunw
-
-
JSP 動(dòng)作
JSP 標(biāo)準(zhǔn)動(dòng)作:在 JSP 中可以使用 XML 語(yǔ)法格式的一些特殊標(biāo)記來(lái)控制行為柳爽,
動(dòng)態(tài)地插入文件媳握,調(diào)用 JavaBean 組件,重定向頁(yè)面等功能磷脯;
<jsp:include> 在頁(yè)面被請(qǐng)求時(shí)引入一個(gè)文件蛾找;(動(dòng)態(tài)包含)
<jsp:forward> 把請(qǐng)求轉(zhuǎn)發(fā)給另一個(gè)頁(yè)面;
<jsp:useBean> 用于查找或?qū)嵗粋€(gè) JavaBean赵誓;
<jsp:setProperty> 設(shè)置 JavaBean 的屬性打毛;
<jsp:getProperty> 輸出某個(gè) JavaBean 的屬性;
1. <jsp:include>
語(yǔ)法:<jsp:include page="urlSpec" flush="true"/>
<jsp:include page="urlSpec" flush="true">
<jsp:param name="name" value="value"/>
.......
</jsp:include>
flush="true" 表示設(shè)定是否自動(dòng)刷新緩沖區(qū)俩功,包含大量數(shù)據(jù)時(shí)為縮短客戶端延遲幻枉,
可將一部分內(nèi)容先行輸出;
2. <jsp:forward>
語(yǔ)法:
<jsp:forward page="relativeURLSpec" />
<jsp:forward page="relativeURLSpec" />
<jsp:param name="name" value="value"/>
.......
</jsp:forward>
<jsp:forward>帶著 request 信息跳轉(zhuǎn)诡蜓;sendRedirect 不帶 request 信息跳轉(zhuǎn)熬甫;
3. <jsp:useBean>
語(yǔ)法:
<jsp:useBean id="name" class="className" scope="page|request|session|application" />
<jsp:useBean id="name" type="typeName" scope="page|request|session|application" />
id 指定該 JavaBean 實(shí)例的變量名,通過(guò) id 可以訪問(wèn)這個(gè)實(shí)例蔓罚;
class 指定 JavaBean 的類名椿肩;
scope 指定 JavaBean 的作用范圍;默認(rèn) page
type 指定 JavaBean 對(duì)象的類型豺谈,通常在查找已存在的 JavaBean 時(shí)使用郑象,這時(shí)使用 type 將不會(huì)產(chǎn)生新的對(duì)象;
4. <jsp:setProperty>
語(yǔ)法:
<jsp:setProperty name="beanName" property="propertyName" value="propertyValue" />
<jsp:setProperty name="beanName" property="propertyName" param="parameterName" />
name 指定 JavaBean 對(duì)象名茬末,與 useBean 動(dòng)作中的 id 相對(duì)應(yīng)厂榛;
property 指定 JavaBean 中需要賦值的屬性名;
value 指定要為屬性設(shè)置的值;
param 指定請(qǐng)求中的參數(shù)名(表單傳值噪沙,或 URL 傳值)炼彪,并將參數(shù)的值賦給 property 所指定的屬性;
5. <jsp:getProperty>
語(yǔ)法:
<jsp:getProperty name="beanName" property="propertyName" />
轉(zhuǎn)換成 String 類型的值
- JSP 內(nèi)置對(duì)象
request javax.servlet.http.HttpServletRequest 請(qǐng)求對(duì)象正歼,提供客戶端 HTTP 請(qǐng)求數(shù)據(jù)的訪問(wèn)
response javax.servlet.http.HttpServletResponse 響應(yīng)對(duì)象辐马,用來(lái)向客戶端輸出響應(yīng)
out javax.servlet.jsp.JspWriter 輸出對(duì)象,提供對(duì)象輸出流的訪問(wèn)
session javax.servlet.http.HttpSession 會(huì)話對(duì)象局义,用來(lái)保存服務(wù)器與每個(gè)客戶端會(huì)話過(guò)程中的信息
application javax.servlet.ServletContext 應(yīng)用程序?qū)ο笙惨脕?lái)保存整個(gè)應(yīng)用環(huán)境的信息
pageContext javax.servlet.jsp.PageContext 頁(yè)面上下文對(duì)象,用來(lái)存儲(chǔ)當(dāng)前 JSP 頁(yè)面的相關(guān)信息
config javax.servlet.ServletConfig 頁(yè)面配置對(duì)象萄唇,JSP 頁(yè)面的配置信息對(duì)象
page javax.servlet.jsp.HttpJspPage 當(dāng)前 JSP 頁(yè)面對(duì)象檩帐,即 this
exception java.lang.Throwable 異常對(duì)象,用于處理 JSP 頁(yè)面中的錯(cuò)誤
1. request
void setCharacterEncoding(String charset)
String getParameter(String name)
String[] getParameterValues(String name)
void setAttribute(String name, Object value)
Object getAttribute(String name)
2. response
void setContentType(String name)
void sendRedirect(String url)
3. out
javax.servlet.jsp.JspWriter 與 HttpServletResponse 接口的 getWriter() 方法獲得的 PrintWriter 對(duì)象功能相同另萤,
繼承自 java.io.Writer 類
數(shù)據(jù)的輸出
print/println(基本數(shù)據(jù)類型) 輸出一個(gè)基本數(shù)據(jù)類型的值
print/println(Object obj) 輸出對(duì)象的引用地址
print/println(String str) 輸出一個(gè)換行符
newLine() 換行符
緩沖區(qū)的處理
void clear() 清除輸出緩沖區(qū)的內(nèi)容湃密,若緩沖區(qū)為空,則產(chǎn)生 IOException 異常
void clearBuffer() 清除輸出緩沖區(qū)的內(nèi)容四敞,若緩沖區(qū)為空泛源,不會(huì)產(chǎn)生 IOException 異常
void flush() 直接將目前暫存于緩沖區(qū)的數(shù)據(jù)刷新輸出
void close() 關(guān)閉輸出流,流一旦被關(guān)閉忿危,則不能再使用 out 對(duì)象做任何操作
int getBufferSize() 獲取目前緩沖區(qū)的大小(kb)
int getRemaining() 獲取目前使用后還剩下的緩沖區(qū)大小(kb)
boolean isAutoFlush() 返回 true 表示緩沖區(qū)滿時(shí)(8kb)會(huì)自動(dòng)刷新輸出达箍;false 表示緩沖區(qū)滿時(shí)
不會(huì)自動(dòng)清除并產(chǎn)生異常處理
4. session
一次對(duì)話可以包含多次請(qǐng)求與響應(yīng)
void setAttribute(String name, Object value)
Object getAttribute(String name)
void invalidate() 使 session 對(duì)象失效,釋放所有屬性空間
通常把與用戶會(huì)話狀態(tài)相關(guān)的信息放入 session 范圍內(nèi)铺厨,對(duì)于一次請(qǐng)求資源間的信息傳遞缎玫,應(yīng)該把信息傳遞給
request 范圍內(nèi),然后通過(guò)請(qǐng)求轉(zhuǎn)發(fā)實(shí)現(xiàn)解滓;
5. application
application 對(duì)象在容器啟動(dòng)時(shí)實(shí)例化赃磨,在容器關(guān)閉時(shí)銷毀。作用域?yàn)檎麄€(gè) Web 容器的生命周期
實(shí)現(xiàn)了 javax.servlet.ServletContext 接口
void setAttribute(String name, Object value)
Object getAttribute(String name)
void removeAttribute(String name) 根據(jù)屬性名從 application 域中移除屬性
6. pageContext
表示當(dāng)前頁(yè)面運(yùn)行環(huán)境洼裤,用以獲取當(dāng)前 JSP 頁(yè)面的相關(guān)信息煞躬;
pageContext 對(duì)象作用范圍為當(dāng)前 JSP 頁(yè)面,可以訪問(wèn)當(dāng)前 JSP 頁(yè)面所有的內(nèi)置對(duì)象
ServletRequest getRequest() 獲取當(dāng)前 JSP 頁(yè)面的請(qǐng)求對(duì)象
ServletResponse getResponse() 獲取當(dāng)前 JSP 頁(yè)面的響應(yīng)對(duì)象
HttpSession getSession() 獲取當(dāng)前 JSP 頁(yè)面有聯(lián)系的會(huì)話對(duì)象
ServletConfig getServletConfig() 獲取當(dāng)前 JSP 頁(yè)面的 ServletConfig 對(duì)象
ServletContext getServletContext() 獲取當(dāng)前 JSP 頁(yè)面的運(yùn)行環(huán)境對(duì)象
Object getPage() 獲取當(dāng)前 JSP 頁(yè)面的 Servlet 實(shí)體
Exception getException() 獲取當(dāng)前 JSP 頁(yè)面的異常對(duì)象逸邦,page指令的 isErrorPage 設(shè)為 true
JspWriter getOut() 獲取當(dāng)前 JSP 頁(yè)面的輸出流對(duì)象
存取域?qū)傩缘姆椒? Object getAttribute(String name, int scope) 獲取范圍為 scope,名為 name 的屬性對(duì)象
void setAttribute(String name, Object value, int scope) 以名/值對(duì)的方式存儲(chǔ) scope 范圍域?qū)傩? void removeAttribute(String name, int scope) 從 scope 范圍移除名為 name 的屬性
Enumeration getArributeNamesInScope(int scope) 從 scope 范圍中獲取所有屬性的名稱
scope 參數(shù)
PAGE_SCOPE = 1 代表 page 范圍
REQUEST_SCOPE = 2 代表 request 范圍
SESSION_SCOPE = 3 代表 session 范圍
APPICATION_SCOPE = 4 代表 application 范圍
7. page 對(duì)象
JSP 翻譯后的 Servlet 對(duì)象,很少使用
8. config 對(duì)象
JSP 翻譯后的 Servlet 的 ServletConfig 對(duì)象在扰,Servlet 初始化參數(shù)缕减,web.xml
9. exception 對(duì)象
必須將此頁(yè)面中 page 指令的 isErrorPage 屬性值設(shè)為 true
-
JSP 四種作用域
頁(yè)面域
生命周期:頁(yè)面執(zhí)行期間
可訪問(wèn)性:存儲(chǔ)在頁(yè)面域的對(duì)象只對(duì)它所在的頁(yè)面可訪問(wèn)的請(qǐng)求域
生命周期:一次請(qǐng)求過(guò)程,包括請(qǐng)求被轉(zhuǎn)發(fā)(forward)或者被包含(include)的情況
可訪問(wèn)性:存儲(chǔ)在請(qǐng)求域中的對(duì)象只有在此請(qǐng)求過(guò)程中才可以被訪問(wèn)會(huì)話域
生命周期:某個(gè)客戶端與服務(wù)器所連接的時(shí)間芒珠,客戶端在第一次訪問(wèn)服務(wù)器時(shí)創(chuàng)建會(huì)話桥狡,在關(guān)閉瀏覽器或主動(dòng)退出后,會(huì)話結(jié)束
可訪問(wèn)性:存儲(chǔ)在會(huì)話域中的對(duì)象在整個(gè)會(huì)話期間(可能包含多次請(qǐng)求)都可以被訪問(wèn)應(yīng)用域
生命周期:從服務(wù)器開(kāi)始執(zhí)行服務(wù)到服務(wù)器關(guān)閉為止,時(shí)間最長(zhǎng)的
可訪問(wèn)性:存儲(chǔ)在應(yīng)用域中的對(duì)象在整個(gè)應(yīng)用程序運(yùn)行期間可以被所有 JSP 和 Servlet 共享訪問(wèn)裹芝,使用時(shí)要特別注意存儲(chǔ)數(shù)據(jù)的大小和安全性部逮,否則可能會(huì)造成服務(wù)器負(fù)載過(guò)重和線程安全性問(wèn)題
對(duì)應(yīng) pageContext,request,session,application
都通過(guò) setAttribute(String name, Object value) getAttribute(String name) 實(shí)現(xiàn)屬性對(duì)象在不同作用域的數(shù)據(jù)共享
- JavaBean
簡(jiǎn)介
一種是有用戶界面(UI,UserInterface)的 JavaBean,例如 GUI 組件
另一種是沒(méi)有用戶界面,主要負(fù)責(zé)封裝數(shù)據(jù)嫂易,業(yè)務(wù)處理的 JavaBean.(JSP 通常訪問(wèn)后一種)-
規(guī)范(Java 類)
- JavaBean 是一個(gè)公開(kāi)的(public)類兄朋,以便被外部程序訪問(wèn);
- 具有一個(gè)無(wú)參的構(gòu)造方法(默認(rèn)構(gòu)造方法)怜械,以便被外部程序?qū)嵗瘯r(shí)調(diào)用颅和;
- 提供 setXxx() 方法和 getXxx() 方法,以便讓外部程序設(shè)置和獲取其屬性缕允;
<jsp:setProperty>: 設(shè)置 JavaBean 對(duì)象的屬性值峡扩,相當(dāng)于調(diào)用 JavaBean 對(duì)象的 setter 方法
<jsp:getProperty>: 獲取 JavaBean 對(duì)象的屬性值
<jsp:useBean id="product" class="ProductBean" />
<jsp:setProperty property="price" value="23.5" name="product" />
<jsp:setProperty property="num" value="2" name="product" />
<jsp:getProperty property="totalPrice" name="product" />
<jsp:useBean>
語(yǔ)法:
<jsp:useBean id="beanInstanceName" class="package.class" scope="page|request|session|application" />
id 屬性:指定 JavaBean 對(duì)象的引用名稱和其存儲(chǔ)域?qū)傩悦? class屬性:指定 JavaBean 對(duì)象的完整類名;
scope 屬性:默認(rèn) page
```
<jsp:setProperty>
語(yǔ)法:
<jsp:setProperty name="beanInstanceName" property="propertyName" value="propertyName"|
property="propertyName" param="parameterName"| //有請(qǐng)求
property="propertyName"|
property="*"
/>
name 屬性指定 JavaBean 對(duì)象的名稱障本,其值應(yīng)與<jsp:useBean>標(biāo)簽中的 id 屬性值相同教届;
property 屬性指定 JavaBean 對(duì)象的屬性名;
value 屬性指定 JavaBean 對(duì)象的某個(gè)屬性的值驾霜,可選案训;
param 屬性將一個(gè)請(qǐng)求參數(shù)的值賦給 JavaBean 對(duì)象的某個(gè)屬性,可選寄悯;
<jsp:setProperty>元素還可用于<jsp:useBean>元素起始標(biāo)簽和終止標(biāo)簽間萤衰,
表示 JavaBean 對(duì)象實(shí)例化時(shí),對(duì)其屬性進(jìn)行初始化猜旬。若對(duì)象已存在脆栋,不執(zhí)行。
<jsp:getProperty>
語(yǔ)法:
<jsp:getProperty name="beanInstanceName" property="propertyName" />
* 表達(dá)式式語(yǔ)言(EL)
1. EL 的啟用
<%@page isELIgnored = "true|false" %>
true EL表達(dá)式被當(dāng)成字符串直接輸出
false JSP引擎調(diào)用EL引擎解釋執(zhí)行(默認(rèn))
特點(diǎn):
可以訪問(wèn) JSP 的內(nèi)置對(duì)象洒擦;
簡(jiǎn)化了對(duì) JavaBean,集合的訪問(wèn)方式椿争;
可以對(duì)數(shù)據(jù)進(jìn)行自動(dòng)類型轉(zhuǎn)換;
可以通過(guò)各種運(yùn)算符進(jìn)行運(yùn)算熟嫩;
可以使用自定義函數(shù)實(shí)現(xiàn)復(fù)雜業(yè)務(wù)功能秦踪;
2. EL 語(yǔ)法
${表達(dá)式}
表達(dá)式可以是常量,變量掸茅,可以使用 EL 隱含對(duì)象椅邓,EL 運(yùn)算符和 EL 函數(shù);
1. EL中的常量
布爾常量:true,false
整形常量:Long.MIN_VALUE 到 Long.MAX_VALUE 之間
浮點(diǎn)數(shù)常量:Double.MIN_VALUE 到 Double.MAX_VALUE
字符串常量:使用單引號(hào)或雙引號(hào)引起來(lái)的一連串字符
NULL常量:表示引用對(duì)象為空昧狮,${null} 輸出空
2. EL中的變量
${varname}
表達(dá)式按照 page, request, session, application 范圍順次查找名為 varname 的屬性景馁,
找到傳回,沒(méi)有找到回傳 null
EL保留字
and or not empty div mod instance of
eq ne It gt le ge true
false null
3. EL中的操作符
"."操作符:訪問(wèn)對(duì)象的某個(gè)屬性 ${productBean.category.name}
"[]"操作符:可用于訪問(wèn)對(duì)象的屬性逗鸣,屬性需使用雙引號(hào)括起來(lái) ${productBean["category"]["name"]}
當(dāng)屬性中包含了特殊字符合住,如:"."和"-" ${header["user-agent"]}
"[]"可以訪問(wèn)有序集合或數(shù)組中的指定索引位置的某個(gè)元素 ${array[0]}
"[]"可以訪問(wèn) Map 對(duì)象的 key 關(guān)鍵字的值 ${map["key"]}
"[]"可以和點(diǎn)操作符結(jié)合使用 ${user[0].username}
4. EL的錯(cuò)誤處理機(jī)制
不提供警告绰精,只提供默認(rèn)值和錯(cuò)誤,默認(rèn)值是空字符串透葛,錯(cuò)誤是拋出一個(gè)異常
不存在的變量:輸出空字符串
不存在對(duì)象的屬性:輸出空字符串
存在對(duì)象的不存在屬性:拋出 PropertyNotFoundException
3. EL隱含對(duì)象
1. 與范圍有關(guān)的隱含對(duì)象
pageScope =pageContext.getAttribute()
requestScope =request.getAttrbute()
sessionScope =session.getAttrbute()
applicationScope =application.getAttrbute()
2.與請(qǐng)求參數(shù)有關(guān)的隱含對(duì)象
param =request.getParameter()
paramValues =request.getParameterValues()
3.其它隱含對(duì)象
pageContext 相當(dāng)于 JSP 頁(yè)面中的 pageContext 對(duì)象笨使,用于獲取 ServletContext,request,response,session
header =request.getHeader(String name)
headerValues =request.getHeader(String name)
cookie
initParam =application.getInitParameter(String name)
4. 運(yùn)算符
1. 算術(shù)運(yùn)算符
+ - * /或div %或mod
2. 關(guān)系運(yùn)算符
==或eq !=或ne <或lt >或gt <=或le >=或ge
3. 邏輯運(yùn)算符
&&或and ||或or !或not
4. 條件運(yùn)算符
A?B:C
5. empty運(yùn)算符
檢測(cè)一個(gè)值是否為null或"空"
當(dāng)操作數(shù)指向的對(duì)象為null時(shí),返回true
當(dāng)操作數(shù)是空字符串時(shí)僚害,返回true
當(dāng)操作數(shù)是集合或數(shù)組時(shí)硫椰,如沒(méi)有任何元素,返回true
當(dāng)操作數(shù)是java.util.Map對(duì)象一個(gè)關(guān)鍵字時(shí)贡珊,如Map為空最爬,返回true
* 標(biāo)準(zhǔn)標(biāo)簽庫(kù)(JSTL)
1. JSTL函數(shù)庫(kù)分類
標(biāo)簽庫(kù) 前綴名稱 URI
核心標(biāo)簽庫(kù) c http://java.sun.com/jsp/jstl/core 包含Web應(yīng)用的通用操作的標(biāo)簽
I18N標(biāo)簽庫(kù) fmt http://java.sun.com/jsp/jstl/fmt 包含實(shí)現(xiàn)Web應(yīng)用程序的國(guó)際化的標(biāo)簽
SQL標(biāo)簽庫(kù) sql http://java.sun.com/jsp/jstl/sql 包含用于訪問(wèn)數(shù)據(jù)庫(kù)和對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作的標(biāo)簽
XML標(biāo)簽庫(kù) x http://java.sun.com/jsp/jstl/xml 包含對(duì)XML文檔中的數(shù)據(jù)進(jìn)行操作的標(biāo)簽
函數(shù)標(biāo)簽庫(kù) fn http://java.sun.com/jsp/jstl/functions 由JSTL提供一套EL自定義函數(shù),包含了JSP頁(yè)面制作者經(jīng)常要用到的字符串操作
2. [下載地址](https://tomcat.apache.org/taglibs/standard/)
將四個(gè)jar包導(dǎo)入相應(yīng)工程下的WebContent/WEB-INF/lib
使用:在JSP頁(yè)面使用JSTL標(biāo)簽庫(kù)時(shí)门岔,使用 taglib 指令指定需要使用的函數(shù)庫(kù)前綴和URI
例:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3. 核心標(biāo)簽庫(kù)
1. 通用標(biāo)簽爱致,用于操作變量
<c:out>標(biāo)簽 用于輸出數(shù)據(jù),等同于<%=表達(dá)式%>
<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] />
value表示要輸出的數(shù)據(jù)寒随,可以是JSP表達(dá)式糠悯,EL表達(dá)式或靜態(tài)值
escapeXml表示是否將>,<,&,'," 等特殊字符進(jìn)行HTML字符實(shí)體轉(zhuǎn)換后再進(jìn)行輸出,默認(rèn)值為 true
default表示如果value屬性的值為null時(shí)所輸出的默認(rèn)值
<c:set>標(biāo)簽 用于設(shè)置各種范圍域的屬性
<c:set var="varName" value="value" [scope="{page|request|session|application}"] />
varName 指定要設(shè)置的范圍域?qū)傩悦? value 指定var屬性的屬性值妻往;
scope 指定var屬性的范圍域互艾,默認(rèn)page;
<c:remove>標(biāo)簽 用于刪除各種范圍域?qū)傩?
<c:remove var="varName" [scope="{page|request|session|application}"] />
<c:catch>標(biāo)簽 用于捕獲嵌套在標(biāo)簽體中的內(nèi)容拋出的異常
<c:catch [var="varName"]>
nested actions
</c:catch>
var屬性用于標(biāo)識(shí)捕獲的異常對(duì)象名稱讯泣,并將異常對(duì)象保存在page域中纫普;
若未指定var屬性,則僅捕獲異常而不在page域中保存異常對(duì)象
2. 條件標(biāo)簽好渠,用于流程控制
<c:if> 用于條件判斷
<c:if test="condition" [var="varName"] [scope="{page|request|session|application}"] >
//condition為true時(shí)執(zhí)行的代碼
</c:if>
test 用于指定條件表達(dá)式昨稼,返回boolean類型值;
var 用于指定將test屬性的執(zhí)行結(jié)果保存到某個(gè)范圍作用域的屬性名稱拳锚;
scope 用于指定將test屬性的執(zhí)行結(jié)果保存到哪個(gè)范圍作用域中
<c:choose>
<c:choose>
//<c:when>或<c:otherwise>子標(biāo)簽
</c:choose>
<c:when>
<c:when test="condition">
//condition為true時(shí)假栓,執(zhí)行的代碼
</c:when>
<c:when>標(biāo)簽代表<c:choose>標(biāo)簽的一個(gè)條件分支,必須以<c:choose>為父標(biāo)簽霍掺,且必須在<c:otherwise>標(biāo)簽之前
<c:otherwise>
<c:otherwise>
//執(zhí)行的代碼
</c:otherwise>
3. 迭代標(biāo)簽匾荆,用于循環(huán)遍歷集合
<c:forEach>
<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
//標(biāo)簽體內(nèi)容
</c:forEach>
var用于指定將當(dāng)前迭代到的元素保存到page域中的屬性名稱;
items指定將要迭代的集合對(duì)象杆烁;
varStatus表示當(dāng)前被迭代到的對(duì)象的狀態(tài)信息牙丽,包括四個(gè)屬性:
index:當(dāng)前迭代成員的索引值;
count:當(dāng)前已迭代成員的數(shù)量兔魂;
first:當(dāng)前迭代到的成員是否為第一個(gè)剩岳;
last:當(dāng)前迭代到的成員是否為最后一個(gè);
begin表示遍歷的起始索引入热,值為整數(shù)拍棕;
end表示遍歷的結(jié)束索引,值為整數(shù)勺良;
step表示迭代的步長(zhǎng)绰播,值為整數(shù);
<c:forTokens>
<c:forTokens items="stringOfTokens" delims="delimiters"
[var="varName"] [varStatus="varStatusName"]
[begin=begin] [end=end] [step=step]>
//標(biāo)簽體內(nèi)容
</c:forTokens>
items用于指定將要迭代的字符串尚困;
delims用于指定一個(gè)或多個(gè)分隔符蠢箩;
var用于將當(dāng)前迭代的子字符串保存到page域中的屬性名稱;
4. URL標(biāo)簽事甜,用于針對(duì)URL相關(guān)的操作
<c:url>
<c:url value="value"
[var="varName"] [scope="{page|request|session|application}"]
[context="context"]>
[<c:param name="paramName" value="paramValue"/>]
</c:url>
value 指定要構(gòu)造的 URL;
var 指定構(gòu)造出的 URL 結(jié)果保存到范圍域中的屬性名稱谬泌;
context 指定 URL 地址所需的同一容器下的 Web 應(yīng)用上下文;此時(shí)value屬性中地址必須是以"/"開(kāi)頭的地址
<c:param>標(biāo)簽指定 URL 地址傳遞的參數(shù)逻谦;(可選)
<c:import>
在 JSP 頁(yè)面中導(dǎo)入一個(gè) URL 地址指向的資源內(nèi)容掌实,靜態(tài)或動(dòng)態(tài)文件
<c:import url="url"
[var="varName"] [scope="{page|request|session|application}"]
[context="context"] [charEncoding="charEncoding"]>
[<c:param name="paramName" value="paramValue"/>]
</c:import>
<c:import>標(biāo)簽與<jsp:include>動(dòng)作指令功能相似,但<jsp:include>只能包含當(dāng)前應(yīng)用下的文件資源邦马;
而<c:import>標(biāo)簽可以包含任何其他應(yīng)用或網(wǎng)站下的資源
<c:redirect>
=response.sendRedirect()
<c:redirect url="value" [context="context"]>
[<c:param name="paramName" value="paramValue"/>]
</c:redirect>
url 用于指定重定向的目標(biāo)資源的 URL 地址贱鼻;
4. I18N 標(biāo)簽庫(kù)
實(shí)現(xiàn)國(guó)際化和格式化功能,封裝了 java.util 和 java.text
國(guó)際化標(biāo)簽:綁定資源包滋将,從資源包中的本地資源文件讀取文本內(nèi)榮的功能
格式化標(biāo)簽:對(duì)數(shù)字邻悬,日期時(shí)間等本地敏感的數(shù)據(jù)按本地化信息顯示的功能
導(dǎo)入I18N標(biāo)簽庫(kù):<%@ taglib="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:formatDate>標(biāo)簽
<fmt:formatData value="date"
[type="{time|date|both}"]
[dateStyle="{default|short|medium|long|full}"]
[timeStyle="{default|short|medium|long|full}"]
[pattern="customPattern"] [timeZone="timeZone"]
[var="varName"] [scope="{page|request|session|application"] />
value 指定要格式化的日期或時(shí)間;
type 指定輸出時(shí)間部分還是日期部分随闽,或者兩者都輸出父丰;
dateStyle 指定日期部分的輸出格式,type=date或both
timeStyle 指定時(shí)間部分的輸出格式掘宪,type=time或both
pattern 指定一個(gè)自定義的日期和時(shí)間輸出格式
timeZone 指定當(dāng)前采用的時(shí)區(qū)蛾扇;
var 指定將格式化結(jié)果保存到某個(gè)范圍域中某個(gè)屬性的名稱;
<fmt:formatNumber>標(biāo)簽
<fmt:formatNumber value="numbericValue"
[type="{number|currency|percent}"] [pattern="customPattern"]
[currencyCode="currencyCode"] [currencySymbol="currencySymbol"]
[groupingUsed="{true|false}"]
[var="varName"] [scope="{page|request|session|application"] />
value 指定需要格式化的數(shù)字添诉;
type 指定值得類型屁桑,數(shù)字(number),貨幣(currency)栏赴,百分比(percent)蘑斧;
currencyCode 指定貨幣編碼;
currencySymbol 指定貨幣符號(hào)
<fmt:setLocale value="zh_CN"/>
5. 函數(shù)標(biāo)簽庫(kù)
<%@ taglib="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
${fn:函數(shù)名(參數(shù)列表)}