




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第18章EL與JSTL主要內(nèi)容
ELJSTL18.1表達(dá)式語言ELEL是JSP2.0規(guī)范中增加的,它的基本語法為:
${表達(dá)式}EL表達(dá)式類似于JSP表達(dá)式<%=表達(dá)式%>,EL語句中的表達(dá)式值會(huì)被直接送到瀏覽器顯示。18.1.1基本語法(1)獲取JavaBean的屬性值假設(shè)在JSP頁面中有這樣一句話:
<%=user.getAge()%>那么,可以使用EL獲取user對(duì)象的屬性age,代碼如下:
${user.age}或${user["age"]}(2)獲取數(shù)組中的元素假設(shè)在Controller或Servlet中有這樣一段話:
Stringdogs[]={"lili","huahua","guoguo"}; request.setAttribute("array",dogs);那么,在對(duì)應(yīng)視圖JSP中可以使用EL取出數(shù)組中的元素(也可以使用18.2節(jié)的JSTL遍歷數(shù)組),代碼如下:
${array[0]} ${array[1]} ${array[2]}(3)獲取集合對(duì)象中的元素假設(shè)在Controller或Servlet中有這樣一段話:ArrayList<UserBean>users=newArrayList<UserBean>();UserBeanub1=newUserBean("zhang",20);UserBeanub2=newUserBean("zhao",50);users.add(ub1);users.add(ub2);request.setAttribute("array",users);其中,UserBean有兩個(gè)屬性:name和age,那么在對(duì)應(yīng)視圖JSP頁面中可以使用EL取出UserBean中的屬性(也可以使用18.2節(jié)的JSTL遍歷數(shù)組),代碼如下:${array[0].name}${array[0].age}${array[1].name}${array[1].age}2.算術(shù)運(yùn)算符算術(shù)運(yùn)算符說
明示
例結(jié)
果+加${13+2}15-減${13-2}11*乘${13*2}26/(或div)除${13/2}或${13div2}6.5%(或mod)取模(求余)${13%2}或${13mod2}13.關(guān)系運(yùn)算符關(guān)系運(yùn)算符說
明示
例結(jié)
果==(或eq)等于${13==2}或${13eq2}false!=(或ne)不等于${13!=2}或${13ne2}true<(或lt)小于${13<2}或${13lt2}false>(或gt)大于${13>2}或${13gt2}true<=(或le)小于等于${13<=2}或${13le2}false>=(或ge)大于等于${13>=2}或${13ge2}true4.邏輯運(yùn)算符邏輯運(yùn)算符說
明示
例結(jié)
果&&(或and)邏輯與如果A為true,B為false,則A&&B(或AandB)false||(或or)邏輯或如果A為true,B為false,則A||B(或AorB)true!(或not)邏輯非如果A為true,則!A(或
notA)false5.empty運(yùn)算符 empty運(yùn)算符用于檢測(cè)一個(gè)值是否為null,例如,變量A不存在,則${emptyA}返回的結(jié)果為true。6.條件運(yùn)算符 EL中的條件運(yùn)算符是“?:”,例如,${A?B:C},如果A為true,計(jì)算B并返回其結(jié)果,如果A為false,計(jì)算C并返回其結(jié)果。18.1.2EL隱含對(duì)象EL隱含對(duì)象共有11個(gè),在本書中只是介紹幾個(gè)常用的EL隱含對(duì)象:pageScope、requestScope、sessionScope、applicationScope、param以及paramValues。1.與作用范圍相關(guān)的隱含對(duì)象與作用范圍有關(guān)的EL隱含對(duì)象有:pageScope、requestScope、sessionScope和applicationScope,分別可以獲取JSP隱含對(duì)象pageContext、request、session和application中的數(shù)據(jù)。如果在EL中沒有使用隱含對(duì)象指定作用范圍,則會(huì)依次從page、request、session、application范圍查找,找到就直接返回,不再繼續(xù)找下去,如果所有范圍都沒有找到,就返回空字符串。獲取數(shù)據(jù)的格式如下:${EL隱含對(duì)象.關(guān)鍵字對(duì)象.屬性}或${EL隱含對(duì)象.關(guān)鍵字對(duì)象}2.與請(qǐng)求參數(shù)相關(guān)的隱含對(duì)象與請(qǐng)求參數(shù)相關(guān)的EL隱含對(duì)象有param和paramValues。獲取數(shù)據(jù)的格式如下:${EL隱含對(duì)象.參數(shù)名}18.2JSP標(biāo)準(zhǔn)標(biāo)簽庫JSTLJSTL規(guī)范由Sun公司制定,Apache的Jakarta小組負(fù)責(zé)實(shí)現(xiàn)。JSTL標(biāo)準(zhǔn)標(biāo)簽庫由5個(gè)不同功能的標(biāo)簽庫組成,包括Core、I18N、XML、SQL以及Functions,本節(jié)只是簡要介紹了JSTL的Core和Functions標(biāo)簽庫中幾個(gè)常用的標(biāo)簽。18.2.1配置JSTL
1.復(fù)制JSTL的標(biāo)準(zhǔn)實(shí)現(xiàn)
在Tomcat的\webapps\examples\WEB-INF\lib目錄下,找到“taglibs-standard-impl-1.2.5.jar”和“taglibs-standard-spec-1.2.5.jar”文件,然后復(fù)制到Web工程的WEB-INF\lib目錄下。
2.使用taglib標(biāo)記定義前綴與uri引用
如果使用Core標(biāo)簽庫,首先需要在JSP頁面中使用taglib標(biāo)記定義前綴與uri引用,代碼如下:<%@taglibprefix="c"uri="/jsp/jstl/core"%>
如果使用Functions標(biāo)簽庫,首先需要在JSP頁面中使用taglib標(biāo)記定義前綴與uri引用,代碼如下:<%@taglibprefix="fn"uri="/jsp/jstl/functions"%>18.2.2核心標(biāo)簽庫之通用標(biāo)簽1.<c:out>標(biāo)簽<c:out>用來顯示數(shù)據(jù)的內(nèi)容,與<%=表達(dá)式%>或${表達(dá)式}類似。格式如下:<c:outvalue="輸出的內(nèi)容"[default="defaultValue"]/>或
<c:outvalue="輸出的內(nèi)容"> defaultValue </c:out>其中,value值可以是一個(gè)EL表達(dá)式,也可以是一個(gè)字符串;default可有可無,當(dāng)value值不存在時(shí),就輸出defaultValue。2.<c:set>標(biāo)簽1、設(shè)置作用域變量可以使用<c:set>在page、request、session、application等范圍內(nèi)設(shè)置一個(gè)變量。格式如下:<c:setvalue="value"var="varName"[scope="page|request|session|application"]/>2、設(shè)置JavaBean的屬性使用<c:set>設(shè)置JavaBean的屬性時(shí),必須使用target屬性進(jìn)行設(shè)置。格式如下:<c:setvalue="value"target="target"property=“propertyName"/>3.<c:remove>標(biāo)簽如果要?jiǎng)h除某個(gè)變量,則可以使用<c:remove>標(biāo)簽。例如:
<c:removevar="userName"scope="session"/>相當(dāng)于<%session.removeAttribute("userName")%>18.2.3核心標(biāo)簽庫之流程控制標(biāo)簽1.<c:if>標(biāo)簽<c:if>標(biāo)簽實(shí)現(xiàn)if語句的作用,具體語法格式如下:
<c:iftest="條件表達(dá)式">
主體內(nèi)容 </c:if>其中,條件表達(dá)式可以是EL表達(dá)式,也可以是JSP表達(dá)式。如果表達(dá)式的值為true,則會(huì)執(zhí)行<c:if>的主體內(nèi)容,但是沒有相對(duì)應(yīng)的<c:else>標(biāo)簽。如果想在條件成立時(shí)執(zhí)行一塊內(nèi)容,不成立時(shí)執(zhí)行另一塊內(nèi)容,則可以使用<c:choose>、<c:when>及<c:otherwise>標(biāo)簽。2.<c:choose>、<c:when>及<c:otherwise>標(biāo)簽<c:choose>、<c:when>及<c:otherwise>標(biāo)簽實(shí)現(xiàn)if/elseif/else語句的作用。具體語法格式如下:
<c:choose> <c:whentest="條件表達(dá)式1">
主體內(nèi)容1 </c:when> <c:whentest="條件表達(dá)式2">
主體內(nèi)容2 </c:when> <c:otherwise>
表達(dá)式都不正確時(shí),執(zhí)行的主體內(nèi)容 </c:otherwise></c:choose>18.2.4核心標(biāo)簽庫之迭代標(biāo)簽1.<c:forEach>標(biāo)簽<c:forEach>標(biāo)簽可以實(shí)現(xiàn)程序中的for循環(huán)。語法格式如下:
<c:forEachvar="變量名"items="數(shù)組或Collection對(duì)象">
循環(huán)體 </c:forEach>其中,items屬性可以是數(shù)組或Collection對(duì)象,每次循環(huán)讀取對(duì)象中的一個(gè)元素,并賦值給var屬性指定的變量,之后就可以在循環(huán)體使用var指定的變量獲取對(duì)象的元素。2.<c:forTokens>標(biāo)簽 <c:forTokens>用于迭代字符串中由分隔符分隔的各成員,它是通過java.util.StringTokenizer實(shí)例來完成字符串的分隔,屬性items和delims作為構(gòu)造StringTokenizer實(shí)例的參數(shù)。語法格式如下:
<c:forTokensvar="變量名"items="要迭代的String對(duì)象"delims="指定分隔字符串的分隔符">
循環(huán)體 </c:forTokens>18.2.5函數(shù)標(biāo)簽庫
在JSP頁面中,調(diào)用JSTL中的函數(shù)時(shí),需要使用EL表達(dá)式,調(diào)用語法格式如下:
${fn:函數(shù)名(參數(shù)1,參數(shù)2,…)}1.contains函數(shù)
該函數(shù)功能是判斷一個(gè)字符串中是否包含指定的子字符串。如果包含,則返回true,否則返回false。其定義如下:
contains(string,substring)
該函數(shù)調(diào)用示例代碼如下:
${fn:contains("Iamstudying","am")}
上述EL表達(dá)式將返回true。2.containsIgnoreCase函數(shù)
該函數(shù)與contains函數(shù)功能相似,但判斷是不區(qū)分大寫的。其定義如下:
containsIgnoreCase(string,substring)該函數(shù)調(diào)用示例代碼如下:
${fn:containsIgnoreCase("IAMstudying","am")}3.endsWith函數(shù)
該函數(shù)功能是判斷一個(gè)字符串是否以指定的后綴結(jié)尾。其定義如下:
endsWith(string,suffix)
該函數(shù)調(diào)用示例代碼如下:
${fn:endsWith("IAMstudying","am")}4.indexOf函數(shù)
該函數(shù)功能是返回指定子字符串在某個(gè)字符串中第一次出現(xiàn)時(shí)的索引,找不到時(shí),將返回-1。其定義如下:
indexOf(string,substring)
該函數(shù)調(diào)用示例代碼如下:
${fn:indexOf("Iamstudying","am")}5.join函數(shù)
該函數(shù)功能是將一個(gè)String數(shù)組中的所有元素合并成一個(gè)字符串,并用指定的分隔符分開。其定義如下:
join(array,separator)
例如,假設(shè)一個(gè)String數(shù)組my,它有3個(gè)元素:“I”、“am”和“studying”,那么,下列EL表達(dá)式:
${fn:join(my,",")}6.length函數(shù)
該函數(shù)功能是返回集合中元素的個(gè)數(shù),或者字符串中的字符個(gè)數(shù)。其定義如下:
length(input)
該函數(shù)調(diào)用示例代碼如下:
${fn:length("aaa")}7.replace函數(shù)
該函數(shù)功能是將字符串中出現(xiàn)的所有beforestring用afterstring替換,并返回替換后的結(jié)果。其定義如下:
replace(string,beforestring,afterstring)
該函數(shù)調(diào)用示例代碼如下:
${fn:replace("Iamamstudying","am","do")}8.split函數(shù)
該函數(shù)功能是將一個(gè)字符串,使用指定的分隔符separator分離成一個(gè)子字符串?dāng)?shù)組。其定義如下:
split(string,separator)
該函數(shù)調(diào)用示例代碼如下:
<c:setvar="my"value="${fn:split('Iamstudying','')}"/> <c:forEachvar="myArrayElement"items="${my}"> $
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 甲醇購銷合同
- 農(nóng)業(yè)生產(chǎn)安全技術(shù)方案
- 大數(shù)據(jù)風(fēng)控系統(tǒng)開發(fā)合同
- 代理委托消防合同
- 兩個(gè)孩子一人一個(gè)離婚協(xié)議書
- 勞務(wù)班組施工合同
- 網(wǎng)絡(luò)文學(xué)版權(quán)授權(quán)合作協(xié)議
- 青島版(2024)小學(xué)信息技術(shù)第二冊(cè)《第8課 智能互聯(lián)更高效》教學(xué)設(shè)計(jì)
- 閩教版(2020)信息技術(shù)三年級(jí)上冊(cè)《第8課 輸入法要選擇》教學(xué)設(shè)計(jì)
- 寵物醫(yī)院異味處理協(xié)議
- 2024年計(jì)算機(jī)二級(jí)WPS考試題庫(共380題含答案)
- 跨學(xué)科實(shí)踐活動(dòng)10調(diào)查我國航天科技領(lǐng)域中新型材料新型能源的應(yīng)用課件九年級(jí)化學(xué)人教版(2024)下冊(cè)
- 代理分銷銷售協(xié)議書
- 2024綜合基礎(chǔ)知識(shí)考試題庫及解析(146題)
- 中國類風(fēng)濕關(guān)節(jié)炎診療指南(2024版)解讀
- 《社會(huì)治理概論》課程教學(xué)大綱
- 讀書分享《非暴力溝通》課件(圖文)
- 鉗工實(shí)訓(xùn)安全
- 智慧生活:AI與智能家居-揭秘未來智能化生活趨勢(shì)
- 消渴癥護(hù)理查房
- 《鋼鐵是怎樣煉成的》讀書分享課件
評(píng)論
0/150
提交評(píng)論