這篇文章主要介紹了在JSP2.0中如何使用EL表達(dá)式語(yǔ)言,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
做網(wǎng)站、網(wǎng)站制作的開(kāi)發(fā),更需要了解用戶(hù),從用戶(hù)角度來(lái)建設(shè)網(wǎng)站,獲得較好的用戶(hù)體驗(yàn)。創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經(jīng)驗(yàn),見(jiàn)的多,溝通容易、能幫助客戶(hù)提出的運(yùn)營(yíng)建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷(xiāo)的概念。選擇創(chuàng)新互聯(lián),不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來(lái)訪(fǎng)用戶(hù)感受到浩方產(chǎn)品的價(jià)值服務(wù)。
EL(表達(dá)式語(yǔ)言)是一種數(shù)據(jù)訪(fǎng)問(wèn)語(yǔ)言,可以方便地訪(fǎng)問(wèn)和處理應(yīng)用程序數(shù)據(jù),而無(wú)需使用scriptlet或者請(qǐng)求時(shí)(request-time)表達(dá)式的值。(不需要使用< % 和%>來(lái)獲得數(shù)據(jù),EL使JSP頁(yè)面編寫(xiě)人員擺脫了java語(yǔ)言,使用戶(hù)即使不懂JAVA也可以輕松編寫(xiě)JSP程序.
在JSP2.0之前,網(wǎng)頁(yè)作者只能使用表達(dá)式< %= aName %>訪(fǎng)問(wèn)系統(tǒng)的值,比如:
< someTags:aTag attribute="< %= pageContext.getAttribute("aName") %>">
或者
< % = aCustomer.getAddress().getCountry() %>
而表達(dá)式語(yǔ)言允許網(wǎng)頁(yè)作者使用簡(jiǎn)單的語(yǔ)法訪(fǎng)問(wèn)對(duì)象。比如要訪(fǎng)問(wèn)一個(gè)簡(jiǎn)單變量,可以像下面這樣寫(xiě):
< someTags:aTag attribute="${aName}">
而訪(fǎng)問(wèn)JavaBeans屬性,可以使用:${aCustomer.address.country}
Tomcat對(duì)EL擴(kuò)展表達(dá)式的支持和配置:
tomcat5.0默認(rèn)支持EL,同時(shí)用戶(hù)可以在Web.xml文件中對(duì)整個(gè)web應(yīng)用程序進(jìn)行設(shè)置或者在每個(gè)頁(yè)面中單獨(dú)設(shè)置page指令來(lái)控制TOMCAT是否對(duì)EL的支持。
----------------------------
JSP2.0中EL擴(kuò)展表達(dá)式語(yǔ)言的設(shè)置
有了JSP2.0,就可以使用EL擴(kuò)展表達(dá)式了。對(duì)于一個(gè)單個(gè)JSP頁(yè)面,你可以使用定義page指令來(lái)設(shè)置jsp頁(yè)面是否支持EL。默認(rèn)是支持EL(如果要頁(yè)面不支持EL,請(qǐng)?jiān)O(shè)置為isELIgnored=true;
< %@ page isELIgnored="true|false"%>
對(duì)于整個(gè)JSP應(yīng)用程序,要修改WEB.XML配置(tomcat5.0.16默認(rèn)是支持EL的);
< jsp-property-group> < description> For config the ICW sample application < /description> < display-name>JSPConfiguration< /display-name> < url-pattern>/jsp/datareset.jsp< /url-pattern> < el-ignored>true< / el-ignored> < page-encoding>ISO-8859-1< /page-encoding> < scripting-invalid>true< /scripting-invalid> < include-prelude>/jsp/prelude.jspf< /include-prelude> < include-coda>/jsp/coda.jspf< /include-coda> < /jsp-property-group>
----------------------------
JSP2.0中表達(dá)式運(yùn)算符號(hào):
EL表達(dá)式運(yùn)算符包括算數(shù)運(yùn)算符(+-*/),關(guān)系運(yùn)算符(>< )和邏輯運(yùn)算符(&& || !),還有empty 判斷值是否為空,同時(shí)EL能夠?qū)ψ址?數(shù)字等各種類(lèi)型的數(shù)據(jù)之間的自動(dòng)轉(zhuǎn)換,使EL 兼容了JAVASCRIPT等腳本語(yǔ)言的優(yōu)點(diǎn),擺脫了JAVA語(yǔ)言嚴(yán)格的數(shù)據(jù)類(lèi)型限制,使用起來(lái)簡(jiǎn)單,只需要幾分鐘就可以輕松掌握(對(duì)于不懂java的網(wǎng)頁(yè)編寫(xiě)人員實(shí)在是一件好事)。
----------------------------
JSP2.0中各種運(yùn)算符運(yùn)算實(shí)例
以下是EL運(yùn)算符列表,其中empty可以檢查某個(gè)值是否為空
運(yùn)算符 說(shuō)明
+ 加
- 減
* 乘
/或div 除
% 或 mod 模(求余)
== 或 = 等于
!= 或 != 不等于
< 或 lt 小于
>或gt 大于
< =或le 小于等于
>=或ge 大于等于
&& 或 and 邏輯與
|| 或 or 邏輯或
! 或 not 邏輯非
empty 檢查是否為空值
a ? b : c 條件運(yùn)算符
----------------------------
EL表達(dá)式使用簡(jiǎn)單,在網(wǎng)頁(yè)中"${}"表示是EL表達(dá)式。${1+1} 顯示為 2
----------------------------
JSP2.0中EL算術(shù)表達(dá)式 運(yùn)算結(jié)果
${1} 1 ${1 + 2} 3 ${1.2 + 2.3} 3.5 ${-4 - 2} -6 ${21 * 2} 42 ${10%4} 2 ${10 mod 4} 2 ${1 < 2} true ${1 lt 2} true ${1 > (4/2)} false ${4.0 >= 3} true ${4.0 ge 3} true ${100.0 eq 100} true ${(10*10) != 100} false ${(10*10) ne 100} false ${(1==2) ? 3 : 4} 4
----------------------------
內(nèi)置的11個(gè)隱含對(duì)象:
為方便的獲得WEB應(yīng)用程序的相關(guān)數(shù)據(jù),EL表達(dá)式語(yǔ)言定義了一些隱含對(duì)象。隱含對(duì)象共有11個(gè)對(duì)象,(JSP中具有9個(gè)隱含對(duì)象,EL比JSP中具有更多的隱含對(duì)象,這樣EL比JSP更方便的獲取數(shù)據(jù)) 使用這些對(duì)象可以很方便的訪(fǎng)問(wèn)Web 程序數(shù)據(jù)。
隱含對(duì)象包括Session(獲得當(dāng)前web程序的Session值),cookie(獲得WEB程序的Cookie值),header,headerValues(獲得用戶(hù)的Http數(shù)據(jù)訪(fǎng)問(wèn)頭部信息),Param和ParamValues(獲得用戶(hù)提交數(shù)據(jù)參數(shù))等。
使用${隱含對(duì)象名稱(chēng)["元素"]} 就可以獲得這個(gè)值了,例如${header("host")} 可以顯示http頭部中host的值,${param("username")},可以獲得顯示用戶(hù)表單提交的用戶(hù). 使用${empty(param("username")} 可以判斷用戶(hù)提交表單是否為空等。(這樣比jsp1.2中使用request.getParamter("username") 要簡(jiǎn)化和方便很多了)
----------------------------
隱含對(duì)象及隱含對(duì)象訪(fǎng)問(wèn)實(shí)例
EL 表達(dá)式定義了11個(gè)隱含對(duì)象,使用這11個(gè)對(duì)象可以很方便的讀取到session,cookie,HttpHeader,用戶(hù)提交表單(param)等
隱含對(duì)象 內(nèi)容
applicationScope 應(yīng)用程序范圍內(nèi)的scoped變量組成的集合
cookie 所有cookie組成的集合
header HTTP請(qǐng)求頭部,字符串
headerValues HTTP請(qǐng)求頭部,字符串集合
initParam 全部應(yīng)用程序參數(shù)名組成的集合
pageContext 當(dāng)前頁(yè)面的javax.servlet.jsp.PageContext對(duì)象
pageScope 頁(yè)面范圍內(nèi)所有對(duì)象的集合
param 所有請(qǐng)求參數(shù)字符串組成的集合
paramValues 所有作為字符串集合的請(qǐng)求參數(shù)
requestScope 所有請(qǐng)求范圍的對(duì)象的集合
sessionScope 所有會(huì)話(huà)范圍的對(duì)象的集合
下面是獲取HTTP訪(fǎng)問(wèn)頭部數(shù)據(jù)和用戶(hù)提交數(shù)據(jù)的示例
EL表達(dá)式 運(yùn)算結(jié)果
${header["host"]} 這里得到HTTP連接頭部的host值
${header["accept"]} 這里獲得HTTP頭部的accept值
${header["user-agent"]} 這里獲得HTTP頭部的user-agent值
----------------------------
訪(fǎng)問(wèn)應(yīng)用程序數(shù)據(jù)
除了可以方便的訪(fǎng)問(wèn)內(nèi)置的隱含對(duì)象外,EL還可以方便的到應(yīng)用程序數(shù)據(jù),訪(fǎng)問(wèn)應(yīng)用程序數(shù)據(jù)使用兩種方式 . (點(diǎn)號(hào)運(yùn)算符)訪(fǎng)問(wèn)對(duì)象的屬性,也可以使用[] 來(lái)訪(fǎng)問(wèn)數(shù)組元素(實(shí)際上EL中訪(fǎng)問(wèn)隱含對(duì)象數(shù)據(jù)也是使用這兩種方式的)
表達(dá)式${data}表示名為data的scoped變量。可以使用點(diǎn)號(hào)(.)或方括號(hào)([])運(yùn)算符從集合中檢索屬性值:(兩種數(shù)據(jù)訪(fǎng)問(wèn)方式演示)
點(diǎn)號(hào)運(yùn)算符用于訪(fǎng)問(wèn)命名的屬性,比如表達(dá)式${customer.name}表示scoped變量customer的name屬性;
方括號(hào)運(yùn)算符可用于檢索命名的屬性,比如在${customer[“name”]}中。也可以通過(guò)${customers[0]}的形式來(lái)訪(fǎng)問(wèn)集合customers中的***項(xiàng)。
EL表達(dá)式語(yǔ)言同時(shí)還統(tǒng)一了對(duì)點(diǎn)號(hào)和方括號(hào)運(yùn)算符的處理,因此${customer.name}與${ customer[“name”]}是等價(jià)的。
----------------------------
以下可以讀取用戶(hù)提交的信息,假設(shè)用戶(hù)提交信息為 ?name=myname&alies=now.net.cn(這里有兩種訪(fǎng)問(wèn)方式,一種是使用[]來(lái)進(jìn)行訪(fǎng)問(wèn),另外一種是使用"."來(lái)進(jìn)行訪(fǎng)問(wèn),兩種訪(fǎng)問(wèn)效果是一樣的。)
${param["name"] } myname ${param.name} myname ${param["alies"] } now.net.cn ${param.alies} now.net.cn
----------------------------
訪(fǎng)問(wèn)應(yīng)用程序數(shù)據(jù)需要進(jìn)行以下幾個(gè)步驟:
1.編寫(xiě)public類(lèi)的static public 方法,只有static public的方法才能被標(biāo)記表達(dá)試訪(fǎng)問(wèn)。
----------------------------
JSP2.0中定義和使用函數(shù)
表達(dá)式語(yǔ)言允許你定義可在表達(dá)式中調(diào)用的函數(shù)。函數(shù)必須作為public類(lèi)中的public static方法編寫(xiě)。同時(shí)要將文件映射到TLD標(biāo)志庫(kù)文件中。
為了說(shuō)明函數(shù)的使用,我們舉一個(gè)簡(jiǎn)單的例子,把兩個(gè)數(shù)相加。首先要編寫(xiě)求兩數(shù)之和的Java方法代碼,如代碼示例所示,這里定義了一個(gè)靜態(tài)方法,它接收兩個(gè)字符串參數(shù),把它們解析成整數(shù)并返回它們的和。
示例文件:Compute.java
package jsp2.examples.el; import java.util.*; public class Compute { public static int add(String x, String y) { int a = 0; int b = 0; try { a = Integer.parseInt(x); b = Integer.parseInt(y); }catch(Exception e) {} return a + b; } }
用javac把這段代碼編譯成功后,下一步就要把函數(shù)的簽名映射到標(biāo)簽庫(kù)。
----------------------------
2.將方法映射到TLD表中
----------------------------
配置標(biāo)記庫(kù)描述文件 函數(shù)描述符
< function> < description>add x and y< /description> < name>add< /name> < function-class>jsp2.examples.el.Compute < /function-class> < function-signature>int add(java.lang.String,java.lang.String) < /function-signature> < /function>
現(xiàn)在我們就可以編寫(xiě)一個(gè)JSP頁(yè)面來(lái)使用這個(gè)函數(shù)。代碼示例5是包含兩個(gè)字段的一個(gè)表單,用戶(hù)輸入兩個(gè)數(shù)字并按下“求和”按鈕,就會(huì)調(diào)用上面的函數(shù)并把兩個(gè)數(shù)相加,結(jié)果在同一個(gè)頁(yè)面中顯示出來(lái)。
----------------------------
3.在JSP頁(yè)面中調(diào)用要引用的Taglib標(biāo)記,然后就可以在jsp頁(yè)面中訪(fǎng)問(wèn)了。
----------------------------
代碼示例5: math.jsp
< %@ taglib prefix="my" uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib %> < HEAD> < TITLE>Functions< /TITLE> < /HEAD> < BODY> < H3>Add Numbers< /H3> < P> < FORM action="math.jsp" method="GET"> X = < input type="text" name="x" value="${param["x"]}"> < BR> Y = < input type="text" name="y" value="${param["y"]}"> < input type="submit" value="Add Numbers"> < /FORM> < P> The sum is: ${my:add(param["x"],param["y"])} < /BODY> < /HTML>
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“在JSP2.0中如何使用EL表達(dá)式語(yǔ)言”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
名稱(chēng)欄目:在JSP2.0中如何使用EL表達(dá)式語(yǔ)言
URL地址:http://newbst.com/article18/jhegdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、手機(jī)網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、虛擬主機(jī)、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)