標籤:clip java 不包含 toc list text 有一個 cli turn
EL簡介EL語言原本是JSTL1.0中的技術(所以EL和JSTL配合如此親密和默契也就是自然的了),但是從JSP2.0開始(JSTL1.1)就分離出來納入了JSP的標準了。因此EL不需要任何jar包,他是整合到JSP技術本身中的了。由於EL定位是
運算式語言,因此EL只能用於做簡單的運算和取值,它是JSP無指令碼化的一個利器,非常易學。
EL的特點 1、所有的EL運算式的格式 ${ expression },例如取的一個對象user的age屬性 ${ user.name } 2、可以使用在任何自訂標籤(包括JSTL , JSP Action,EL 函數)的屬性上,或者作為JSP的響應文本資料。 3、作為JSP的響應文本資料時, 若EL 運算式的值為null ,他將不會顯示任何內容。 基本類型由於EL是一種 運算式語言,因此你沒有機會去定義變數,也就是沒有諸如 int , char 之類的類型關鍵詞。只能使用字面量或者對象屬性量。 bool布爾: true false integer類型 : 如 89 , 90 ,-1 , 0 ... 浮點類型float: 如 0.12, 90.123 , -190.123,1.0E2 ... 字串類型String: 如 ‘hello‘ , "hello" ... (可以使用單引號,或者雙引號) 參考型別 : null 和 非null(主要是JavaBean對象,java.util.Map , java.util.List , Java數字,Java字串 和 EL隱式對象) 保留字and or notdiv modif emptyge ne eq gt lt true falsenull instanceof 運算子EL內建的運算子如果也不能滿足你的需求,你還可以使用JSTL,JSTL也不能滿足你,那你還可以使用自訂標籤和自訂EL函數。
類型 |
運算子 |
備忘 |
算術運算 |
+ - * / % |
注意除法是浮點數除法,7/5=1.2 |
邏輯運算 |
&& || ! |
|
關係運算 |
> >= < <= == != |
可以對字串使用,按照字典順序排列比較 |
三元運算 |
${ condition ? expA : expB } |
例如 ${sessionScope.user==null? "你沒有登入" : "你已經登入"} |
空判斷 |
empty object |
如果object是null,則直接返回true。否則接著判斷對象是Map , List, 數租 ,String如果是空的(size=0),則返回true。他是一個首碼運算子。 |
分界符 |
( ) |
控制運算子優先順序 |
屬性擷取運算子 |
[ ] 或者 . |
用於擷取對象的屬性。 obj.pro 等價於 obj["pro"]。如果obj和pro之一為null,則返回null。 後者點運算子使用的更加普遍,但是如果屬性pro不是合法的Java標識符,則必須使用[ ]來取屬性。 |
EL中的對象和他們的屬性
在LE中有2個運算子用來取對象屬性: [ ] 和 .
一般情況下,後者使用的較多。但是如果屬性包含非Java標誌符,如 “-” ,則必須使用 [ ] 來取屬性。
EL的對象主要是: JavaBean對象,java.util.Map , java.util.List , Java數字,Java字串 和 EL隱式對象。屬性運算子用來取他們的屬性。
屬性運算子可以連用: 如user.address.postCode 、 pageContext.request["method"]
JavaBean
要用EL取的JavaBean的屬性,首先這個屬性必須滿足JavaBean的規範。我們可以將一個JavaBean對象存放在pageScope,requestScope,sessionScope或者applicationScope中,在用EL取JavaBean對象的屬性時,不必指明JavaBean儲存在什麼Scope中,他會自動依次從 pageScope,requestScope,sessionScope, applicationScope中找,返回第一次找的值(因為內部使用的是PageContext對象的findAttribute方法)。但是為了讓代碼更加清晰,顯式指定Scope也未嘗不可。
package model;public class User{ private String name; private int age; public String getName(){ return name ; } public void setName( String name ){ this .name = name ; } public int getAge(){ return age ; } public void setAge( int age ){ this .age = age ; }}
<%@ page contentType= "text/html; charset=UTF-8" pageEncoding ="UTF-8" trimDirectiveWhitespaces= "true" session ="true" %><%@ page import= "model.*" %><%-- 將對一個user存放到pageScope中,並初始化age屬性為21 --%>< jsp:useBean id ="user" class= "model.User" scope = "page"> < jsp:setProperty name ="user" property= "age" value = "${param.age} " /></ jsp:useBean>user的age屬性值:${user.age} <br />user的age屬性值:${pageScope.user.age} <br />
java.util.Map mapObj [key]如果map或者key之一為null,就會返回null如果map中不包含key這個鍵,則返回null否則返回map中鍵對應的值
java.util.List 和 Java數組 arrObj[index]如果 arrObj 和 index 之一為null,則返回null如果index不能轉換為int,則拋出異常。index越界會返回null否則返回列表或者數組對應索引處的元素值 EL中的隱式對象
pageScope |
page範圍,是一個儲存k-v屬性的一個Map容器。 |
requestScope |
request範圍,是一個儲存k-v屬性 的一個Map容器 |
sessionScope |
session範圍,是一個儲存k-v屬性 的一個Map容器 |
applicationScope |
application 範圍,是一個儲存k-v屬性 的一個Map容器 |
param |
儲存求參數Paramter的Map容器。等價於request.getParameter()。 用於取單值請求參數。如果用來擷取多值參數,如checkbox 的值,則只返回第一個值。 |
paramValues |
用於擷取多值請求參數。返回所有值的String數組(例如checkbox的)。如果這個參數只有一個值,則返回一個只有1個元素的數組。等價於request,.getParameterValues() |
pageContext |
也就是JSP中的隱式對象pageContext。pageContext JSP頁面的內容物件。可以擷取其他8大對象。 ${pageContext.request.method} 擷取當前要求方法。 ${pageContext.session.id} 等價於 session.getId()${pageContext.request.queryString} 取得請求的查詢字串${pageContext.request.requestURL} 取得請求的URL ${pageContext.request.contextPath} 服務的web application 的名稱${pageContext.request.method} 取得HTTP 的方法(GET、POST)${pageContext.request.protocol} 取得使用的協議(HTTP/1.1、HTTP/1.0)${pageContext.request.remoteUser} 取得使用者名稱稱${pageContext.request.remoteAddr } 取得使用者的IP 位址${pageContext.session.new} 判斷session 是否為新的${pageContext.session.id} 取得session 的ID${pageContext.servletContext.serverInfo} 取得主機端的服務資訊 |
initParam |
ServletContext對象的getInitParameter。在web.xml中配置的全域初始參數的一個Map容器 |
cookie |
代表容納當前請求的所有cookie對象的中的一個Map,每一個cookie 的名稱name就是key. |
header |
包含所有要求標頭的一個Map。用於訪問單值要求標頭。如果用來訪問多值要求標頭,則值返回第一個值。${header["accept-language"]}${header.connection} |
headerValues |
用於擷取多值要求標頭。返回多值標題的值的String數組。如果這個頭域只有一個值,則返回一個只有1個元素的數組。 |
EL函數和自訂EL函數 見另一篇:http://www.cnblogs.com/lulipro/p/7230598.html
【JSP】EL運算式語言