Java Web 開發(fā)從入門到實(shí)踐課件 第9章 - EL表達(dá)式和JSTL標(biāo)簽庫_第1頁
Java Web 開發(fā)從入門到實(shí)踐課件 第9章 - EL表達(dá)式和JSTL標(biāo)簽庫_第2頁
Java Web 開發(fā)從入門到實(shí)踐課件 第9章 - EL表達(dá)式和JSTL標(biāo)簽庫_第3頁
Java Web 開發(fā)從入門到實(shí)踐課件 第9章 - EL表達(dá)式和JSTL標(biāo)簽庫_第4頁
Java Web 開發(fā)從入門到實(shí)踐課件 第9章 - EL表達(dá)式和JSTL標(biāo)簽庫_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

JavaWeb開發(fā)從入門到實(shí)踐JavaWebDevelopmentFromIntroductiontoPracticeEL表達(dá)式和JSTL標(biāo)簽庫Chap09提綱EL表達(dá)式和JSTL標(biāo)簽庫EL表達(dá)式(表達(dá)式語言)和JSTL標(biāo)簽庫是用于在JSP頁面中簡化動態(tài)內(nèi)容的生成與處理的技術(shù),EL用于直接嵌入Java代碼,而JSTL提供了標(biāo)準(zhǔn)化的標(biāo)簽來實(shí)現(xiàn)常見的功能。9.1EL表達(dá)式9.2JSTL標(biāo)簽庫9.3本章小結(jié)9.1EL表達(dá)式9.1.1EL簡介9.1.2EL標(biāo)簽的功能9.1.3EL運(yùn)算符9.1.4EL隱式對象9.1.1EL簡介EL表達(dá)式,全稱為ExpressionLanguage,是JSP2.0規(guī)范中增加的語言,EL的語法格式如下:${表達(dá)式}EL以“${”開始,以“}”結(jié)束,等價于JSP表達(dá)式<%=表達(dá)式%>@WebServlet("/ElServlet")

publicclassElServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{

req.setAttribute("country","中國");

req.setAttribute("nationalFlag","五星紅旗");

req.getRequestDispatcher("index.jsp").forward(req,resp);}

}9.1.1EL簡介<%@pagecontentType="text/html;charset=UTF-8"language="java"%> <html> <head> <title>第一個EL表達(dá)式的使用</title> </head> <body> 國家:${country}<br> 國旗:${nationalFlag} </body> </html>index.jsp圖

9-1

運(yùn)行結(jié)果9.1.2EL標(biāo)簽的功能EL標(biāo)簽具有以下功能。訪問JSP中不同域的對象EL標(biāo)簽可以訪問page、request、session和application四個作用域中的數(shù)據(jù)。<styletype="text/css">

table{

border:1pxsolidgray;width:500px;

}

td{

text-align:center;

}

</style>...<%

pageContext.setAttribute("username","Charles");

request.setAttribute("sex","男");

session.setAttribute("age",35);

application.setAttribute("professional","college-teacher");

%>

9.1.2EL標(biāo)簽的功能<center>

<h2>EL表達(dá)式的使用</h2>

<table>

<tr>

<th>姓名</th><th>性別</th><th>年齡</th><th>職業(yè)</th>

</tr>

<tr>

<td>${username}</td><td>${sex}</td><td>${age}</td><td>${professional}</td>

</tr>

<tr>

<td>${pageScope.username}</td>

<td>${requestScope.sex}</td>

<td>${sessionScope.age}</td>

<td>${applicationSfessional}</td>

</tr>

</table>

</center>...9.1.2EL標(biāo)簽的功能圖

9-2

訪問作用域數(shù)據(jù)的運(yùn)行結(jié)果9.1.2EL標(biāo)簽的功能訪問JavaBean中的屬性和集合元素在JSP表達(dá)式中使用EL表達(dá)式訪問JavaBean中的屬性比較方便,EL使用“.”和“[]”操作符來訪問數(shù)據(jù),可以使用EL獲取JavaBean的屬性值、數(shù)組中的元素和集合對象中的元素,使用EL獲取JavaBean的屬性值的語法如下:${對象.屬性}或者${對象[“屬性”]}使用EL獲取數(shù)組中的元素${數(shù)組[下標(biāo)]}使用EL獲取集合對象中的元素${集合[下標(biāo)].屬性}9.1.2EL標(biāo)簽的功能案例:使用EL表達(dá)式訪問JavaBean中的屬性創(chuàng)建一個實(shí)體類UserspublicclassUsers{

privateIntegeruserId;

privateStringusername;

privateStringpassword;

privateStringemail;

publicUsers(){}

publicUsers(IntegeruserId,Stringusername,Stringpassword,Stringemail){this.userId=userId;

this.username=username;

this.password=password;

this.email=email;

}...}9.1.2EL標(biāo)簽的功能創(chuàng)建一個Servlet@WebServlet("/UsersServlet")

publicclassUsersServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{

Usersuser=newUsers(1,"Charles","123456","charles@126.com");req.setAttribute("user",user);

req.getRequestDispatcher("user.jsp").forward(req,resp);

}

}9.1.2EL標(biāo)簽的功能創(chuàng)建一個JSP頁面<table> <tr> <th>用戶編號</th> <th>用戶名</th> <th>密碼</th> <th>email</th> </tr> <tr> <td>${user.userId}</td> <td>${user.username}</td> <td>${user.password}</td> <td>${user.email}</td> </tr></table>9.1.3EL運(yùn)算符EL標(biāo)簽的運(yùn)算符大致可以分為:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符和其它運(yùn)算符等。算術(shù)運(yùn)算符算術(shù)運(yùn)算符描述示例運(yùn)算結(jié)果+加${10+5}15-減${10-5}5*乘${10*5}50/(或div)除${10/5}或者${10div5}2%(或mod)取余${10%5}或者${10mod5}0關(guān)系運(yùn)算符關(guān)系運(yùn)算符描述示例運(yùn)算結(jié)果==(或eq)等于${10==5}或${10eq5}false!=(或ne)不等于${10!=5}或${10ne5}true<(或lt)小于${10<5}或${10lt5}false>(或gt)大于${10>5}或${10gt5}true<=(或le)小于或等于${10<=5}或${10le5}false>=(或ge)大于或等于${10>=5}或${10ge5}true表

9-1

EL中算術(shù)運(yùn)算符表

9-2

EL中關(guān)系運(yùn)算符9.1.3EL運(yùn)算符EL標(biāo)簽的運(yùn)算符大致可以分為:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符和其它運(yùn)算符等。邏輯運(yùn)算符其它運(yùn)算符邏輯運(yùn)算符描述示例運(yùn)算結(jié)果&&(或and)邏輯與${true&&false}或者${trueandfalse}false||(或or)邏輯或${true||false}或者${trueorfalse}true!(或not)邏輯非${!true}或者${nottrue}false其它運(yùn)算符描述示例運(yùn)算結(jié)果empty運(yùn)算符檢測一個值是否為null${empty變量}變量不存在返回true,否則返回false?:條件運(yùn)算符${A?B:C}A為true,返回B,否則返回C表

9-3EL中邏輯運(yùn)算符表

9-4

EL中其它運(yùn)算符9.1.4EL隱式對象與作用域相關(guān)的隱式對象與作用域相關(guān)的隱式對象有pageScope、requestScope、sessionScope和applicationScope。分別對應(yīng)JSP隱含變量page、request、session和application。與請求參數(shù)相關(guān)的隱式對象與請求參數(shù)相關(guān)的隱式對象有param和paramValues。param可以取某一個參數(shù),paramValues可以取參數(shù)集合中的變量值。它等價于JSP中的request.getParameter(Stringname)和request.getParameterValues(Stringname)。獲取數(shù)據(jù)的格式如下:${EL隱式對象.參數(shù)名}9.1.4EL隱式對象案例:param和paramValues的使用form.jsp<formmethod="post"action="el.jsp">

姓名:<inputtype="text"name="name"/><br/>

愛好:<inputtype="checkbox"name="hobby"value="swimming">swimming<inputtype="checkbox"name="hobby"value="travel">travel

<inputtype="checkbox"name="hobby"value="game">game

<br/>

<inputtype="submit"value="提交">

</form>9.1.4EL隱式對象form.jsp<formmethod="post"action="el.jsp">

姓名:<inputtype="text"name="name"/><br/>

愛好:<inputtype="checkbox"name="hobby"value="swimming">swimming<inputtype="checkbox"name="hobby"value="travel">travel

<inputtype="checkbox"name="hobby"value="game">game

<br/>

<inputtype="submit"value="提交">

</form>9.1.4EL隱式對象el.jsp<body> 姓名:${}<br/> 愛好:${paramValues.hobby[0]}${paramValues.hobby[1]}${paramValues.hobby[2]}</body>圖

9-4

提交表單數(shù)據(jù)9.1.4EL隱式對象圖9-5

使用param和paramValues獲取表單數(shù)據(jù)9.2JSTL標(biāo)簽庫9.2.1JSTL標(biāo)簽概述和入門實(shí)例9.2.2JSTL和Core標(biāo)簽庫9.2JSTL標(biāo)簽庫JSTL(JavaServerPages

StandardTagLibrary,JSP標(biāo)準(zhǔn)標(biāo)簽庫)是Apache對EL表達(dá)式的擴(kuò)展,JSTL是標(biāo)簽語言,可以嵌入Java代碼到HTML中,使用標(biāo)簽的形式完成業(yè)務(wù)邏輯等功能,為頁面設(shè)計(jì)人員和程序開發(fā)人員的分工協(xié)作提供了便利。9.2.1JSTL標(biāo)簽概述和入門實(shí)例JSTL概述JSTL是一組比HTML標(biāo)簽更強(qiáng)大的功能標(biāo)簽。使用JSTL可以取代在傳統(tǒng)JSP程序中嵌入Java代碼的做法,大大提高了開發(fā)效率。使用JSTL標(biāo)簽具有以下優(yōu)點(diǎn)。(1)良好的可讀性和可維護(hù)性。業(yè)務(wù)邏輯和界面分離,提高代碼的可讀性和可維護(hù)性。(2)業(yè)務(wù)邏輯封裝。業(yè)務(wù)邏輯封裝到JSTL中,方便代碼重用,從而提高開發(fā)效率。(3)簡化開發(fā)過程。使用少量的JSTL代碼,就可以完成大量的Java代碼完成的功能。9.2.1JSTL標(biāo)簽概述和入門實(shí)例案例:JSTL標(biāo)簽庫的基本使用配置JSTL圖

9-6

復(fù)制JSTL相關(guān)的jar包1、添加Jar包9.2.1JSTL標(biāo)簽概述和入門實(shí)例圖

9-7確認(rèn)加入jar包9.2.1JSTL標(biāo)簽概述和入門實(shí)例2、JSP頁面引入JSTL標(biāo)簽庫引入Core核心標(biāo)簽庫,prefix是標(biāo)簽前綴,uri是JSTL中c.tld文件聲明的uri地址<%@taglibprefix="c"uri="/jsp/jstl/core"%>引入Functions函數(shù)標(biāo)簽庫<%@taglibprefix="fn"uri="/jsp/jstl/functions"%>9.2.1JSTL標(biāo)簽概述和入門實(shí)例編寫一個JSP頁面<body> <c:outvalue="第一個JSTL案例">這里是默認(rèn)值</c:out><br/> 字符串"helloworld!"以"he"開始嗎?${fn:startsWith("helloworld!","he")}</body>圖

9-8運(yùn)行結(jié)果9.2.2JSTL和Core標(biāo)簽庫<c:set>標(biāo)簽、<c:out>標(biāo)簽與<c:if>標(biāo)簽<c:setvalue="表達(dá)式"var="名稱"[scope="page|request|session|application"]></c:set><c:outvalue="表達(dá)式"[escapeXml="true|false"]></c:out><c:iftest="判斷條件"[var="page|request|session|application"]>

條件為值時執(zhí)行語句

</c:if>9.2.2JSTL和Core標(biāo)簽庫案例:<c:set>、<c:out>和<c:if>的使用<c:setvalue="${1+2}"var="result"scope="request"></c:set>

<c:outvalue="${result}"escapeXml="true"></c:out><br/><c:iftest="${result>2}"var="request">

結(jié)果大于2

</c:if>圖

9-9JSTL的Core標(biāo)簽庫的使用(一)9.2.2JSTL和Core標(biāo)簽庫<c:choose>標(biāo)簽、<c:when>標(biāo)簽和<c:otherwise>標(biāo)簽<c:choose>

<c:whentest="表達(dá)式1">表達(dá)式1為真時執(zhí)行的語句</c:when>

<c:whentest="表達(dá)式2">表達(dá)式2為真時執(zhí)行的語句</c:when>

[<c:otherwise>表達(dá)式都為假時執(zhí)行的語句</c:otherwise>]

</c:choose>案例:<c:choose>標(biāo)簽的使用<c:setvalue="90"var="score"></c:set>

<c:choose>

<c:whentest="${score>=90}">優(yōu)秀</c:when>

<c:whentest="${score>=80}">良好</c:when>

<c:whentest="${socre>=60}">及格</c:when>

<c:otherwise>不及格</c:otherwise>

</c:choose>9.2.2JSTL和Core標(biāo)簽庫<c:forEach>標(biāo)簽<c:forEachitems="要迭代的集合"var="變量名"begin="迭代初始值"end="迭代終值"step="迭代步長"varStatus="每個對象的狀態(tài)"> 標(biāo)簽體</c:forEach><c:forEach>標(biāo)簽屬性含義如下。(1)items:用來迭代的集合??梢允菙?shù)組、Java集合(List和Map)。(2)var:用來存放當(dāng)前迭代到的成員值。類型為String。(3)begin:指迭代開始。類型為整數(shù)。如果有items,那么從items[begin]開始迭代,如果沒有items,那么從begin開始迭代。(4)end:指迭代結(jié)束。類型為整數(shù)。如果有items,那么迭代到items[end],如果沒有items,那么迭代到end。(5)step:指迭代的步長。(6)varStatus:存放當(dāng)前迭代的索引號(index)、當(dāng)前迭代的次數(shù)(count)、是否第一次迭代(first)和最后一次迭代的狀態(tài)(last)。9.2.2

溫馨提示

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

最新文檔

評論

0/150

提交評論