1.什么是EL函數(shù)庫
EL函數(shù)庫是由第三方對(duì)EL的擴(kuò)展,我們現(xiàn)在學(xué)習(xí)的EL函數(shù)庫是有JSTL提供的,JSTL我們會(huì)在后面的課程中詳解。EL函數(shù)庫就是定義了一些有返回值的靜態(tài)方法,然后通過EL表達(dá)式來調(diào)用它們,不僅僅JSTL可以定義EL函數(shù)庫,我們自己也可以
自定義EL函數(shù)庫,這個(gè)后面我們也會(huì)講到?!?br />
在jsp頁面中使用taglib指令導(dǎo)入EL函數(shù)庫,就可以在頁面中使用函數(shù)庫中的方法。另外,導(dǎo)入的函數(shù)庫可以使用的前提是,我們的項(xiàng)目中有相關(guān)的jar包,我們自己并沒有將jar包拷貝的lib目錄下,但是當(dāng)我們的項(xiàng)目發(fā)布到服務(wù)器下,lib目錄中就有了jar包,如圖1-1所示:
圖1-1 lib目錄
2.使用EL函數(shù)庫
要使用EL函數(shù)庫,首先要在jsp文件的上面使用taglib指令導(dǎo)入函數(shù)庫:
- <%@ taglib prefix=”fn” uri=”http://java.sun.com/jsp/jstl/functions”%>
其中,uri的值并不是一個(gè)網(wǎng)絡(luò)路徑,只是在定義函數(shù)庫時(shí),擬定的一個(gè)位置。
下面我們來了解EL函數(shù)庫中的相關(guān)方法,具體如下:
- 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中“<”、“>“、”&“、”'“、“"”進(jìn)行轉(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為標(biāo)識(shí)分割input,返回一個(gè)字符串?dāng)?shù)組;
- int length(Object obj):可以獲取字符串、數(shù)組、各種集合的長度!
- String join(String array[], String separator):將array數(shù)組中的元素以separator連接起來,返回一個(gè)字符串。
通過以上對(duì)EL函數(shù)庫中的方法的講解,下面通過一個(gè)案例來學(xué)習(xí)這些方法的使用,如下:
(1)創(chuàng)建一個(gè)web應(yīng)用,Example8,在該應(yīng)的WebRoot目錄下新建一個(gè)fn目錄,然后再該目錄下新建一個(gè)fn.jsp文件,主要代碼如例1-1所示:
例1-1 fn.jsp
<!-- 導(dǎo)入函數(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"};//定義一個(gè)字符數(shù)組
List list = new ArrayList();//定義一個(gè)list集合
list.add("a");//向集合中添加一個(gè)字符
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ā)布到服務(wù)器,然后啟動(dòng)服務(wù)器,在瀏覽器端訪問fn.jsp,瀏覽器顯示結(jié)果如圖1-2所示:
圖1-2 瀏覽器顯示結(jié)果
例1-1中,在使用函數(shù)庫中的方法之前,分別定義了一個(gè)字符串?dāng)?shù)組str和一個(gè)list集合,然后將這兩個(gè)變量存放在page域中,這樣做的原因是,函數(shù)庫中的這些方法的參數(shù)如果是變量,那么必須將變量放在域中,否則EL表達(dá)式就獲取不到這些變量,例如將例1-1中的存放數(shù)據(jù)到域中的代碼注釋掉,再次方法fn.jsp,瀏覽器運(yùn)行結(jié)果如圖1-3所示:
圖1-3 瀏覽器顯示結(jié)果
本文版權(quán)歸傳智播客Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:傳智播客Java培訓(xùn)學(xué)院
首發(fā):http://xamj520.com/javaee