javaweb回顧第九篇EL運算式,javaweb第九篇el

來源:互聯網
上載者:User

javaweb回顧第九篇EL運算式,javaweb第九篇el

 前言:關於EL表示式開發用的非常多,現在我們回顧一下關於如果去操作EL運算式

1:EL運算式文法

所有EL運算式都是由{開始}結束,運算式中用.和[]操作符來訪問資料比喻${user.userName}、${user["userName"]}是等效的。

2:幾個重要的操作符

算術,邏輯,關係操作符和我們java文法操作的一樣。

2.1:Empty操作符

Empty操作是判斷一個值是否為null或者"",寫法如${!empty user}

2.2:三目運算子

EL運算式同時也是支援三目運算子${A?結果1:結果2}比如:${1+1>2?1:2}輸出的結果是2

3:隱含對象

在EL運算式中有11中隱含對象下面我一一列舉下來

3.1:pageContext

pageContext是javax.servlet.jsp.PageContext的執行個體,可以通過pageContext訪問ServletContext,Request,Response,Session等對象。

3.2:pageScope

我們以前看過Jsp的範圍,這個和Jsp範圍一樣,從意思我們可以看出這個主要是擷取頁面範圍內屬性的。我們看個例子我們先建立一個jsp檔案

<%UserBean user1=new UserBean();user1.setAge(12);user1.setEmail("123@outlook.com");user1.setUserName("李四");pageContext.setAttribute("user1", user1);%>

然後我們開始訪問${pageScope.user1.userName} 我也順便把第一個pageContext的應用加上${pageContext.request.requestURI}

<body>${pageContext.request.requestURI}${pageScope.user1.userName}</body>

3.3:requestScope

主要擷取請求範圍內的屬性的值,在上面的代碼修改為以下代碼

<%UserBean user1=new UserBean();user1.setAge(12);user1.setEmail("123@outlook.com");user1.setUserName("李四");request.setAttribute("user", user1);%>

jsp中的el為${requestScope.user1.userName}

3.4:sessionScope

 這個主要擷取會話範圍中屬性的值。 我們先建立一個Servlet類然後給Session賦值

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {                UserBean user=new UserBean();        user.setAge(19);        user.setEmail("16455@qq.com");        user.setUserName("張三");        HttpSession session=request.getSession();        session.setAttribute("user", user);    }

然後在el.jsp中來擷取Session屬性的值${sessionScope.user.userName},記得先運行Servlet類然後在運行el.jsp效果如下

3.5:applicationScope

這個是擷取全域範圍內對象的值,這個不過多的說和上面都一樣。

3.6:param

如果我們想擷取URL(http://localhost:8080/taglib-test/el.jsp?userName=趙四)請求的參數值,我們就可以使用${param.userName}來擷取

3.7:paramValues

這個主要來擷取參數請求參數的相關資訊是一個數組,用的不是很多

3.8:header

用來擷取請求的頭資訊,如${header["User-Agent"]}來擷取頭資訊中參數的值

3.9:headerValues

主要用來擷取要求標頭資訊所有的值。

3.10:cookie

不用說太多

3.11:initParam

主要擷取web應用程式初始化參數的值

4:命名變數

在EL運算式中對於命名變數值是通過pageContext.findAttribute()方法來尋找完成的,比喻上面如果我們不寫他們的範圍,那麼就會按照page,Request,Session,application來進行尋找,所以我們盡量去寫,這樣可以達到最佳化程式的目的。

5:EL運算式使用函數

這個和自訂標籤很像,我們也可以使用函數

首先我們先定義一個類(我建立了一個很簡單的)

public class ElFun {    public static String getHelloWorld(String str)    {        return str;    }}

然後我們在建立一個tld檔案

<?xml version="1.0" encoding="GBK"?>  <taglib xmlns="http://java.sun.com/xml/ns/j2ee"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"           xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee       http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"           version="2.0">         <!-- 定 義函數版本 -->      <tlib-version>1.0</tlib-version>      <!-- 定 義函數名稱 -->      <short-name>el</short-name>      <!-- 定 義第一個函數 -->      <function>          <!-- 定 義一個函數 -->          <name>hello</name>          <!-- 定 義函數處理類 -->          <function-class>com.lp.els.ElFun</function-class>          <!-- 定 義函數的對應方法 -->          <function-signature>              java.lang.String getHelloWorld(java.lang.String)          </function-signature>      </function>    </taglib> 

大家注意一個事項:就是這個定義的函數名是你jsp中el運算式要引用的不要弄錯了

然後我們就可以在jsp頁面引用

<body><%@ taglib uri="/WEB-INF/tlds/el.tld" prefix="el"%>${el:hello("Hello World")}</body>

從這裡我們看到el後面的hello並不是我們在類中getHelloWorld。還有就是不要習慣性的在el運算式後面加入;號,會帶來 錯誤。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.