教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

JAVA培訓之EL函數(shù)庫

更新時間:2016年09月29日16時42分 來源:傳智播客JAVA培訓學院 瀏覽次數(shù):

1.什么是EL函數(shù)庫

EL函數(shù)庫是由第三方對EL的擴展,我們現(xiàn)在學習的EL函數(shù)庫是有JSTL提供的,JSTL我們會在后面的課程中詳解。EL函數(shù)庫就是定義了一些有返回值的靜態(tài)方法,然后通過EL表達式來調(diào)用它們,不僅僅JSTL可以定義EL函數(shù)庫,我們自己也可以自定義EL函數(shù)庫,這個后面我們也會講到?!?br /> 在jsp頁面中使用taglib指令導入EL函數(shù)庫,就可以在頁面中使用函數(shù)庫中的方法。另外,導入的函數(shù)庫可以使用的前提是,我們的項目中有相關的jar包,我們自己并沒有將jar包拷貝的lib目錄下,但是當我們的項目發(fā)布到服務器下,lib目錄中就有了jar包,如圖1-1所示:

圖1-1 lib目錄

2.使用EL函數(shù)庫

要使用EL函數(shù)庫,首先要在jsp文件的上面使用taglib指令導入函數(shù)庫:
  • <%@ taglib prefix=”fn” uri=”http://java.sun.com/jsp/jstl/functions”%>
其中,uri的值并不是一個網(wǎng)絡路徑,只是在定義函數(shù)庫時,擬定的一個位置。
下面我們來了解EL函數(shù)庫中的相關方法,具體如下:
  • String toUpperCase(String input):把字符串參數(shù)轉(zhuǎn)換成大寫,并返回;
  • String toLowerCase(String input):把字符串參數(shù)轉(zhuǎn)換成小寫,并返回;
  • int indexOf(String input, String substring):返回input中substring出現(xiàn)的索引位置;
  • boolean contains(String input, String substring):查看input中是否包含substring,包含返回true,否則返回false;
  • boolean containsIgnoreCase(String input, String substring):在忽略大小寫的情況下,查看input中是否包含substring,包含返回true,否則返回false;
  • boolean startsWith(String input, String substring):判斷input是否是以substring為前綴,如果是就返回true,否則就返回false;
  • boolean endsWith(String input, String substring):判斷input是否是以substring為后綴,如果是就返回true,否則就返回false;
  • String substring(String input, int beginIndex, int endIndex):以beginIndex為開始值,endIndex為結(jié)束值,在input上截取子串;
  • String substringAfter(String input, String substring):獲取input中,substring所在位置后面的字符串;
  • substringBefore(String input, String substring):獲取input中,substring所在位置前面的字符串;
  • String escapeXml(String input):把input中“<”、“>“、”&“、”'“、“"”進行轉(zhuǎn)義;
  • String trim(String input):去除input中的前后空格;
  • String replace(String input, String substringBefore, String substringAfter):將input中的substringBefore替換成substringAfter;
  • String[] split(String input, String delimiters):以delimiters為標識分割input,返回一個字符串數(shù)組;
  • int length(Object obj):可以獲取字符串、數(shù)組、各種集合的長度!
  • String join(String array[], String separator):將array數(shù)組中的元素以separator連接起來,返回一個字符串。
通過以上對EL函數(shù)庫中的方法的講解,下面通過一個案例來學習這些方法的使用,如下:
(1)創(chuàng)建一個web應用,Example8,在該應的WebRoot目錄下新建一個fn目錄,然后再該目錄下新建一個fn.jsp文件,主要代碼如例1-1所示:
例1-1 fn.jsp
<!-- 導入函數(shù)庫 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
... ...
<body>
       <%
              String[] strs = {"a", "b","c"};//定義一個字符數(shù)組
              List list = new ArrayList();//定義一個list集合
              list.add("a");//向集合中添加一個字符
              pageContext.setAttribute("arr", strs);//將字符數(shù)據(jù)以arr的名字保存在page域中
              pageContext.setAttribute("list", list);//將list集合以list的名字保存在page域中
       %>
              ${fn:length(arr) }<br/><!--返回arr的長度-->
              ${fn:length(list) }<br/><!--返回list的長度-->
              ${fn:toLowerCase("Hello") }<br/> <!-- 將Hello變成小寫 -->
              ${fn:toUpperCase("Hello") }<br/> <!-- 將Hello變成大寫 -->
              ${fn:contains("abc", "a")}<br/><!-- 判斷abc中是否包含a -->
              ${fn:containsIgnoreCase("abc", "Ab")}<br/><!-- 在忽略大小寫的情況下,判斷abc中是否包含Ab -->
              ${fn:contains(arr, "a")}<br/><!-- 判斷arr數(shù)組中是否包含a -->
              ${fn:containsIgnoreCase(list, "A")}<br/><!-- 在忽略大小寫的情況下,判斷l(xiāng)ist集合中是否包含A -->
              ${fn:endsWith("Hello.java", ".java")}<br/><!-- 判斷Hello.java是否以.java結(jié)束 -->
              ${fn:startsWith("Hello.java", "Hell")}<br/><!-- 判斷Hello.java是否以Hell開始 -->
              ${fn:indexOf("Hello-World", "-")}<br/><!-- 返回“-”在Hello-World中出現(xiàn)的位置 -->
              ${fn:join(arr, ";")}<br/><!-- 將arr數(shù)組中的元素以“-”連接,并返回 -->
              ${fn:replace("Hello-World", "-", "+")}<br/><!-- 將Hello-World中的“-”替換成“+” -->
              ${fn:join(fn:split("a;b;c;", ";"), "-")}<br/><!--最終是將數(shù)組的元素以“-”連接,并返回 -->
             
              ${fn:substring("0123456789", 6, 9)}<br/><!-- 返回0123456789中索引值為6到索引值為9之間的元素 -->
              ${fn:substring("0123456789", 5, -1)}<br/><!-- 返回0123456789中索引值為6到結(jié)束的元素  -->
              ${fn:substringAfter("Hello-World", "-")}<br/><!-- 返回Hello-World中“-”后面的字符串 -->
              ${fn:substringBefore("Hello-World", "-")}<br/><!-- 返回Hello-World中“-”前面的字符串  -->
              ${fn:trim("     a b c     ")}<br/><!-- 去掉     a b c     前后的空格 -->
              ${fn:escapeXml("<html></html>")}<br/> <!-- 將“<html></html>”中的“<”,“>”轉(zhuǎn)義,即原樣輸出 -->
</body>
(2)將Example8發(fā)布到服務器,然后啟動服務器,在瀏覽器端訪問fn.jsp,瀏覽器顯示結(jié)果如圖1-2所示:

圖1-2 瀏覽器顯示結(jié)果
例1-1中,在使用函數(shù)庫中的方法之前,分別定義了一個字符串數(shù)組str和一個list集合,然后將這兩個變量存放在page域中,這樣做的原因是,函數(shù)庫中的這些方法的參數(shù)如果是變量,那么必須將變量放在域中,否則EL表達式就獲取不到這些變量,例如將例1-1中的存放數(shù)據(jù)到域中的代碼注釋掉,再次方法fn.jsp,瀏覽器運行結(jié)果如圖1-3所示:

圖1-3 瀏覽器顯示結(jié)果

本文版權歸傳智播客Java培訓學院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客Java培訓學院
首發(fā):http://www.xamj520.com/javaee
0 分享到:
和我們在線交談!