JSP系列七:JSP運算式(EL運算式)

來源:互聯網
上載者:User

 

一,運算式語言:Expression Language 產生動態內容的簡潔方式。

 1,JSP2.0最重要的二項特徵:JSP文法定義定製標籤和運算式語言。

 2,為了計算和輸出儲存在標準位置的java對象的值。

  * 文法簡單有效。
  * 條件輸出。
  * 精確訪問儲存物件。
  * bean屬性的簡略使用。
  * 對集合元素的簡單訪問。
  * 對請求參數,cookie和其他請求資料的簡單訪問。
  * 自動類型轉換。
  * 空值取代錯誤訊息。
  
  * 應該將運算式語言的運算子用在表示邏輯(表示資料)的簡單任務中,避免在商業邏輯(建立並且處理資料)中使用,將商業邏輯放在java類中。

 3,EL運算式文法:
  ${ 運算式 }

  * 可以在模板文本,自訂和標準動作標籤中使用。但不能在指令碼中使用。

 4,操作符
  [] (數組記法 )或. (點號記法)操作符:用來訪問資料。
  算術操作符
  關係操作符
  邏輯操作符
  Empty操作符:檢測值是否為null或empty。
  條件操作符
  括弧操作符

 5,數組記法 [] 和點號記法.:

  * 數組記法允許在請求期間計算屬性名稱,括弧內的值可以是變數。允許使用不能成為合法屬性名稱的值在訪問結合和請求前序中有用。

二,阻止運算式語言的使用
 1,停用整個web應用中的運算式語言。
  使用servlet2.3或更早版本的web.xml檔案,則JSP2.0運算式語言自動在web應用中停用。

 2,停用多個jsp頁面中的運算式語言。
  使用web.xml中的jsp-property-group元素來指定相應的頁面。

  <jsp-config>
   <jsp-property-group>
    <url-pattern>JSP頁面相對路徑</url-pattern>
    <el-ignored>true或false</el-ignored>
   </jsp-property-group>
  </jsp-config>

 3,停用個別頁面中的運算式語言。
  使用page指令的isELEnabled屬性。只能在jsp1.2中使用。

 4,停用運算式語言的個別語句。
  將$替換為&#36.如果JSP2.0頁面即使用運算式語言又含有${字元,使用/${來輸出${。

三,阻止標準指令碼元素的使用。
 
 使用jsp-property-group元素的scripting-invalid子項目來強制執行這項約束。

 <jsp-config>
  <jsp-property-group>
   <url-pattern>JSP頁面相對路徑或*.jsp表所有JSP頁面被約束</url-pattern>
   <scripting-invalid>true或false</scripting-invalid>
  </jsp-property-group>
 </jsp-config>

四,運算式中的範圍變數

 * 範圍對象:
   要輸出範圍中屬性的值,只需要在EL中使用屬性的名字。
   EL會自動從範圍對象中按PageContext,HttpServletRequest,HttpSession,ServletContext搜尋屬性。
   也可以手動使用pageScope,requestScope,sessionScope,applicationScope來指定屬性的範圍。

   找到屬性會調用toString方法並返回調用結果,沒有找到返回Null 字元串而不是null或錯誤訊息。 

 * 請求參數:
   param :等同getParameter(String name)方法。
   paramValues 等同getParameterValues(String name)方法返回所有為指定參數名的值組成的數組。
 
 * 請求前序:
   header和headerValues:訪問HTTP請求前序的指定值和全部值。header.前序

 * Cookie的訪問:
   cookie 返回Cookie對象而不是值。需要使用Cookie類的value屬性來擷取值。cookie.userCookie.value

 * 初始化參數:
      initParam 對上下文初始化參數的訪問。initParam.參數名
 
五,javaBean與EL運算式

 * 對bean屬性的訪問提供了點號記法。系統執行反射來分析對象的內在結構。給出屬性的值。
  
 * 可以嵌套訪問屬性。

六,訪問集合
 允許使用相同的方式訪問不同類型的集合:${attributeName[entryName]}

 * attributeName為數組對象,entryName為下標。

 * attributeName實現了List介面的對象,entryName為索引。
 
 * attributeName實現了Map介面的對象,entryName為key。

 * [entryName]中的entryName可以為變數。

七,使用函數
 1,定義函數:編寫java類將方法聲明為static。
 2,關聯函數:在tld中配置函數使用<function>元素
 3,使用函數:${首碼:函數名(param1,param2,... ...)}
  

 

相關文章

聯繫我們

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