【JSP】EL運算式語言

來源:互聯網
上載者:User

標籤: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運算式語言

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.