表達(dá)式語言(Expression Language 簡稱EL)
EL最初是定義在JSTL1.0規(guī)范中剂碴,在JSP2.0中,EL從JSTL中剝離出來利赋,放到JSP規(guī)范中成為了JSP2.0規(guī)范的一部分束析,并添加了新的特性族阅。在JSP頁面中债朵,使用EL可以簡化對變量和對象的訪問子眶。
語法 :${expr }
- "[]"和"." 操作符用來操作符訪問數(shù)據(jù) ${user.name } ${user["name"]}
- 算數(shù)操作符
+ ${23+5} 28 - ${23-5} 18 * ${23*5} 115 /(div) ${23/5} 或 ${23 div 5} 4.6 %(mod) ${23%5} 或 ${23 mod 5} 3
- 關(guān)系表達(dá)式
== (eq) 等于 != (ne) 不等于 < (lt) 小于 > (gt) 大于 <= (le) 小于等于 >= (ge) 大于等于
- 邏輯運算符
&& (and) 與 || (or) 或 ! (not) 非
- Empty操作符
${empty A} 用于檢測A是否為null,或者為empty
- 條件操作符
${A ? B : C}
- 圓括號
用來改變執(zhí)行的優(yōu)先級 ${22*(3-1)}
內(nèi)置對象
JSP
使用位置 : <% %> _jspService 變量
9種: request,response,session,application,config,out,page,exception,pageContext
EL表達(dá)式
使用位置 :${ }
11種:
- pageContext: javax.servlet.jsp.PageContext對象
- pageScope :
類型是Map,將頁面范圍內(nèi)的屬性名和它的值進行映射。主要用于獲取頁面范圍內(nèi)的屬性的值 - requestScope:
類型是Map,將請求范圍內(nèi)的屬性名和它的值進行映射序芦。主要用于獲取請求范圍內(nèi)的屬性的值臭杰,與request對象不同,要想獲取request對象 ${requestContext.request} - sessionScope:
類型是Map,將會話范圍內(nèi)的屬性名和它的值進行映射谚中。主要用于獲取會話范圍內(nèi)的屬性的值渴杆,與session對象不同,要想獲取session對象 ${requestContext.session} - applicationScope:
類型是Map,將應(yīng)用程序范圍內(nèi)的屬性名和它的值進行映射宪塔。主要用于獲取應(yīng)用程序范圍內(nèi)的屬性的值磁奖。 - param:
類型是Map,將請求中的參數(shù)的名字和單個的字符串值進行映射。主要用于獲取請求中的參數(shù)值某筐,等同于調(diào)用req.getParameter(name) - paramValues:
類型是Map,將請求中的參數(shù)的名字和一個包含了該參數(shù)所有值的String類型的數(shù)組進行映射比搭。主要用于獲取請求中的參數(shù)的值,等同于調(diào)用req.getParameteValues(name) - header :
類型為Map, 等同于調(diào)用req.getHeader(name) - headerValues:
類型為Map,等同于調(diào)用req.getHeaders(name) - cookie :
類型為Map,等同于調(diào)用getCookies(),從返回的數(shù)組中找到匹配名字的第一個cookie對象南誊。 - initParam :
類型為Map,等同于調(diào)用context.getInitParameter(name)
命名變量
${user} 命名變量: 通過PageContext.findAttribute(user)方法完成身诺,該表達(dá)式按照page,request,session,application范圍順序查找命名的屬性user,如果么有找到將返回Null.也可以使用 pageScope,requestScope,sessionScope,applicationScope.指定范圍 抄囚,${sessionScope.user}
JSP標(biāo)準(zhǔn)標(biāo)簽庫 JSTL (JavaServer Pages Standard Tag Libary)
jsp提供的自定義標(biāo)簽的功能霉赡,擴展了JSP對標(biāo)簽的處理能力,很多開發(fā)人員都定制了自身應(yīng)用的標(biāo)簽庫幔托,用于完成某些功能穴亏,為了統(tǒng)一標(biāo)準(zhǔn),sun公司定制了一套標(biāo)簽庫的規(guī)范重挑,即JSTL嗓化。JSTL的目標(biāo)是為了簡化JSP頁面的設(shè)計。
-
JSTL標(biāo)簽庫
功能范圍 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
- jstl.jar : 包含的是JSTL規(guī)范中定義的接口和相關(guān)的類
- standard.jar: 包含的是開發(fā)小組對JSTL的實現(xiàn)和JSTL中5個標(biāo)簽庫的TLD文件谬哀。
- 核心標(biāo)簽庫
-
一般用途的標(biāo)簽
- <c:out> 用于計算一個表達(dá)式蟆湖,并將結(jié)果輸出到當(dāng)前的JswWriter對象類似于jsp表達(dá)式<%=expresesion %>或者El 中的 ${ }
<c:out value="value">
- <c:set> 用于設(shè)置范圍變量的值
<c:set value="value" var="var" [scope="{page|request| session|application}"]>
- <c:remove>用于移除范圍變量
<c:remove var="var" [scope="{page|request|session| application}"]> - <c:catch> 用于捕獲在其中嵌套的操作所拋出的異常對象。
* <c:catch val="exception">
<%
int i = 5;
int j = 0;
int k = i/j;
%>
</c:catch> - <c:out value="${exception.message}">
- <c:out> 用于計算一個表達(dá)式蟆湖,并將結(jié)果輸出到當(dāng)前的JswWriter對象類似于jsp表達(dá)式<%=expresesion %>或者El 中的 ${ }
-
條件標(biāo)簽
<c:if> 用于實現(xiàn)java語言中if語句的功能 <c:if test="測試條件" var="變量" scope="var的范圍"> </c:if> <c:choose> 只能包含<c:when><c:otherwise> <c:when test="測試條件"> <c:otherwise> 判斷<c:when>標(biāo)簽的測試條件是否為true玻粪,第一個測試條件為true的<c:when>標(biāo)簽體被JSP容器執(zhí)行隅津,如果沒有滿足條件的<c:when>標(biāo)簽,那么<c:otherwise>標(biāo)簽被執(zhí)行
-
迭代標(biāo)簽
<c:forEach> 對于包含了多個對象的集合進行迭代劲室,重復(fù)執(zhí)行它的標(biāo)簽體伦仍。
屬性:
var :變量
items :迭代對象
varStatus:被導(dǎo)出的保存了迭代狀態(tài)的范圍變量的名字
begin :開始迭代的索引
end :終止迭代的索引
step :迭代的步長<c:forTokens> 對于迭代字符串中由分隔符分隔的各成員
屬性:
var :變量
items :要迭代的String對象
delims:指定分割字符串的分隔符
varStatus:被導(dǎo)出的保存了迭代狀態(tài)的范圍變量的名字
begin :開始迭代的索引
end :結(jié)束迭代的索引
step :迭代的步長-
URL相關(guān)的標(biāo)簽
-
<c:import> 用于導(dǎo)入一個基于URL的資源。不僅可以在頁面中導(dǎo)入同一個web應(yīng)用程序下的資源很洋,還可以導(dǎo)入不同web應(yīng)用程序下的資源充蓝,甚至是其他網(wǎng)站的資源。
屬性:
url :要導(dǎo)入的資源的URL
context :當(dāng)使用相對URL來訪問一個外部資源時,指定其上下文名字
var :被導(dǎo)出的保存了資源內(nèi)容的范圍變量的名字
scope :var的jsp范圍谓苟,默認(rèn)為page
charEncoding :導(dǎo)入的資源內(nèi)容的字符編碼 -
<c:url> 使用正確的URL重寫規(guī)則構(gòu)造一個URL
屬性
value :要處理的URL
context :當(dāng)使用相對URL來訪問一個外部資源時官脓,指定其上下文名字
var :被導(dǎo)出的保存了處理后的URL的范圍變量的名字
scope :var的JSP范圍,默認(rèn)page例如: <c:url value="login" var="myUrl"> <c:param name="name" value="${param.name}"/> <c:param name="email" value="${param.email}"/> </c:url> <a href='<c:out value="${myUrl}">'></a>
<c:redirect> 將客戶端的請求重定向到另一個資源涝焙。
屬性:
url :重定向目標(biāo)資源的URL
context :當(dāng)使用相對URL重定向到另一個外部資源的時候卑笨,指定其上下文名字<c:param> 為一個URL添加請求參數(shù)
屬性:
name :查詢字符串參數(shù)的名字
value :參數(shù)的值
-
-
-
I18N標(biāo)簽庫
主要用于編寫國際化的web應(yīng)用程序,它分為兩部分仑撞,第一部分是國際化赤兴,第二部分是日期,時間和數(shù)字的格式化隧哮,在JSP頁面中使用I18N標(biāo)簽庫桶良,要使用taglib指令,指定引用的標(biāo)簽庫<%@ taglib url="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <fmt:formatDate> 按照區(qū)域或者定制的方式對日期和時間進行格式化 value 要格式化的日期沮翔,時間 type 指定value的日期部分還是時間部分要被格式化或者都要被格式化陨帆,默認(rèn)date dateStyle日期的預(yù)定義格式化樣式(java.text.DateFormat) timeStyle時間的預(yù)定義格式化樣式(java.text.DateFormat) default 2005-5-27 9:38:21 short 05-5-27 上午 9:39 medium 2005-5-27 9:38:21 long 2005年5月27日 上午09時38分21 full 2005年5月27日星期五 上午09時38分21CST pattern 自定義格式化日期和時間樣式,自定義樣式必須使用在java.text.SimpleDateFormat類中定義的樣式語法采蚀。一旦指定了pattern屬性疲牵,type,dateStyle timeZone使用的時區(qū). 參照java.util.TimeZone var 被導(dǎo)出的保存了格式化后的結(jié)果范圍變量的名字 scope var的JSP范圍