空間站

          北極心空

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
          關鍵字:   jsp    

          the JavaServer Pages Standard Tag Library (JSTL)
          JSP Standard Tag Library (JSTL)
          EL(expression language)表達式

          EL 表達式的格式是這樣的:用美元符號($)定界,內容包括在花括號({})中。
          清單 1. 說明 EL 表達式定界符的 JSTL 操作
          <c:out value="${user.firstName}"/>;
          此外,您可以將多個表達式與靜態文本組合在一起以通過字符串并置來構造動態屬性值,如清單 4 所示。單獨的表達式由標識符、存取器、文字和運算符組成。標識符用來引用存儲在數據中心中的數據對象。EL 有 11 個保留標識符,對應于 11 個 EL 隱式對象。假定所有其它標識符都引用限制了作用域的變量。存取器用來檢索對象的特性或集合的元素。文字表示固定的值 — 數字、字符、字符串、布爾型或空值。運算符允許對數據和文字進行組合以及比較。
          清單 2. 組合靜態文本和多個 EL 表達式以指定動態屬性值
          <c:out value="Hello ${user.firstName} ${user.lastName}"/>;
          隱式對象
          表 1 中列出了 11 個 EL 隱式對象的標識符。不要將這些對象與 JSP 隱式對象(一共只有九個)混淆,其中只有一個對象是它們所共有的。

          表 1. EL 隱式對象
          類別 標識符 描述
          JSP pageContext PageContext 實例對應于當前頁面的處理
          作用域 pageScope 與頁面作用域屬性的名稱和值相關聯的 Map 類
          requestScope 與請求作用域屬性的名稱和值相關聯的 Map 類
          sessionScope 與會話作用域屬性的名稱和值相關聯的 Map 類
          applicationScope 與應用程序作用域屬性的名稱和值相關聯的 Map 類
          請求參數 param 按名稱存儲請求參數的主要值的 Map 類
          paramValues 將請求參數的所有值作為 String 數組存儲的 Map 類
          請求頭 header 按名稱存儲請求頭主要值的 Map 類
          headerValues 將請求頭的所有值作為 String 數組存儲的 Map 類
          Cookie cookie 按名稱存儲請求附帶的 cookie 的 Map 類
          初始化參數 initParam 按名稱存儲 Web 應用程序上下文初始化參數的 Map 類

          盡管 JSP 和 EL 隱式對象中只有一個公共對象(pageContext),但通過 EL 也可以訪問其它 JSP 隱式對象。原因是 pageContext 擁有訪問所有其它八個 JSP 隱式對象的特性。實際上,這是將它包括在 EL 隱式對象中的主要理由。

          其余所有 EL 隱式對象都是映射,可以用來查找對應于名稱的對象。前四個映射表示先前討論的各種屬性作用域。可以用它們來查找特定作用域中的標識符,而不用依賴于 EL 在缺省情況下使用的順序查找過程。

          接下來的四個映射用來獲取請求參數和請求頭的值。因為 HTTP 協議允許請求參數和請求頭具有多個值,所以它們各有一對映射。每對中的第一個映射返回請求參數或頭的主要值,通常是恰巧在實際請求中首先指定的那個值。每對中第二個映射允許檢索參數或頭的所有值。這些映射中的鍵是參數或頭的名稱,但這些值是 String 對象的數組,其中的每個元素都是單一參數值或頭值。

          cookie 隱式對象提供了對由請求設置的 cookie 名稱的訪問。這個對象將所有與請求相關聯的 cookie 名稱映射到表示那些 cookie 特性的 Cookie 對象。

          最后一個 EL 隱式對象 initParam 是一個映射,它儲存與 Web 應用程序相關聯的所有上下文的初始化參數的名稱和值。初始化參數是通過 web.xml 部署描述符文件指定的,該文件位于應用程序的 WEB-INF 目錄中。
          最終,EL 還包括了幾個用來操作和比較 EL 表達式所訪問數據的運算符。表 2 中匯總了這些運算符。

          表 2. EL 運算符

          類別 運算符
          算術運算符 +、-、*、/(或 div)和 %(或 mod)
          關系運算符 ==(或 eq)、!=(或 ne)、<</code>;(或 lt)、>;(或 gt)、<=(或 le)和

          >;=(或 ge)
          邏輯運算符 &&(或 and)、||(或 or)和 !(或 not)
          驗證運算符 empty
          清單 3. 利用算術運算符的 EL 表達式
          ${item.price * (1 + taxRate[user.address.zipcode])}
          清單 4. 利用關系和邏輯運算符的 EL 表達式
          ${(x >;= min) && (x <= max)}
          表 3. EL 運算符優先級(自頂到底,從左到右)

          [], .
          ()
          unary -、not、!、empty
          *、/、div、%、mod
          +、binary -
          () <</code>;、>;、<=、>;=、lt、gt、le、ge
          ==、!=、eq、ne
          &&、and
          ||、or
          清單 5. 用于 JSTL core 庫 EL 版本的 taglib 偽指令
          <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>;
          ?

          這個問題一般是由于你使用的jstl版本造成的。
          你的頁面應該會包含如下代碼:
          <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
          <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
          <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
          這是最新版的jstl 1.1路徑,而如果你使用的是舊版1.0的則需要把路徑中的jsp去掉,如下:
          <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
          <%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
          <%@ taglib uri="http://java.sun.com/jstl/sql" prefix="sql" %>

          關鍵字:   Tag標簽    
          EL腳本語言的配置和支持:
          對于一個單個JSP頁面,你可以使用定義page指令來設置jsp頁面是否支持EL。默認是支持EL(如果要頁面不支持EL,請設置為isELIgnored=true;
          1. <%@ page isELIgnored="true|false"%>

          1. 對于整個JSP應用程序,要修改WEB.XML配置(tomcat5.0.16默認是支持EL的);
          2. 〈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> 〈 / 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>

          1. 算術運算符演示:
            以下是EL運算符列表,其中empty可以檢查某個值是否為空
          1. 運算符
          說明 運算符 說明

          +

          > 或 gt 大于

          -

          <= 或 le 小于等于

          *

          >= 或 ge 大于等于

          / 或 div

          && 或 and 邏輯與

          % 或 mod

          模(求余)

          || 或 or 邏輯或

          == 或 =

          等于

          ! 或 not 邏輯非

          !=

          不等于

          empty 檢查是否為空值

          < 或 lt

          小于

          a ? b : c 條件運算符
          1. EL表達式使用簡單,在網頁中"${}"表示是EL表達式。${1+1} 顯示為 2
          1. EL算術表達式
          運算結果 EL 關系運算表達式 運算結果
          ${1} 1 ${1 < 2} true
          ${1 + 2} 3 ${1 lt 2} true
          ${1.2 + 2.3} 3.5 ${1 > (4/2)} false
          ${-4 - 2} -6 ${4.0 >= 3} true
          ${21 * 2} 42 ${4.0 ge 3} true
          ${10%4} 2 ${100.0 eq 100} true
          ${10 mod 4} 2 ${(10*10) != 100} false
          ${(1==2) ? 3 : 4} 4 ${(10*10) ne 100} false

           

          1. 隱含對象數據演示:
          2. EL 表達式定義了11個隱含對象,使用這11個對象可以很方便的讀取到session,cookie,HttpHeader,用戶提交表單(param)等
          1. 隱含對象

          內容

          applicationScope

          應用程序范圍內的scoped變量組成的集合

          cookie

          所有cookie組成的集合

          header

          HTTP請求頭部,字符串

          headerValues

          HTTP請求頭部,字符串集合

          initParam

          全部應用程序參數名組成的集合

          pageContext

          當前頁面的javax.servlet.jsp.PageContext對象

          pageScope

          頁面范圍內所有對象的集合

          param

          所有請求參數字符串組成的集合

          paramValues

          所有作為字符串集合的請求參數

          requestScope

          所有請求范圍的對象的集合

          sessionScope

          所有會話范圍的對象的集合

          1. 下面是獲取HTTP訪問頭部數據和用戶提交數據的示例
          1. EL表達式
          運算結果
          ${header["host"]}
          這里得到HTTP連接頭部的host值
          ${header["accept"]} 這里獲得HTTP頭部的accept值
          ${header["user-agent"]} 這里獲得HTTP頭部的user-agent值
          以下可以讀取用戶提交的信息,假設用戶提交信息為 ?name=myname&alies=now.net.cn(這里有兩種訪問方式,一種是使用[]來進行訪問,另外一種是使用.來進行訪問,兩種訪問效果是一樣的。)
          ${param["name"] } myname
          ${param.name} myname
          ${param["alies"] } now.net.cn
          ${param.alies} now.net.cn
        1. eg: ${empty(requestScope.backpath)?'admin_TcAction.do?method=findFinish':requestScope.backpath}
          posted on 2008-08-06 12:40 蘆葦 閱讀(6797) 評論(1)  編輯  收藏 所屬分類: 其他HTML & Script

          Feedback

          # re: EL表達式的應用 2013-04-21 15:45 cf2huihui
          不錯,讓我重新了解了以前的知識  回復  更多評論
            

          主站蜘蛛池模板: 乌兰浩特市| 承德市| 麦盖提县| 潢川县| 上虞市| 通渭县| 宁城县| 阳江市| 长寿区| 江城| 安丘市| 和静县| 承德县| 台中县| 新宾| 宣武区| 花莲县| 开平市| 泗阳县| 阜平县| 龙泉市| 化隆| 江陵县| 金山区| 崇州市| 磐石市| 犍为县| 东丰县| 崇左市| 三江| 武义县| 鄢陵县| 疏勒县| 常山县| 九江市| 连州市| 蓝山县| 噶尔县| 乐至县| 中江县| 保康县|