第8章EL表達(dá)式語言與JSTL課件_第1頁
第8章EL表達(dá)式語言與JSTL課件_第2頁
第8章EL表達(dá)式語言與JSTL課件_第3頁
第8章EL表達(dá)式語言與JSTL課件_第4頁
第8章EL表達(dá)式語言與JSTL課件_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第8章EL表達(dá)式語言與JSTL標(biāo)簽庫本章主要內(nèi)容:8.1EL表達(dá)式——重點(diǎn)8.2JSTL標(biāo)簽庫——重點(diǎn)8.3Core標(biāo)簽庫——重點(diǎn)8.4其他標(biāo)簽庫——了解8.1EL表達(dá)式語言1.EL語法2.EL內(nèi)置對象8.1表達(dá)式語言

(ExpressionLanguage,EL)與JSP腳本相比,EL提供了一種更加簡化的方式來生成動(dòng)態(tài)Web頁面。EL的基本語法如下:${表達(dá)式expr}其中,$為EL語法中的輸出符號,expr

為EL有效表達(dá)式,它包含在一對大括號內(nèi)。EL有效表達(dá)式可以包含文字、操作符、變量(對象引用)和函數(shù)調(diào)用等。例如:${23+15.28}1.EL表達(dá)式語法內(nèi)容類型合法取值Booleantrue和falseInteger與Java類似??梢园魏握龜?shù)或負(fù)數(shù),例如24、-45、567FloatingPoint與Java類似??梢园魏握幕蜇?fù)的浮點(diǎn)數(shù),例如-1.8E-45、4.567String任何由單引號或雙引號限定的字符串。對于單引號、雙引號和反斜杠,使用反斜杠字符作為轉(zhuǎn)義序列。必須注意,如果在字符串兩端使用雙引號,則單引號不需要轉(zhuǎn)義NullnullEL有效表達(dá)式支持的內(nèi)容類型術(shù)語定義算術(shù)型+、-、*、/、%邏輯型and、&&、or、||、!、not關(guān)系型==、!=、<=、>=。可以與其他值進(jìn)行比較,或與布爾型、字符串型、整型或浮點(diǎn)型文字進(jìn)行比較??湛詹僮鞣乔熬Y操作,可用于確定值是否為空。條件型A?B:C。根據(jù)A賦值的結(jié)果來賦值B或C。EL有效表達(dá)式支持的操作符舉例:el.jsp<%@pagecontentType="text/html"%><%@pagepageEncoding="UTF-8"%><html><head><title>EL有效表達(dá)式</title></head><body>${true}<br>${23+15.28}<br>${12>10}<br>${(12>10)&&(a!=b)}</body></html>說明:JSP2.0以后,EL可以應(yīng)用在JSP頁面的模版文本中,也可以作為JSP標(biāo)記的動(dòng)態(tài)屬性。它唯一不能使用的場合就是JSP的腳本元素內(nèi)部。類別標(biāo)識(shí)符描述JSPpageContext

JSP頁的上下文。作用域pageScope

與page作用域的屬性的名稱和值相關(guān)聯(lián)的類requestScope

與request作用域的屬性的名稱和值相關(guān)聯(lián)的類sessionScope

與session作用域的屬性的名稱和值相關(guān)聯(lián)的類applicationScope

與application作用域的屬性的名稱和值相關(guān)聯(lián)的類請求參數(shù)param

存儲(chǔ)請求參數(shù)名稱-值對的類。paramValues

將請求參數(shù)的所有值作為String

數(shù)組存儲(chǔ)的類請求頭header

按名稱存儲(chǔ)請求頭部主要值的類headerValues

將請求頭部的所有值作為String

數(shù)組存儲(chǔ)的類Cookiecookie

按名稱存儲(chǔ)請求附帶的cookie的類初始化參數(shù)initParam

按名稱存儲(chǔ)Web應(yīng)用程序上下文初始化參數(shù)的類2.EL支持的隱式對象例8-1:使用EL實(shí)現(xiàn)一個(gè)計(jì)算器。8-1.jsp<%@pagelanguage=“java”contentType=“text/html;charset=gb2312"%><html><head><title>8-1.jsp</title></head><body><h1align=“center”>加法計(jì)算器</h1><formaction=“”><inputtype=“text”name=“num1”value=“${param.num1}”/><inputtype=“text”name=“num2”value=“${param.num2}”/><inputtype=“text”name=“num3”value=“${param.num1+param.num2}”/> <inputtype=“submit”value=“計(jì)算”/></form></body></html>8.2JSTL標(biāo)簽庫JSP標(biāo)準(zhǔn)標(biāo)記庫(JSPStandardTagLibrary,JSTL):是一個(gè)實(shí)現(xiàn)Web應(yīng)用程序中常用功能的定制標(biāo)記庫集,這些功能包括輸出、程序流程控制、數(shù)據(jù)管理格式化、XML操作以及數(shù)據(jù)庫訪問等。JSTL標(biāo)記庫:實(shí)現(xiàn)大量服務(wù)器端Java應(yīng)用程序常用的基本功能。通過為典型表示層任務(wù)(如數(shù)據(jù)格式化和迭代或條件內(nèi)容)提供標(biāo)準(zhǔn)實(shí)現(xiàn),JSTL使JSP作者可以專注于特定于應(yīng)用程序的開發(fā)需求,而不是為這些通用操作“另起爐灶”。JSTL的發(fā)展史JSTL的第一個(gè)版本1.0發(fā)布于2002年6月,從1.1版本開始,它已經(jīng)成為JavaEE標(biāo)準(zhǔn)的核心技術(shù)規(guī)范,J2EE1.4規(guī)范支持的JSTL版本為1.1,它要求Servlet2.3和JSP1.2以上版本的Web容器的支持。在最新的JavaEE5規(guī)范中支持的JSTL版本為1.2,它要求的Servlet2.4和JSP2.0以上版本的Web容器的支持。JSTL的意義JSTL的推出,大大提高了JSP頁面的開發(fā)效率,為頁面設(shè)計(jì)人員和程序開發(fā)人員的分工協(xié)作提供了便利。有了JSTL,JavaWeb開發(fā)人員就可以將精力專注于實(shí)現(xiàn)特定的業(yè)務(wù)邏輯,而不必費(fèi)力去實(shí)現(xiàn)迭代和條件判斷等通用功能,開發(fā)效率將大大提高。另外,統(tǒng)一的JSTL也大大提高了JavaWeb應(yīng)用的兼容性和可移植性。標(biāo)記庫名稱URI前綴說明corehttp:///jsp/jstl/corec核心功能實(shí)現(xiàn),包括變量管理、迭代和條件判斷等I18Nhttp:///jsp/jstl/fmtfmt國際化,數(shù)據(jù)格式顯示SQLhttp:///jsp/jstl/sqlsql操作數(shù)據(jù)庫XMLhttp:///jsp/jstl/xmlx操作XMLFnhttp:///jsp/jstl/functionsfn常用函數(shù)庫,包括String操作,集合類型操作等

JSTL的功能標(biāo)記庫分類JSTL的使用步驟在Web應(yīng)用中使用JSTL需要以下步驟:

將JSTL所需的jar添加的Web工程的類路徑在JSP頁面中使用taglib指令引入標(biāo)記庫使用JSTL標(biāo)記,完成特定功能。舉例:demo1.jsp<%@pagecontentType="text/html"%><%@pagepageEncoding="UTF-8"%><%@taglib

uri="http:///jsp/jstl/core"prefix="c"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>demo1.jsp</title></head><body><center>JSTL測試<c:outvalue="${1+1}"/></center></body></html>運(yùn)行效果圖8.2Core標(biāo)記庫core標(biāo)記庫:用來實(shí)現(xiàn)Web應(yīng)用中最常用的功能,在JSTL的5個(gè)標(biāo)記庫中,core標(biāo)記庫是最基礎(chǔ)的標(biāo)記庫,其它標(biāo)記庫都是在core標(biāo)記庫的協(xié)同下來實(shí)現(xiàn)自身功能。Core標(biāo)記庫的內(nèi)容在core標(biāo)記庫中,主要包含以下幾類標(biāo)記:通用標(biāo)記:<c:out>、<c:set>、<c:remove>、<c:catch>。條件標(biāo)記:<c:if>、<c:choose>、<c:when>、<c:otherwise>。迭代標(biāo)記:<c:forEach>、<c:forTokens>。URL標(biāo)記:<c:import>、<c:url>、<c:redirect>、<c:param>。1.通用標(biāo)記<c:out>標(biāo)記<c:out>標(biāo)記:負(fù)責(zé)把變量或表達(dá)式的計(jì)算結(jié)果輸出,其功能與調(diào)用out.println()基本一致。<c:out>可以包含標(biāo)記體內(nèi)容,也可以不包含。當(dāng)不包含體內(nèi)容時(shí),語法格式如下:<c:outvalue=“var”[escapeXml]=“{true|false}”[default=“defaultValue”]/>其中屬性default的值為當(dāng)變量var不存在時(shí),標(biāo)記缺省顯示的內(nèi)容。當(dāng)包含體內(nèi)容時(shí),標(biāo)記<c:out>的語法格式如下:<c:outvalue=“var”[escapeXml]=“{true|false}”>

這里是BODY,可以是任何合法的jsp或者是html代碼。</c:out>程序7-2:c_out.jsp<%@pagecontentType="text/html"%><%@pagepageEncoding="UTF-8"%><%@taglibprefix="c"uri="http:///jsp/jstl/core"%><html><head><title>JSTL:c:out的使用</title></head><bodybgcolor="#FFFFFF"><hr><c:set

var="sessionAttr"value="Iaminsession"scope="session"/><c:set

var="pageAttr"value="Iaminpage"scope="page"/><c:set

var="requestAttr"value="Iaminrequest"scope="request"/><c:outvalue="以下輸出的是前面設(shè)置的屬性<br>"escapeXml="false"/><c:outvalue="${sessionAttr}"/><br><c:outvalue="${pageAttr}"/><br><c:outvalue="${requestAttr}"/><br><c:outvalue="${test_A}"default="沒有test這個(gè)變量"/><br><c:outvalue="${sessionAttr}">

對不起,sessionAttr變量不存在

</c:out><br><c:outvalue="${test_B}">

對不起,test_B變量不存在

</c:out></html><c:set>標(biāo)記:用于在某個(gè)范圍(page,request,session或application)里面設(shè)置特定的變量,或者設(shè)置某個(gè)已經(jīng)存在的Javabean的屬性。其功能類似于<%request.setAttribute(“name”,value)%>。當(dāng)不包含標(biāo)記體內(nèi)容時(shí),語法如下:<c:setvalue=“value”var=“varName”[scope=“{page|request|session|application}”]/>其中:屬性var為設(shè)置的變量的名稱,value為變量的值,scope為可選屬性,表示設(shè)置變量的范圍,缺省為page。<c:set>標(biāo)記當(dāng)標(biāo)記包含體內(nèi)容時(shí),<c:set>語法如下:<c:set

var=“varName”[scope=“{page|request|session|application}”]> Bodycontent</c:set>由于包含體內(nèi)容時(shí),將采用體內(nèi)容作為變量的初始值,因此,此時(shí)標(biāo)記不能帶有屬性value。<c:remove>標(biāo)記<c:remove>:刪除某個(gè)變量。類似于<%session.removeAttribute(“name”)%>它的語法格式為:

<c:remove

var=“varName”[scope=“{page|request|session|application}”]/>其中:屬性var為要?jiǎng)h除的變量的名稱程序:c_var.jsp<%@pagecontentType=“text/html”%><%@pagepageEncoding=“UTF-8”%><%@taglibprefix=“c”uri=“http:///jsp/jstl/core”%><html><head><title>JSTL:使用c:set</title></head><bodybgcolor=“#FFFFFF”><!-設(shè)置一個(gè)屬性,然后輸出它-><br><c:set

var=“maxCount”value=“100”/><c:outvalue=“${maxCount}”/><!-設(shè)置屬性時(shí),把它的值放在標(biāo)記的body中。-><br><c:set

var=“password”>123456</c:set><c:outvalue=“${password}”/><!-設(shè)置變量,并且指定它們的范圍-><c:setvalue=“20”var=“sessionAttr”scope=“session”/><c:remove

var=“sessionAttr”/><br><c:outvalue=“${sessionAttr}”/></body></html><c:catch>標(biāo)記<c:catch>:捕捉嵌套在它內(nèi)部的標(biāo)記和腳本所拋出的異常。類似于<%try{}catch{}%>。它的語法格式為:<c:catch[var=“varName”]>nestedactions</c:catch>其中可選屬性var用來保存捕捉到的異常信息。程序:c_catch.jsp<%@pagecontentType=“text/html”%><%@pagepageEncoding=“UTF-8”%><%@taglibprefix=“c”uri=“http:///jsp/jstl/core”%><html><head><title>JSTL:catch的使用</title></head><bodybgcolor=“#FFFFFF”><c:catch

var=“error”><%

Integer.parseInt(“hello”);%></c:catch><hr>異常:

<c:outvalue=“${error}”/><hr>異常exception.getMessage=<c:outvalue=“${error.message}”/></body></html>運(yùn)行效果2.Core條件標(biāo)記Core標(biāo)記中提供了以下四個(gè)標(biāo)記來幫助JSP開發(fā)人員實(shí)現(xiàn)分支處理。它們是:<c:if>、<c:choose>、<c:when>和<c:otherwise><c:if>標(biāo)記<c:if>:類似于編程語言中的if–else語句。格式:<c:iftest=“$param.role==1”var=“user”scope=“session”>

Itisadmin.</c:if>功能:若參數(shù)role的值為1,則顯示Itisadmin,并將判斷結(jié)果true保存在user中。<c:choose><c:when><c:otherwise>標(biāo)記<c:choose><c:when><c:otherwise>標(biāo)記:用于實(shí)現(xiàn)復(fù)雜判斷,類似if-else-if語句。格式舉例:<c:choose><c:whentest=“${param.sample==1}”>not2,itis1

</c:when>

<c:whentest=“${param.sample==2}”>

not1,itis2</c:when><c:otherwise>not1,2

</c:otherwise></c:choose>3.core迭代標(biāo)記Core標(biāo)記中的迭代標(biāo)記有兩個(gè):<c:forEach>、<c:forTokens>。<c:forEach>標(biāo)記<c:forEach>標(biāo)記:作用類似for循環(huán)語句。格式舉例:

<c:forEach

var=“i”begin=“1”end=“10”step=“1”>${i}<br/></c:forEach><c:forTokens>標(biāo)記<c:forTokens>:可以根據(jù)某個(gè)分隔符來分隔指定的字符串。格式舉例:<c:forTokens

items=“aa,bb,cc,dd”bengin=“0”end=“2”step=“2”delims=“,”var=“aValue”>${aValue}</c:forTokens>4.Core的URL操作標(biāo)記Core標(biāo)記包含三個(gè)URL操作有關(guān)的標(biāo)記,分別是:<c:import>,和<c:url>,<c:redirect>。另外還有一個(gè)輔助標(biāo)記<c:param>。<c:import>標(biāo)記<c:import>:包含另一個(gè)jsp頁面到本頁面來。格式舉例:<c:import

url=“/MyHtml.html”var=“thisPage”><c:import

url=“/MyHtml.html”var=“thisPage”><c:url>標(biāo)記<c:url>:用于得到一個(gè)URL地址。格式舉例:<c:urlvalue=“/MyHtml.html”var=“urlPage”/><a

href=“${urlPage}”>鏈接</a><c:redirect>標(biāo)記<c:redirect>:用于頁面的重定向。格式舉例:<c:redirect

url=“/MyHtml.html”/><c:param>標(biāo)記<c:param>:用來為包含或重定向的頁面?zhèn)鬟f參數(shù),一般和<c:import>和<c:redirect>配合使用。格式舉例:<c:redirect

url=“/MyHtml.jsp”/><c:paramname=“username”value=“Tom”/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論