EL常用表達式

****EL(表達式語言)是一種數據訪問語言,可以方便地訪問和處理應用程序數據,而無需使用scriptlet或者請求時(request-time)表達式的值。(不需要使用< % 和%>來獲得數據,EL使JSP頁面編寫人員擺脫了java語言,使用戶即使不懂JAVA也可以輕鬆編寫JSP程序.
在JSP2.0之前,網頁作者只能使用表達式< %= aName %>訪問系統的值,比如:
< someTags:aTag attribute=”< %= pageContext.getAttribute(“aName”) %>”>
或者
< % = aCustomer.getAddress().getCountry() %>
而表達式語言允許網頁作者使用簡單的語法訪問對象。比如要訪問一個簡單變量,可以像下面這樣寫:
< someTags:aTag attribute=”aName>JavaBeans使 {aCustomer.address.country}
Tomcat對EL擴展表達式的支持和配置:
tomcat5.0默認支持EL,同時用戶可以在Web.xml文件中對整個web應用程序進行設置或者在每個頁面中單獨設置page指令來控制TOMCAT是否對EL的支持。
----------------------------
JSP2.0中EL擴展表達式語言的設置
有了JSP2.0,就可以使用EL擴展表達式了。對於一個單個JSP頁面,你可以使用定義page指令來設置jsp頁面是否支持EL。默認是支持EL(如果要頁面不支持EL,請設置爲isELIgnored=true;
< %@ page isELIgnored=”true|false”%>
對於整個JSP應用程序,要修改WEB.XML配置(tomcat5.0.16默認是支持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中表達式運算符號:
EL表達式運算符包括算數運算符(+-*/),關係運算符(>< )和邏輯運算符(&& || !),還有empty 判斷值是否爲空,同時EL能夠對字符串,數字等各種類型的數據之間的自動轉換,使EL 兼容了JAVASCRIPT等腳本語言的優點,擺脫了JAVA語言嚴格的數據類型限制,使用起來簡單,只需要幾分鐘就可以輕鬆掌握(對於不懂java的網頁編寫人員實在是一件好事)。
----------------------------
JSP2.0中各種運算符運算實例
以下是EL運算符列表,其中empty可以檢查某個值是否爲空
運算符 說明
+ 加
- 減
* 乘
/或div 除
% 或 mod 模(求餘)
== 或 = 等於
!= 或 != 不等於
< 或 lt 小於

或gt 大於
< =或le 小於等於
=或ge 大於等於
&& 或 and 邏輯與
|| 或 or 邏輯或
! 或 not 邏輯非
empty 檢查是否爲空值
a ? b : c 條件運算符
----------------------------
EL表達式使用簡單,在網頁中”"EL {1+1} 顯示爲 2
----------------------------
JSP2.0中EL算術表達式 運算結果
11 {1 + 2} 3
1.2+2.33.5 {-4 - 2} -6
21242 {10%4} 2
10mod42 {1 < 2} true
1lt2true {1 > (4/2)} false
4.0>=3true {4.0 ge 3} true
100.0eq100true {(10*10) != 100} false
(1010)ne100false {(1==2) ? 3 : 4} 4
----------------------------
內置的11個隱含對象:
爲方便的獲得WEB應用程序的相關數據,EL表達式語言定義了一些隱含對象。隱含對象共有11個對象,(JSP中具有9個隱含對象,EL比JSP中具有更多的隱含對象,這樣EL比JSP更方便的獲取數據) 使用這些對象可以很方便的訪問Web 程序數據。
隱含對象包括Session(獲得當前web程序的Session值),cookie(獲得WEB程序的Cookie值),header,headerValues(獲得用戶的Http數據訪問頭部信息),Param和ParamValues(獲得用戶提交數據參數)等。
使用[""], {header(“host”)} 可以顯示http頭部中host的值,param("username"),.使 {empty(param(“username”)} 可以判斷用戶提交表單是否爲空等。(這樣比jsp1.2中使用request.getParamter(“username”) 要簡化和方便很多了)
----------------------------
隱含對象及隱含對象訪問實例
EL 表達式定義了11個隱含對象,使用這11個對象可以很方便的讀取到session,cookie,HttpHeader,用戶提交表單(param)等
隱含對象 內容
applicationScope 應用程序範圍內的scoped變量組成的集合
cookie 所有cookie組成的集合
header HTTP請求頭部,字符串
headerValues HTTP請求頭部,字符串集合
initParam 全部應用程序參數名組成的集合
pageContext 當前頁面的javax.servlet.jsp.PageContext對象
pageScope 頁面範圍內所有對象的集合
param 所有請求參數字符串組成的集合
paramValues 所有作爲字符串集合的請求參數
requestScope 所有請求範圍的對象的集合
sessionScope 所有會話範圍的對象的集合
下面是獲取HTTP訪問頭部數據和用戶提交數據的示例
EL表達式 運算結果
header[host]HTTPhost {header[“accept”]} 這裏獲得HTTP頭部的accept值
header[useragent]HTTPuseragent便,EL便,使.()使[](EL使) {data}表示名爲data的scoped變量。可以使用點號(.)或方括號([])運算符從集合中檢索屬性值:(兩種數據訪問方式演示)
點號運算符用於訪問命名的屬性,比如表達式customer.namescopedcustomername {customer[“name”]}中。也可以通過customers[0]customersEL {customer.name}與{ customer[“name”]}是等價的。  
  ----------------------------  
  以下可以讀取用戶提交的信息,假設用戶提交信息爲 ?name=myname&alies=now.net.cn(這裏有兩種訪問方式,一種是使用[]來進行訪問,另外一種是使用”.”來進行訪問,兩種訪問效果是一樣的。)
{param[“name”] } myname
param.namemyname {param[“alies”] } now.net.cn
param.aliesnow.net.cn1.publicstaticpublicstaticpublicJSP2.0使調publicpublicstaticTLD使Java:Compute.javapackagejsp2.examples.el;importjava.util.;publicclassComputepublicstaticintadd(Stringx,Stringy)inta=0;intb=0;trya=Integer.parseInt(x);b=Integer.parseInt(y);catch(Exceptione)returna+b;javac2.TLD<function><description>addxandy</description><name>add</name><functionclass>jsp2.examples.el.Compute</functionclass><functionsignature>intadd(java.lang.String,java.lang.String)</functionsignature></function>JSP使5調3.JSP調Taglib,jsp5:math.jsp<uri=http://jakarta.apache.org/tomcat/jsp2exampletaglib<HEAD><TITLE>Functions</TITLE></HEAD><BODY><H3>AddNumbers</H3><P><FORMaction=math.jspmethod=GET>X=<inputtype=textname=xvalue= {param[“x”]}”>
< BR>
Y = < input type=”text” name=”y” value=”param[y]><inputtype=submitvalue=AddNumbers></FORM><P>Thesumis: {my:add(param[“x”],param[“y”])}
< /BODY>
< /HTML>
----------------------------**

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章