Java web基礎總結十之—— jsp EL運算式

來源:互聯網
上載者:User

標籤:servlet   el   el函數   jsp   java web   

Java web基礎總結十之—— jsp EL運算式一.EL運算式簡介

          EL 是Expression Language的縮寫。在jsp中有很大的作用,EL主要有以下一些作用:擷取資料,替換JSP頁面中的指令碼運算式,以從各種類型的web域中檢索java對象、擷取資料。還可以執行運算,利用EL運算式可以在JSP頁面中執行一些基本的關係運算、邏輯運算和算術運算,以在JSP頁面中完成一些簡單的邏輯運算,例如 ${user==null}。還可以擷取web開發常用的jsp的隱式對象,利用這些隱式對象,web開發人員可以很輕鬆獲得對web常用對象的引用,從而獲得這些對象中的資料。最後還可以調用Java方法,EL運算式允許使用者開發自訂EL函數,以在JSP頁面中通過EL運算式調用Java類的方法。

二.使用EL擷取資料。

       使用EL運算式擷取資料文法:“${變數名}”,在前面已經討論過,EL運算式語句在執行時,會調用pageContext.findAttribute方法,用變數名為關鍵字,分別從page、request、session、application四個域中尋找相應的變數的值,找到則返回相應對象,找不到則返回Null 字元串。

        比如:${people} ,就會分別從page、request、session、application四個域中尋找名為people的屬性,如果找到了,就返回,找不到,返回Null 字元串。

           EL運算式不但可以擷取變數的值,也可以很輕鬆擷取JavaBean的屬性,擷取數組、集合的資料,例如:${people.age}、${map.key} 等等

三.使用EL執行一些運算

    EL執行運算的文法:${運算運算式},EL運算式支援下面的一些運算子,借用一張圖來說明,如下:

 

   比如類似三目運算:

   ${ people != null?people.age : “0”}

 

三.獲得web開發常用對象

      EL運算式語言中定義了11個隱含對象,使用這些隱含對象可以很方便地擷取web開發中的一些常見對象,並讀取這些對象的資料。文法是:${隱式對象名稱} ,可以獲得對象的引用。這11個隱式對象如下所示:

       

 

四.EL函數

         EL函數,就是使用EL運算式調用Java類的方法,可以是自訂的。文法格式為:${prefix:method(params)}。使用這些函數,可以進行很多的操作,比如可以對顯示的字串進行處理。

         SUN公司針對於一些常見處理定義了一套EL函數庫。這些EL函數在JSTL開發包中進行描述,因此在JSP頁面中使用SUN公司的EL函數庫,需要匯入JSTL開發包,並在頁面中匯入EL函數庫:

<%@taglib uri="http://java.sun.com/jsp/jstl/functions"prefix="fn"%>

       下面舉個簡單的例子:使用fn:contains()函數判斷輸入的字串是否包含指定的子串。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c" %><%@ taglib uri="http://java.sun.com/jsp/jstl/functions"prefix="fn" %><html><head><title>test</title></head><body> <c:set var="theString" value=" testString"/> <c:if test="${fn:contains(theString, 'test')}">   <p>Found test <p></c:if> <c:if test="${fn:contains(theString, 'TEST')}">   <p>Found TEST <p></c:if> </body></html>


 結果是:Found test

 

五.開發自訂的ELFunction

    開發自訂的EL函數和開發自訂標籤一樣,也是包括以下三個步驟:

1.      編寫一個Java類,類中有一個靜態方法。
package com.cc;public class HelloWorld{ public static String printOutHello(String message) {        if (message == null)            return (null);       return "hello"+message;    }}


2.      在web-inf\目錄下建立一個標籤庫描述符(tld)檔案,在tld檔案中對自訂函數進行描述。

  

<?xml version="1.0" encoding="UTF-8" ?><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">        <description>A tag library exercising SimpleTag handlers.</description>    <tlib-version>1.0</tlib-version>    <short-name>SimpleTagLibrary</short-name>    <uri>/hello</uri>        <function>        <name>printOutHello</name><function-class>com.cc.HelloWorld</function-class><function-signature>java.lang.String printOutHello (java.lang.String)</function-signature>    </function></taglib>

 

3.      在jsp頁面匯入標籤庫,並調用el函數

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib uri="/WEB-INF/hello.tld" prefix="fn" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>el function test</title>  </head>    <body>    ${fn:filter("world") }    </body></html>


Java web基礎總結十之—— 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.