<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無線&移動互聯網技術研發

    換位思考·····
    posts - 19, comments - 53, trackbacks - 0, articles - 283
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    JSP 之 EL(Expression Language)表達式

    Posted on 2009-06-06 08:58 Gavin.lee 閱讀(535) 評論(0)  編輯  收藏 所屬分類: jsp 【勿忘】
    首先看一下EL的歷史:

    Sun Microsystems 在 1997 年下半年推出了 Servlet API,將它定位為 CGI 開發人員使用的一種功能強大的工具,這些開發人員正在尋找比 CGI(通用網關接口)編程更高效和輕便的優秀解決方案。但是,開發人員很快就發現 Servlet API 有其自身的缺點,從代碼的可維護性和可擴展性方面來看,該解決方案難以實施。在某種程度上,這種缺點促使團隊開發一種允許在 HTML 中嵌入 Java 代碼的解決方案 — JavaServer Pages (JSP) 因此而出現。

    不久以后,開發人員意識到將表達與商務邏輯混合在一起的復雜 JSP 頁不易于理解和維護。不能編寫 scriplet 的頁面制作人員所面臨的另一個問題是由于標準標記集而帶來的 JSP 限制。這些限制使得難點變成利用 JSP 實施自定義標記的機制來創建 JSP 自定義標記。

    JSP 標準標記庫 (JSTL) 是自定義標記庫的集合,它將許多 JSP 應用程序通用的核心功能封裝為簡單的標記。它不再需要使用 JSP scriptlet
    和表達式,而使用表達式的更高級語法。它還實現了通用目的的功能,如迭代和條件化、數據管理格式化、XML 操作、數據庫訪問、國際化和對本地化信息敏感的格式化標記以及 SQL 標記。JSTL 1.0 推出了 EL 的概念,但只限于 JSTL 標記。在 JSP 2.0 中,您可以使用帶模板文本的 EL,甚至可以通過 javax.servlet.jsp.el 獲得編程方式的訪問。el簡化了在JSP中訪問變量的方式,降低靜態HTML與Java代碼的耦合

    EL  ----JSP 2.0利器之一
    在我們了解 JSTL 如何適應環境以及與 JSTL 表達式語言相關的限制以后,我們來看 JSP 2.0 的重要優點之一 — JSP 表達式語言 (EL)。我們將特別涉及到以下內容:

    在無腳本的 JSP 頁中支持 EL 的機制

     
    在使用頁面指示時,您可以通過將 isELEnabled 指示的值相應地設為“true”或“false”,指定是否支持 EL

     

    表達式語言語法

    JSP 表達式語言允許頁面制作人員使用簡單語法訪問組件,如:

    ${expr}

    在以上的語法中,expr 代表有效的表達式。必須注意,該表達式可以與靜態文本混合,還可以與其他表達式結合成更大的表達式。

    JSP EL 中的有效表達式

    有效表達式可以包含文字、操作符、變量(對象引用)和函數調用。我們將分別了解這些有效表達式中的每一種:

    ${ “Hello world” }        //輸出字符串常量
    ${ str }                             //輸出字符串變量str的值
    ${ 3 + 2 }                        //輸出3+2的結果
    ${ user.name }                //輸出user對象的name屬性
    ${ user[“name”] }        //同上
    ${ sessionScope[“user”].name } //同上

    文字

    JSP 表達式語言定義可在表達式中使用的以下文字:

    文字 文字的值

    Boolean

    true 和 false

    Integer

    與 Java 類似。可以包含任何正數或負數,例如 24、-45、567

    Floating Point

    與 Java 類似。可以包含任何正的或負的浮點數,例如 -1.8E-45、4.567

    String

    任何由單引號或雙引號限定的字符串。對于單引號、雙引號和反斜杠,使用反斜杠字符作為轉義序列。必須注意,如果在字符串兩端使用雙引號,則單引號不需要轉義。

    Null null

    讓我們來看一些使用文字作為有效表達式的示例:

    ${false} <%-- evaluates to false --%>
    ${3*8)

    操作符

    JSP 表達式語言提供以下操作符,其中大部分是 Java 中常用的操作符:

    術語 定義

    算術型

    +、-(二元)、*、/、div、%、mod、-(一元)

    邏輯型

    and、&&、or、||、!、not

    關系型

    ==、eq、!=、ne、、gt、<=、le、>=、ge。可以與其他值進行比較,或與布爾型、字符串型、整型或浮點型文字進行比較。

    空操作符是前綴操作,可用于確定值是否為空。

    條件型 A ?B :C。根據 A 賦值的結果來賦值 B 或 C。

    讓我們來看一些使用操作符作為有效表達式的示例:

    ${ (6 * 5) + 5 } <%-- evaluates to 35 --%>
    ${empty name}

    隱式對象

    JSP 表達式語言定義了一組隱式對象,其中許多對象在 JSP scriplet 和表達式中可用:

    術語 定義

    pageContext

    JSP 頁的上下文。它可以用于訪問 JSP 隱式對象,如請求、響應、會話、輸出、servletContext 等。例如,${pageContext.response} 為頁面的響應對象賦值。

    此外,還提供幾個隱式對象,允許對以下對象進行簡易訪問:

    術語 定義

    param

    將請求參數名稱映射到單個字符串參數值(通過調用 ServletRequest.getParameter (String name) 獲得)。getParameter (String) 方法返回帶有特定名稱的參數。表達式 $(param.name) 相當于 request.getParameter (name)。

    paramValues

    將請求參數名稱映射到一個數值數組(通過調用 ServletRequest.getParameter (String name) 獲得)。它與 param 隱式對象非常類似,但它檢索一個字符串數組而不是單個值。表達式 ${paramvalues.name) 相當于 request.getParamterValues(name)。

    header

    將請求頭名稱映射到單個字符串頭值(通過調用 ServletRequest.getHeader(String name) 獲得)。表達式 ${header.name} 相當于 request.getHeader(name)。

    headerValues

    將請求頭名稱映射到一個數值數組(通過調用 ServletRequest.getHeaders(String) 獲得)。它與頭隱式對象非常類似。表達式 ${headerValues.name} 相當于 request.getHeaderValues(name)。

    cookie 將 cookie 名稱映射到單個 cookie 對象。向服務器發出的客戶端請求可以獲得一個或多個 cookie。表達式 ${cookie.name.value} 返回帶有特定名稱的第一個 cookie 值。如果請求包含多個同名的 cookie,則應該使用 ${headerValues.name} 表達式。
    initParam 將上下文初始化參數名稱映射到單個值(通過調用 ServletContext.getInitparameter(String name) 獲得)。

    除了上述兩種類型的隱式對象之外,還有些對象允許訪問多種范圍的變量,如 Web 上下文、會話、請求、頁面:

    術語 定義

    pageScope

    將頁面范圍的變量名稱映射到其值。例如,EL 表達式可以使用 ${pageScope.objectName} 訪問一個 JSP 中頁面范圍的對象,還可以使用 ${pageScope.objectName.attributeName} 訪問對象的屬性。

    requestScope

    將請求范圍的變量名稱映射到其值。該對象允許訪問請求對象的屬性。例如,EL 表達式可以使用 ${requestScope.objectName} 訪問一個 JSP 請求范圍的對象,還可以使用 ${requestScope.objectName.attributeName} 訪問對象的屬性。

    sessionScope

    將會話范圍的變量名稱映射到其值。該對象允許訪問會話對象的屬性。例如:

    <% session.put (name", "John Doe"); %>
    $sessionScope.name} <%-- evaluates to John Doe --%>
    <%= session.get("name"); %><%-- This is an equivalent scripting expression --%>

    applicationScope

    將應用程序范圍的變量名稱映射到其值。該隱式對象允許訪問應用程序范圍的對象。

    必須注意,當表達式根據名稱引用這些對象之一時,返回的是相應的對象而不是相應的屬性。例如:即使現有的 pageContext 屬性包含某些其他值,${pageContext} 也返回 PageContext 對象。   http://www.oracle.com/technology/global/cn/sample_code/tutorials/jsp20/simpleel.html

    主站蜘蛛池模板: 亚洲精品偷拍视频免费观看| 男人j进女人p免费视频| 老色鬼久久亚洲AV综合| 日本久久久久亚洲中字幕| 九九热久久免费视频| 99在线视频免费| 最近的中文字幕大全免费版| 免费无码又爽又刺激高潮| 亚洲国产成人乱码精品女人久久久不卡| 亚洲视频在线精品| 亚洲精品乱码久久久久久下载| 亚洲色偷偷色噜噜狠狠99网| 国产精品自拍亚洲| **aaaaa毛片免费| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 久久免费高清视频| 免费无码看av的网站| 色偷偷尼玛图亚洲综合| 亚欧免费一级毛片| 久久精品国产精品亚洲人人 | 在线观看免费无码视频| 女人与禽交视频免费看| 亚洲AV无码不卡无码| 国产精品自拍亚洲| 亚洲人成无码网站| 在线观看亚洲精品专区| 国产亚洲精久久久久久无码AV| 日批视频网址免费观看| 亚洲男女性高爱潮网站| 国产美女精品视频免费观看| 亚洲精品中文字幕无码AV| 天天操夜夜操免费视频| 黄色a三级三级三级免费看| 日本免费高清一本视频| 男人天堂2018亚洲男人天堂| 91精品免费高清在线| 亚洲免费精彩视频在线观看| 久久精品国产免费| 亚洲中文字幕久久精品无码A| 亚洲国产精品成人一区| 久久国产色AV免费观看|