版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寫字樓裝修市場發(fā)展趨勢預(yù)測
- 供電服務(wù)需求分析
- 2024新版工程咨詢合同
- Sophoraflavanone-G-Standard-生命科學(xué)試劑-MCE
- S-Ladostigil-TV-3279-生命科學(xué)試劑-MCE
- 排水管道更新改造工程項(xiàng)目可行性分析
- 四年級數(shù)學(xué)(除數(shù)是兩位數(shù))計(jì)算題專項(xiàng)練習(xí)及答案
- 二年級數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)匯編
- 高效農(nóng)業(yè)項(xiàng)目建設(shè)方案
- 糖尿病足的辯證
- 智能安防監(jiān)控設(shè)備采購合同
- 工程進(jìn)度款申請表
- 當(dāng)代社會(huì)政策分析 課件 第八章 兒童社會(huì)政策
- 2023年徽商銀行市區(qū)支行招聘綜合柜員信息筆試上岸歷年典型考題與考點(diǎn)剖析附帶答案詳解
- 2024年湖南化工職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫帶答案解析
- JGT 472-2015 鋼纖維混凝土
- TD/T 1061-2021 自然資源價(jià)格評估通則(正式版)
- 24春國家開放大學(xué)《建筑力學(xué)#》形考任務(wù)1-4參考答案
- 推拿手法完整版本
- 運(yùn)動(dòng)與健康(山東大學(xué))學(xué)堂云網(wǎng)課答案
- 單側(cè)雙通道UBE手術(shù)
評論
0/150
提交評論