EL表達式語言及EL函數庫 知識詳解 學習筆記

本文查閱方法:
    一、查閱目錄 —— 查閱本文目錄,肯定想要查閱的目錄標題
    二、快捷「查找」 —— 在當前瀏覽器頁面,按鍵 「Ctrl+F」 按鍵組合,開啓瀏覽器的查找功能,
             在查找搜索框中 輸入須要查閱的 目錄標題,即可以直接到達 標題內容 的位置。
    三、學習小結 —— 文中的學習小結內容,是筆者在學習以後總結出的,開發時可直接參考其進行應用開發的內容, 進一步加快了本文的查閱 速度。(水平有限,僅供參考。)html

 

 


 

本文目錄java

  學習小結web

 

  一、EL表達式簡介數組

 

  二、EL主要做用-- 獲取數據瀏覽器

 

  三、EL主要做用-- 執行運算tomcat

 

  四、EL主要做用-- 得到web開發經常使用對象服務器

 

  五、EL主要做用-- 使用EL調用Java方法cookie

 

  六、EL自定義函數 開發步驟session

 

  七、標籤庫描述文件-- TLD文件模版及其元素的意義app

 

  八、EL自定義函數開發 Demo樣例

 

  九、EL注意事項

 

  十、EL表達式保留關鍵字

 

  十一、SUN公司:EL函數庫

 

  十二、EL函數庫-- fn:toLowerCase 

 

  1三、EL函數庫-- fn:toUpperCase 

 

  1四、EL函數庫-- fn:trim 

 

  1五、EL函數庫-- fn:length

 

  1六、EL函數庫-- fn:split 

 

  1七、EL函數庫-- fn:join 

 

  1八、EL函數庫-- fn:indexOf

 

  1九、EL函數庫-- fn:contains 

 

  20、EL函數庫-- fn:startsWith       

 

  2一、EL函數庫-- fn:replace 

 

  2二、EL函數庫-- fn:substring 

 

  2三、EL函數庫-- fn:substringAfter

 

  2四、EL函數庫-- fn:escapeXml 

 

 

 

 


 

 

學習小結

 

(1)在JSP頁面中調用EL函數庫的步驟

 

  (a)在工程中導入JSTL包。

 

  (b)在JSP頁面中導入EL函數庫。

 

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

 

  (c)在須要的位置調用EL函數

 

    ${prefix:method(params)}   例如:${fn:length(list)}

 

 

 

(2)經常使用EL函數庫列舉

 

  fn:toLowerCase 

 

    ${fn:toLowerCase("Www.SinA.org")} 的返回值爲字符串「www.sina.org」

 

    ${fn:toLowerCase("")}的返回值爲空字符串

 

 

 

  fn:toUpperCase 

 

    ${fn:toUpperCase("Www.SinA.org")} 的返回值爲字符串「WWW.SINA.ORG」

 

    ${fn:toUpperCase("")}的返回值爲空字符串

 

 

 

  fn:trim 

 

    ${fn:trim("   www.sina.org  ")} 的返回值爲字符串「www.sina.org」。

 

 

 

  fn:length

 

    ${fn:length(list) }

 

    ${fn:length("好好學習,每天向上!") } ——返回值10

 

 

 

  fn:split 

 

    ${fn:split("www.sina.org", ".")[1]}的返回值爲字符串「sina」。

 

 

 

  fn:join 

 

    ${fn:join(fn:split("www,sina,org", ","), ".")} 的返回值爲字符串「www.sina.org」

 

    ${fn:join(stringArray, 「.")}返回字符串「www.sina.org」 。其中的stringArray爲數組{"www","sina","org"}

 

 

 

  fn:indexOf

 

    ${fn:indexOf("www.sina.org","in")} 的返回值爲5

 

 

 

  fn:contains -- fn:containsIgnoreCase 

 

     ${fn:contains("aaaabbbcc","ab") } 的返回值爲true

 

  備註:fn:contains(string, substring)等價於fn:indexOf(string, substring) != -1。

 

 

 

  fn:startsWith -- fn:endsWith 

 

    ${fn:startsWith("www.sina.org","sina")}的返回值爲false

 

 

 

  fn:replace 

 

    ${fn:replace("www sina org", " ", ".")}的返回值爲字符串「www.sina.org」

 

 

 

  fn:substring 

 

    ${fn:substring("www.sina.org", 4, 8)} 的返回值爲字符串「sina」

 

 

 

  fn:substringAfter -- fn:substringBefore 

 

    ${fn:substringAfter(「www.sina.org」, 「.」)}的返回值爲字符串「sina.org」。

 

 

 

  fn:escapeXml 

 

    ${fn:escapeXml("<a href=''>點點</a>")}

 

 

 

 


 

 

 

一、EL表達式簡介

 

    EL 全名爲Expression Language。EL主要做用以下:

 

    (1)獲取數據:

 

    EL表達式主要用於替換JSP頁面中的腳本表達式,以從各類類型的web域 中檢索java對象、獲取數據。(例如:某個web域 中的對象,訪問javabean的屬性、訪問list集合、訪問map集合、訪問數組)

 

    (2)執行運算:

 

    利用EL表達式能夠在JSP頁面中執行一些基本的關係運算、邏輯運算和算術運算,以在JSP頁面中完成一些簡單的邏輯運算。如:${user==null}

 

    (3)獲取web開發經常使用對象

 

    EL 表達式定義了一些隱式對象,利用這些隱式對象,web開發人員能夠很輕鬆得到對web經常使用對象的引用,從而得到這些對象中的數據。

 

    (4)調用Java方法

 

    EL表達式容許用戶開發自定義EL函數,以在JSP頁面中經過EL表達式調用Java類的方法。            

 

             

 

             

 


 

 

 

二、EL主要做用-- 獲取數據

 

    使用EL表達式獲取數據語法:「${標識符}」

 

    (1)EL表達式語句在執行時,會調用pageContext.findAttribute()方法,用標識符爲關鍵字,分別從page、request、session、application四個域中查找相應的對象,找到則返回相應對象,找不到則返回""。(注意,不是null,而是空字符串)。  

 

        示例:${user}

 

    (2)EL表達式也能夠很輕鬆獲取JavaBean的屬性,或獲取數組、Collection、Map類型集合的數據,

 

        例如:

 

            ${user.address.city}

 

            ${user.list[0]}:訪問有序集合某個位置的元素

 

            ${map.key}  : 得到map集合中指定key的值

 

    (3)結合JSTL的foreach標籤,使用EL表達式也能夠很輕鬆迭代各類類型的數組或集合,例如迭代數組,迭代collection類型集合,迭代map類型集合。

 

 

 

    Demo樣例:

 

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

 

    <%@page import="cn.itcast.domain.Person"%>

 

    <%@page import="cn.itcast.domain.Address"%>

 

     

 

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

 

    <html>

 

      <head>

 

        <title>el表達式獲取數據</title>

 

      </head> 

 

     

 

      <body> 

 

        <br/>----------------獲取域中存的數據-------------------------<br/>

 

        <% 

 

          String data = "abcd";

 

          request.setAttribute("data",data);

 

        %>

 

                ${data }  <%--pageContext.findAttribute("data") ""--%>

 

     

 

        <br/>----------------獲取域中存的javabean的數據-------------------------<br/>

 

        <% 

 

          Person p = new Person();

 

          p.setName("aaaa"); 

 

          request.setAttribute("person",p);

 

        %>

 

                ${person.name } 

 

     

 

         <br/>----------------獲取域中存的javabean中的javabean的數據---------------------<br/>

 

        <% 

 

          Person p1 = new Person();

 

          Address a = new Address();

 

          a.setCity("上海");

 

          p1.setAddress(a);

 

          request.setAttribute("p1",p1);

 

        %>

 

                ${p1.address.city }

 

      

 

       <br/>----------------獲取域中存的list集合中的數據-------------------------<br/> 

 

        <% 

 

          List list = new ArrayList();

 

          list.add(new Person("aaa"));

 

          list.add(new Person("bbb"));

 

          request.setAttribute("list",list);

 

        %>

 

                ${list['1'].name }

 

     

 

        <br/>----------------獲取域中map集合中的數據-------------------------<br/>

 

         <% 

 

           Map map = new HashMap();

 

           map.put("aa",new Person("aaaaa"));

 

           map.put("bb",new Person("bbbbb"));

 

           map.put("cc",new Person("ccccc"));

 

           map.put("dd",new Person("ddddd"));

 

           map.put("111",new Person("eeeee"));

 

           request.setAttribute("map111",map);

 

         %>

 

                 ${map111.cc.name }

 

     

 

         <br/>----------------其它經常使用的el表達式-------------------------<br/>

 

        ${pageContext.request.contextPath }    // 很重要:獲取當前Web應用的名稱。

 

        <a href="${pageContext.request.contextPath }/index.jsp">點點</a> 

 

     

 

      </body>

 

    </html>

 

 

 


 

  

 

三、EL主要做用-- 執行運算

 

    語法:${運算表達式},EL表達式支持以下運算符:(注:EL不能實現使用「+」合併字符串功能)

 



 

 

 

 

    

 

    Demo樣例:

 

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

 

     

 

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

 

    <html>

 

      <head>

 

        <title>運算符示例</title>

 

      </head>

 

     

 

      <body>

 

        <% 

 

          request.setAttribute("username","aaa");

 

          request.setAttribute("password","124");

 

        %> 

 

                ${username=='aaa' && password=='123' }

 

     

 

        <br/>----------------empty運算符-------------------------<br/> 

 

        <% 

 

          //request.setAttribute("list",null);

 

          request.setAttribute("list",new ArrayList());

 

        %>

 

                ${empty(list) }

 

     

 

        <br/>----------------二元運算符-------------------------<br/>

 

                ${user!=null ? user.username : '' } 

 

     

 

        <br/>----------------二元運算符(數據回顯)-------------------------<br/>

 

        <% 

 

          request.setAttribute("gender","male");

 

        %> 

 

             <!-- 回顯 單選框數據 -->

 

        <input type="radio" name="gender" value="male"  ${gender=='male'?'checked':'' }>男

 

        <input type="radio" name="gender" vlaue="female" ${gender=='female'?'checked':'' }>女

 

     

 

             <!-- 回顯 多選框數據(備註:本例中使用了EL函數庫,在下文 中有講解) --> 

 

        <% 

 

          request.setAttribute("likes",new String[]{"football","sing"});

 

        %> 

 

        <input type="checkbox" name="likes" value="sing" ${fn:contains(fn:join(likes,","),"sing")?'checked':'' }>唱歌

 

        <input type="checkbox" name="likes" value="dance" ${fn:contains(fn:join(likes,","),"dance")?'checked':'' }>跳舞

 

        <input type="checkbox" name="likes" value="basketball" ${fn:contains(fn:join(likes,","),"basketball")?'checked':'' }>藍球

 

        <input type="checkbox" name="likes" value="football" ${fn:contains(fn:join(likes,","),"football")?'checked':'' }>足球

 

     

 

      </body>

 

    </html> 

 

     

 


 

 

 

四、EL主要做用-- 得到web開發經常使用對象

 

    EL表達式語言中定義了11個隱含對象,使用這些隱含對象能夠很方便地獲取web開發中的一些常見對象,並讀取這些對象的數據。(前6個重點學習)

 

    語法:${隱式對象名稱}  :得到對象的引用

 

 

 

    隱含對象名稱            描       述

 

    pageContext        對應於JSP頁面中的pageContext對象(注意:取的是pageContext對象。)【重點】

 

    pageScope          表明page域中用於保存屬性的Map對象【重點】

 

    requestScope       表明request域中用於保存屬性的Map對象【重點】

 

    sessionScope       表明session域中用於保存屬性的Map對象【重點】

 

    applicationScope   表明application域中用於保存屬性的Map對象【重點】 

 

    param              表示一個保存了全部請求參數的Map對象【重點:經常使用於數據回顯】

 

    paramValues        表示一個保存了全部請求參數的Map對象,它對於某個請求參數,返回的是一個string[]

 

    header             表示一個保存了全部http請求頭字段的Map對象

 

    headerValues       表示一個保存了全部http請求頭字段的Map對象,返回string[]數組。

 

            注意:若是頭裏面有「-」 ,例Accept-Encoding,則要headerValues[「Accept-Encoding」]

 

    cookie             表示一個保存了全部cookie的Map對象

 

    initParam          表示一個保存了全部web應用初始化參數的map對象

 

 

 

    測試各個隱式對象時 的注意事項

 

        (a) 測試headerValues時,若是頭裏面有「-」 ,例Accept-Encoding,則要headerValues[「Accept-Encoding」]

 

        (b) 測試cookie時,例${cookie.key}取的是cookie對象,如訪問cookie的名稱和值,須${cookie.key.name}或${cookie.key.value}

 

 

 

    Demo樣例:

 

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

 

     

 

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

 

    <html>

 

      <head>

 

        <title>隱式對象</title>

 

      </head>

 

     

 

      <body> 

 

      ${pageContext} 

 

     

 

      <br/>----------------使用el隱式對象訪問指定的域-------------------------<br/>

 

      <% 

 

        pageContext.setAttribute("aa","123");

 

      %>

 

      ${aa }

 

      ${pageScope.aa }  

 

      ${sessionScope.user!=null }

 

     

 

      <br/>----------------獲取保存了全部請求參數的Map對象-------------------------<br/>

 

      ${param.name }             //多個同名name時,只能讀到第一個

 

      ${paramValues.name[0] }     //多個同名name時,只能讀到全部的對象,而後按需取值 

 

      ${paramValues.name[1] }     //多個同名name時,只能讀到全部的對象,而後按需取值  

 

     

 

      <br/>----------------獲取請求頭-------------------------<br/>

 

      ${header['Accept-Language'] }

 

     

 

      <br/>---------------獲取cookie-------------------------<br/>

 

      ${cookie.JSESSIONID.name }<br/>

 

      ${cookie.JSESSIONID.value }

 

     

 

      ${initParam.xx }

 

      </body>

 

    </html>

 

  

 

      備註:EL表達式-- param 隱式對象實現數據回顯的原理圖解



 

 

 

 


 

 

五、EL主要做用-- 使用EL調用Java方法

 

    EL表達式語法容許開發人員開發自定義函數,以調用Java類的方法。

 

        示例:${prefix:method(params)}

 

    在EL表達式中調用的只能是Java類的靜態方法。而且這個Java類的靜態方法須要在TLD文件中描述,才能夠被EL表達式調用。

 

    EL自定義函數用於擴展EL表達式的功能,可讓EL表達式完成普通Java程序代碼所能完成的功能。

 

 

 


 

 

 

六、EL自定義函數 開發步驟

 

    通常來講, EL自定義函數開發與應用包括如下三個步驟:

 

        (1)編寫一個Java類的靜態方法

 

        (2)編寫標籤庫描述符(tld)文件,在tld文件中描述自定義函數。

 

        (3)在JSP頁面中導入和使用自定義函數 

 

 

 


 

 

 

七、標籤庫描述文件-- TLD文件模版及其元素的意義

 

    編寫完標籤庫描述文件後,須要將它放置到<web應用>\WEB-INF目錄中或WEB-INF目錄下的除了classes和lib目錄以外的任意子目錄中。 

 

    TLD文件中各元素的含義

 

        <uri> 元素用指定該TLD文件的URI,在JSP文件中須要經過這個URI來引入該標籤庫描述文件。

 

        <function>元素用於描述一個EL自定義函數,其中:

 

            (1) <name>子元素用於指定EL自定義函數的名稱。

 

            (2) <function-class>子元素用於指定完整的Java類名,

 

            (3) <function-signature>子元素用於指定Java類中的靜態方法的簽名,方法簽名必須指明方法的返回值類型及各個參數的類型,各個參數之間用逗號分隔。

 

    

 

    TLD文件模版  my.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>/my</uri>

 

     

 

        <function>

 

            <name>filter</name>

 

            <function-class>cn.itcast.demo.MyEL</function-class>

 

            <function-signature>java.lang.String filter( java.lang.String )</function-signature>

 

        </function>   

 

    </taglib>

 

 

 

 

 


 

 

 

八、EL自定義函數開發 Demo樣例

 

    Demo樣例:

 

    Java類的靜態方法 :

 

        public class MyEL {

 

          //el函數

 

          public static String filter(String message) { 

 

                if (message == null)

 

                    return (null); 

 

                char content[] = new char[message.length()];

 

                message.getChars(0, message.length(), content, 0);

 

                StringBuffer result = new StringBuffer(content.length + 50);

 

                for (int i = 0; i < content.length; i++) {

 

                    switch (content[i]) {

 

                    case '<':

 

                        result.append("&lt;");

 

                        break;

 

                    case '>':

 

                        result.append("&gt;");

 

                        break;

 

                    case '&':

 

                        result.append("&amp;");

 

                        break;

 

                    case '"':

 

                        result.append("&quot;");

 

                        break;

 

                    default:

 

                        result.append(content[i]);

 

                    }

 

                }

 

                return (result.toString()); 

 

            } 

 

          public static String add(String s1,String s2){    //合併字符串

 

            return s1 + s2;

 

          }

 

        } 

 

    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>/my</uri>

 

         

 

            <function>

 

                <name>filter</name>

 

                <function-class>cn.itcast.demo.MyEL</function-class>

 

                <function-signature>java.lang.String filter( java.lang.String )</function-signature>

 

            </function>

 

         

 

            <function>

 

                <name>add</name>

 

                <function-class>cn.itcast.demo.MyEL</function-class>

 

                <function-signature>java.lang.String add( java.lang.String,java.lang.String )</function-signature>

 

            </function>

 

        </taglib>    

 

    JSP頁面調用: 

 

        <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

 

        <%@ taglib uri="/my" prefix="my" %>

 

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

 

        <html>

 

          <head>

 

            <title>My JSP '4.jsp' starting page</title>

 

          </head>

 

         

 

          <body>    

 

            ${my:filter("<a href=''>點點</a>") }     

 

                <% 

 

                  User user = new User();

 

                  user.setUsername("aaaa");

 

                  //session.setAttribute("user",user);

 

                %> 

 

                ${user!=null?my:add("歡迎您:",user.username):''}    

 

          </body>

 

        </html>

 

 

 


 

 

 

九、EL注意事項

 

    EL表達式是JSP 2.0規範中的一門技術 。所以,若想正確解析EL表達式,需使用支持Servlet2.4/JSP2.0技術的WEB服務器。

 

    注意:當有些Tomcat服務器如不能使用EL表達式時:

 

      (1)升級成tomcat6

 

      (2)在JSP中加入<%@ page isELIgnored="false" %>

 

 

 


 

 

 

十、EL表達式保留關鍵字

 



 

 

 

 


 

 

 

十一、SUN公司:EL函數庫

 

    JSTL中的經常使用EL函數

 

    因爲在JSP頁面中顯示數據時,常常須要對顯示的字符串進行處理,SUN公司針對於一些常見處理定義了一套EL函數庫供開發者使用。

 

    這些EL函數在JSTL開發包中進行描述,所以在JSP頁面中使用SUN公司的EL函數庫,須要導入JSTL開發包,並在頁面中導入EL函數庫,以下所示:

 

    在頁面中使用JSTL定義的EL函數:

 

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

 

 

 


 

 

 

十二、EL函數庫-- fn:toLowerCase 

 

    fn:toLowerCase函數將一個字符串中包含的全部字符轉換爲小寫形式,並返回轉換後的字符串,它接收一個字符串類型的參數,例如

 

    fn:toLowerCase("Www.SinA.org") 的返回值爲字符串「www.sina.org」

 

    fn:toLowerCase("")的返回值爲空字符串

 

 

 


 

 

 

1三、EL函數庫-- fn:toUpperCase 

 

    fn:toUpperCase函數將一個字符串中包含的全部字符轉換爲大寫形式,並返回轉換後的字符串,它接收一個字符串類型的參數。例如:

 

    fn:toUpperCase("Www.SinA.org") 的返回值爲字符串「WWW.SINA.ORG」

 

    fn:toUpperCase("")的返回值爲空字符串

 

 

 


 

 

 

1四、EL函數庫-- fn:trim 

 

    fn:trim函數刪除一個字符串的首尾的空格,並返回刪除空格後的結果字符串,它接收一個字符串類型的參數。須要注意的是,fn:trim函數不能刪除字符串中間位置的空格。

 

    例如,fn:trim("   www.sina.org  ") 的返回值爲字符串「www.sina.org」。

 

 

 


 

 

 

1五、EL函數庫-- fn:length  

 

    fn:length函數返回一個集合或數組大小,或返回一個字符串中包含的字符的個數,返回值爲int類型。fn:length函數接收一個參數,這個參數能夠是<c:forEach>標籤的items屬性支持的任何類型,包括任意類型的數組、java.util.Collection、java.util.Iterator、java.util.Enumeration、java.util.Map等類的實例對象和字符串。 

 

    若是fn:length函數的參數爲null或者是元素個數爲0的集合或數組對象,則函數返回0;若是參數是空字符串,則函數返回0。 

 

    Demo樣例:

 

        <% 

 

          request.setAttribute("arr",new String[5]);

 

        %>     

 

                ${fn:length(arr) }     

 

        <% 

 

          List list = new ArrayList();

 

          list.add("aa");

 

          list.add("bb");

 

          request.setAttribute("list",list);

 

        %>

 

            <c:forEach var="i" begin="0" end="${fn:length(list)}">

 

                  ​${list[i] }

 

            </c:forEach>

 

 

 


 

 

 

1六、EL函數庫-- fn:split 

 

    fn:split函數以指定字符串做爲分隔符,將一個字符串分割成字符串數組並返回這個字符串數組。 

 

    fn:split函數接收兩個字符串類型的參數,第一個參數表示要分割的字符串,第二個參數表示做爲分隔符的字符串。 

 

    例如,fn:split("www.sina.org", ".")[1]的返回值爲字符串「sina」。 

 

 

 


 

 

 

1七、EL函數庫-- fn:join 

 

    fn:join函數以一個字符串做爲分隔符,將一個字符串數組中的全部元素合併爲一個字符串並返回合併後的結果字符串。fn:join函數接收兩個參數,第一個參數是要操做的字符串數組,第二個參數是做爲分隔符的字符串。

 

    若是fn:join函數的第二個參數是空字符串,則fn:join函數的返回值直接將元素鏈接起來。

 

    例如:假設stringArray是保存在Web域中的一個屬性,它表示一個值爲{"www","sina","org"}的字符串數組,則fn:join(stringArray, 「.")返回字符串「www.sina.org」

 

      fn:join(fn:split("www,sina,org", ","), ".") 的返回值爲字符串「www.sina.org」

 

 

 


 

 

 

1八、EL函數庫-- fn:indexOf  

 

    fn:indexOf函數返回指定字符串在一個字符串中第一次出現的索引值,返回值爲int類型。fn:indexOf函數接收兩個字符串類型的參數,若是第一個參數字符串中包含第二個參數字符串,那麼,無論第二個參數字符串在第一個參數字符串中出現幾回,fn:indexOf函數老是返回第一次出現的索引值;若是第一個參數中不包含第二個參數,則fn:indexOf函數返回-1。若是第二個參數爲空字符串,則fn:indexOf函數老是返回0。

 

    例如:fn:indexOf("www.sina.org","in") 的返回值爲5

 

 

 


 

 

 

1九、EL函數庫-- fn:contains 

 

    fn:contains函數檢測一個字符串中是否包含指定的字符串,返回值爲布爾類型。fn:contains函數在比較兩個字符串是否相等時是大小寫敏感的。

 

    fn:contains函數接收兩個字符串類型的參數,若是第一個參數字符串中包含第二個參數字符串,則fn:contains函數返回true,不然返回false。若是第二個參數的值爲空字符串,則fn:contains函數老是返回true。實際上,fn:contains(string, substring)等價於fn:indexOf(string, substring) != -1。

 

 

 

    忽略大小的EL函數:fn:containsIgnoreCase 

 

 

 


 

 

 

20、EL函數庫-- fn:startsWith 

 

    fn:startsWith函數用於檢測一個字符串是不是以指定字符串開始的,返回值爲布爾類型。 

 

    fn:startsWith函數接收兩個字符串類型的參數,若是第一個參數字符串以第二個參數字符串開始,則函數返回true,不然函數返回false。若是第二個參數爲空字符串,則fn:startsWith函數老是返回true。

 

    例如:fn:startsWith("www.sina.org","sina")的返回值爲false

 

 

 

    與之對應的EL函數:fn:endsWith 

 

 

 


 

 

 

2一、EL函數庫-- fn:replace 

 

    fn:replace函數將一個字符串中包含的指定子字符串替換爲其它的指定字符串,並返回替換後的結果字符串。fn:replace方法接收三個字符串類型的參數,第一個參數表示要操做的源字符串,第二個參數表示源字符串中要被替換的子字符串,第三個參數表示要被替換成的字符串。

 

    例如:fn:replace("www sina org", " ", ".")的返回值爲字符串「www.sina.org」

 

 

 


 

 

 

2二、EL函數庫-- fn:substring 

 

    fn:substring函數用於截取一個字符串的子字符串並返回截取到的子字符串。fn:substring函數接收三個參數,第一個參數是用於指定要操做的源字符串,第二個參數是用於指定截取子字符串開始的索引值,第三個參數是用於指定截取子字符串結束的索引值,第二個參數和第三個參數都是int類型,其值都從0開始。

 

    例如:fn:substring("www.sina.org", 4, 8) 的返回值爲字符串「sina」

 

 

 


 

 

 

2三、EL函數庫-- fn:substringAfter

 

    fn:substringAfter函數用於截取並返回一個字符串中的指定子字符串第一次出現以後的子字符串。fn:substringAfter函數接收兩個字符串類型的參數,第一個參數表示要操做的源字符串,第二個參數表示指定的子字符串,

 

    例如:fn:substringAfter(「www.sina.org」, 「.」)的返回值爲字符串「sina.org」。

 

  

 

    與之對應的EL函數爲:fn:substringBefore 

 

 

 


 

  

 

2四、EL函數庫-- fn:escapeXml 

 

    例如: ${fn:escapeXml("<a href=''>點點</a>")}

 

  

 


 

 

 

2五、EL函數庫Demo樣例

 

 

 

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

 

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

 

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

 

     

 

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

 

    <html>

 

      <head>

 

        <title>My JSP '5.jsp' starting page</title>

 

      </head>

 

     

 

      <body> 

 

        ${fn:toLowerCase("AAAA") } 

 

        <% 

 

          request.setAttribute("arr",new String[5]);

 

        %> 

 

        ${fn:length(arr) } 

 

        <% 

 

          List list = new ArrayList();

 

          list.add("aa");

 

          list.add("bb");

 

          request.setAttribute("list",list);

 

        %>

 

        <c:forEach var="i" begin="0" end="${fn:length(list)}">

 

          ${list[i] }

 

        </c:forEach>  

 

        ${fn:join(fn:split("www,itcast,cn",","),".") } 

 

        ${fn:contains("aaaabbbcc","ab") } 

 

        ${fn:escapeXml("<a href=''>點點</a>")} 

 

     

 

        <br/>---------------取出用戶填寫的愛好回顯------------------------<br/>

 

         <% 

 

          request.setAttribute("likes",new String[]{"football","sing"});

 

        %> 

 

        <input type="checkbox" name="likes" value="sing" ${fn:contains(fn:join(likes,","),"sing")?'checked':'' }>唱歌

 

        <input type="checkbox" name="likes" value="dance" ${fn:contains(fn:join(likes,","),"dance")?'checked':'' }>跳舞

 

        <input type="checkbox" name="likes" value="basketball" ${fn:contains(fn:join(likes,","),"basketball")?'checked':'' }>藍球

 

        <input type="checkbox" name="likes" value="football" ${fn:contains(fn:join(likes,","),"football")?'checked':'' }>足球

 

     

 

      </body>

 

    </html>

 

     

 

 

 

 

 


 

 

 

 敬請評論(1)若您以爲本文 有用處  —— 請留言評論,以堅決其餘 IT童鞋 閱讀本文的信心。(2)若您以爲本文 沒用處  —— 請留言評論,筆者將會改進不足,以便爲你們整理更加好用的筆記。

相關文章
相關標籤/搜索