數據庫中JSTL字符串處理函數
JSTL使用表達式來(lái)簡(jiǎn)化頁(yè)面的代碼,這對一些標準的方法,例如bean的getter/setter方法,請求參數或者context以及session中的數據的訪(fǎng)問(wèn)非常方便,但是我們在實(shí)際應用中經(jīng)常需要在頁(yè)面調用對象的某些方法,例如我需要調用字符串的length方法來(lái)獲取字符串的長(cháng)度時(shí),在以往的開(kāi)發(fā)過(guò)程中我們必須把對象先轉為String類(lèi),然后在調用其length方法,這樣的代碼繁瑣而且容易出錯。
因此JSTL內置了幾個(gè)用于字符串操作的方法,可以直接在表達式中使用,大大的簡(jiǎn)化了代碼,提供代碼的可讀性。在JSTL的表達是中要使用一個(gè)函數,其格式如下
${ns:methodName(args....)}
在使用這些函數之前必須在JSP中引入標準函數的聲明
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
下面是JSTL中自帶的方法列表以及其描述
函數名 | 函數說(shuō)明 | 使用舉例 |
contains | 判斷字符串是否包含另外一個(gè)字符串 | <c:if test="${fn:contains(name, searchString)}"> |
containsIgnoreCase | 判斷字符串是否包含另外一個(gè)字符串(大小寫(xiě)無(wú)關(guān)) | <c:if test="${fn:containsIgnoreCase(name, searchString)}"> |
endsWith | 判斷字符串是否以另外字符串結束 | <c:if test="${fn:endsWith(filename, ".txt")}"> |
escapeXml | 把一些字符轉成XML表示,例如<字符應該轉為< | ${fn:escapeXml(param:info)} |
indexOf | 子字符串在母字符串中出現的位置 | ${fn:indexOf(name, "-")} |
join | 將數組中的數據聯(lián)合成一個(gè)新字符串,并使用指定字符格開(kāi) | ${fn:join(array, ";")} |
length | 獲取字符串的長(cháng)度,或者數組的大小 | ${fn:length(shoppingCart.products)} |
replace | 替換字符串中指定的字符 | ${fn:replace(text, "-", "•")} |
split | 把字符串按照指定字符切分 | ${fn:split(customerNames, ";")} |
startsWith | 判斷字符串是否以某個(gè)子串開(kāi)始 | <c:if test="${fn:startsWith(product.id, "100-")}"> |
substring | 獲取子串 | ${fn:substring(zip, 6, -1)} |
substringAfter |
獲取從某個(gè)字符所在位置開(kāi)始的子串 |
${fn:substringAfter(zip, "-")} |
substringBefore | 獲取從開(kāi)始到某個(gè)字符所在位置的子串 | ${fn:substringBefore(zip, "-")} |
toLowerCase | 轉為小寫(xiě) | ${fn.toLowerCase(product.name)} |
toUpperCase | 轉為大寫(xiě)字符 | ${fn.UpperCase(product.name)} |
trim | 去除字符串前后的空格 | ${fn.trim(name)} |
函數名 函數說(shuō)明
contains 判斷字符串是否包含另外一個(gè)字符串 <c:if test="${fn:contains(name, searchString)}">
containsIgnoreCase 判斷字符串是否包含另外一個(gè)字符串(大小寫(xiě)無(wú)關(guān)) <c:if test="${fn:containsIgnoreCase(name, searchString)}">
endsWith 判斷字符串是否以另外字符串結束 <c:if test="${fn:endsWith(filename, ".txt")}">
escapeXml 把一些字符轉成XML表示,例如<字符應該轉為< ${fn:escapeXml(param:info)}
indexOf 子字符串在母字符串中出現的位置 ${fn:indexOf(name, "-")}
join 將數組中的數據聯(lián)合成一個(gè)新字符串,并使用指定字符格開(kāi) ${fn:join(array, ";")}
length 獲取字符串的長(cháng)度,或者數組的大小 ${fn:length(shoppingCart.products)}
replace 替換字符串中指定的字符 ${fn:replace(text, "-", "?")}
split 把字符串按照指定字符切分 ${fn:split(customerNames, ";")}
startsWith 判斷字符串是否以某個(gè)子串開(kāi)始 <c:if test="${fn:startsWith(product.id, "100-")}">
substring 獲取子串 ${fn:substring(zip, 6, -1)}
substringAfter 獲取從某個(gè)字符所在位置開(kāi)始的子串
${fn:substringAfter(zip, "-")}
substringBefore 獲取從開(kāi)始到某個(gè)字符所在位置的子串 ${fn:substringBefore(zip, "-")}
toLowerCase 轉為小寫(xiě) ${fn.toLowerCase(product.name)}
toUpperCase 轉為大寫(xiě)字符 ${fn.UpperCase(product.name)}
trim 去除字符串前后的空格 ${fn.trim(name)}
JSTL中自帶的方法列表
面是JSTL中自帶的方法列表以及其描述
contains
判斷字符串是否包含另外一個(gè)字符串
<c:if test="${fn:contains(name, searchString)}">
containsIgnoreCase
判斷字符串是否包含另外一個(gè)字符串(大小寫(xiě)無(wú)關(guān))
<c:if test="${fn:containsIgnoreCase(name, searchString)}">
endsWith
判斷字符串是否以另外字符串結束
<c:if test="${fn:endsWith(filename, ".txt")}">
escapeXml
把一些字符轉成XML表示,例如<字符應該轉為<
${fn:escapeXml(param:info)}
indexOf
子字符串在母字符串中出現的位置
${fn:indexOf(name, "-")}
join
將數組中的數據聯(lián)合成一個(gè)新字符串,并使用指定字符格開(kāi)
${fn:join(array, ";")}
length
獲取字符串的長(cháng)度,或者數組的大小
${fn:length(shoppingCart.products)}
replace
替換字符串中指定的字符
${fn:replace(text, "-", "?")}
split
把字符串按照指定字符切分
${fn:split(customerNames, ";")}
startsWith
判斷字符串是否以某個(gè)子串開(kāi)始
<c:if test="${fn:startsWith(product.id, "100-")}">
substring
獲取子串
${fn:substring(zip, 6, -1)}
substringAfter
獲取從某個(gè)字符所在位置開(kāi)始的子串
${fn:substringAfter(zip, "-")}
substringBefore
獲取從開(kāi)始到某個(gè)字符所在位置的子串
${fn:substringBefore(zip, "-")}
toLowerCase
轉為小寫(xiě)
${fn.toLowerCase(product.name)}
toUpperCase
轉為大寫(xiě)字符
${fn.UpperCase(product.name)}
trim
去除字符串前后的空格
${fn.trim(name)}
今天將JSP的項目從Tomcat 5.5.12移植到Jboss AS去,偶然發(fā)現了一個(gè)奇怪的問(wèn)題。"org.apache.jasper.JasperException: This absolute uri (http://java.sun.com/jsp/jstl/core) cannot be resolved in either web.xml or the jar files deployed with this application "
由于JSTL1.0和JSTL1.1的聲明語(yǔ)句不一樣。
JSTL 1.0 的聲明是:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>JSTL1.1 的聲明是:
<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core %>
如果你使用的JSTL庫和你在JSP中的聲明不一致。就會(huì )報上面提到的Exception。
另外,要注意的是:Tomcat是先引用"TOMCAT_HOME/shared/lib"下面的庫,再引用web項目下面的"WEB-INF/lib'的庫。
還有就是,jBuilder自帶庫中的JSTL有兩個(gè)配置,一個(gè)是"JSTL"(1.0),一個(gè)是"JSTL1.1"(1.1),注意在做項目的時(shí)候別引用錯了。
還有一個(gè)技巧是:如何判斷JSTL的兩個(gè)庫文件(standar.jar和jstl.jar)的版本?展開(kāi)jar文件在"META-INF"目錄下的MANIFEST.MF文件,其中"Specification-Version"指名的就是版本號。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/