0x01 JSTL函数

  1. JSTL包含一系列标准函数,大部分是通用的字符串处理函数
  2. 引用JSTL函数库的语法如下:
  3. <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
函数 描述
fn:contains() 测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase() 测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith() 测试输入的字符串是否以指定的后缀结尾
fn:escapeXml() 跳过可以作为XML标记的字符
fn:indexOf() 返回指定字符串在输入字符串中出现的位置
fn:join() 将数组中的元素合成一个字符串然后输出
fn:length() 返回字符串长度
fn:replace() 将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split() 将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith() 测试输入字符串是否以指定的前缀开始
fn:substring() 返回字符串的子集
fn:substringAfter() 返回字符串在指定子串之后的子集
fn:substringBefore() 返回字符串在指定子串之前的子集
fn:toLowerCase() 将字符串中的字符转为小写
fn:toUpperCase() 将字符串中的字符转为大写
fn:trim() 移除首位的空白符

0x02 小例子

  1. // 目录结构
  2. ├── src
  3. └── main
  4. └── webapp
  5. └── com
  6. └── ...
  7. └── WEB-INF
  8. └── web.xml
  9. ├── ...
  10. └── JSTL库测试
  11. ├── ...

0x02.1 fn:contains()

0x02.1.1 语法

  1. fn:contains()函数用于确定一个字符串是否包含指定的子串
  1. fn:contains()函数语法如下:
  2. <c:if test="${fn:contains(<原始字符串>, <要查找的子字符串>)}">
  3. ...
  4. </c:if>

0x02.1.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_contains.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="theString" value="I am from twle"/>
  7. <c:if test="${fn:contains(theString, 'twle')}">
  8. 找到twle
  9. </c:if>
  10. <c:if test="${fn:contains(theString, 'RUNOOB')}">
  11. 找到RUNOOB
  12. </c:if>
  13. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_contains.jsp

0x02.2 fn:containsIgnoreCase()

0x02.2.1 语法

  1. fn:containsIgnoreCase()函数用于确定一个字符串是否包含指定的子串,忽略大小写
  2. fn:containsIgnoreCase()函数语法如下:
  3. <c:if test="${fn:containsIgnoreCase(<原始字符串>, <要查找的子字符串>)}">
  4. ...
  5. </c:if>

0x02.2.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_containsignorecase.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="theString" value="I am from twle"/>
  7. <c:if test="${fn:containsIgnoreCase(theString, 'twle')}">
  8. 找到twle
  9. </c:if>
  10. <c:if test="${fn:containsIgnoreCase(theString, 'RUNOOB')}">
  11. 找到RUNOOB
  12. </c:if>
  13. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_containsignorecase.jsp

image.png

0x02.3 fn:endsWith()

0x02.3.1 语法

  1. fn:endsWith()函数用于确定一个字符串是否以指定后缀结尾
  1. fn:endsWith()函数语法如下:
  2. <c:if test="${fn:endsWith(<原始字符串>, <要查找的子字符串>)}">
  3. ...
  4. </c:if>

0x02.3.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_endswith.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="theString" value="I am from twle 123"/>
  7. I am from twle 123,
  8. <c:if test="${fn:endsWith(theString, '123')}">
  9. 字符串以123结尾
  10. </c:if>
  11. <c:if test="${fn:endsWith(theString, 'unoob')}">
  12. 字符串以unoob结尾
  13. </c:if>
  14. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_endswith.jsp

image.png

0x02.4 fn:escapeXml()

0x02.4.1 语法

  1. fn:escapeXml()函数忽略用于XML标记的字符
  2. fn:escapeXml()函数语法如下:
  3. ${fn:escapeXml(<要转义标记的文本>)}

0x02.4.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_escapexml.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string1" value="This is first String."/>
  7. <c:set var="string2" value="This <abc>is second String.</abc>"/>
  8. <p>使用escapeXml()函数:</p>
  9. <p>string(1): ${fn:escapeXml(string1)}</p>
  10. <p>string(2): ${fn:escapeXml(string2)}</p>
  11. <hr/>
  12. <p>不使用escapeXml()函数:</p>
  13. <p>string(1): ${string1}</p>
  14. <p>string(2): ${string2}</p>
  15. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_escapexml.jsp

image.png

0x02.5 fn:indexOf()

0x02.5.1 语法

  1. fn:indexOf()函数返回一个字符串中指定子串的位置
  2. fn:indexOf()函数的语法如下:
  3. ${fn:indexOf(<原始字符串>,<子字符串>)}

0x02.5.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_indexof.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string1" value="This is first String"/>
  7. <c:set var="string2" value="This <abc>is second String</abc>"/>
  8. This is first String中的first在第 ${fn:indexOf(string1, "first")}
  9. This <abc>is second String</abc>中的second在第 ${fn:indexOf(string2, "second")}
  10. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_indexof.jsp

image.png

0x02.6 fn:join()

0x02.6.1 语法

  1. fn:join()函数将一个数组中的所有元素使用指定的分隔符来连接成一个字符串
  2. fn:join()函数的语法如下:
  3. ${fn:join([数组], <分隔符>)}

0x02.6.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_join.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string1" value="www.qq.com"/>
  7. <c:set var="string2" value="${fn:split(string1, '.')}"/>
  8. <c:set var="string3" value="${fn:join(string2, '-')}"/>
  9. 字符串为: ${string3}
  10. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_join.jsp

image.png

0x02.7 fn:length()

0x02.7.1 语法

  1. fn:length()函数返回字符串长度或集合中元素的数量
  2. fn:length()函数的语法如下:
  3. ${fn:length(collection|string)}

0x02.7.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_length.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string1" value="This is first String"/>
  7. <c:set var="string2" value="This is second String"/>
  8. <div>This is first String-字符串长度(1): ${fn:length(string1)}</div>
  9. <div>This is second String-字符串长度(2): ${fn:length(string2)}</div>
  10. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_length.jsp

image.png

0x02.8 fn:replace()

0x02.8.1 语法

  1. fn:replace()函数将字符串中所有指定的子串用另外的字符串替换
  2. fn:replace()函数语法如下:
  3. ${fn:replace(<原始字符串>, <被替换的字符串>, <要替换的字符串>)}

0x02.8.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_replace.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string1" value="I am from google"/>
  7. <c:set var="string2" value="${fn:replace(string1, 'google', 'qq')}" />
  8. <div>原始字符串: ${string1}</div>
  9. <div>替换后的字符串: ${string2}</div>
  10. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_replace.jsp

image.png

0x02.9 fn:split()

0x02.9.1 语法

  1. fn:split()函数将一个字符串用指定的分隔符分裂为一个子串数组
  2. fn:split()函数语法如下:
  3. ${fn:split(<带分隔符的字符串>, <分隔符>)}

0x02.9.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_split.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string1" value="www qq cn"/>
  7. <c:set var="string2" value="${fn:split(string1, ' ')}" />
  8. <c:set var="string3" value="${fn:join(string2, '-')}" />
  9. <p>string3 字符串 : ${string3}</p>
  10. <c:set var="string4" value="${fn:split(string3, '-')}" />
  11. <c:set var="string5" value="${fn:join(string4, ' ')}" />
  12. <p>string5 字符串: ${string5}</p>
  13. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_split.jsp

image.png

0x02.10 fn:startsWith()

0x02.10.1 语法

  1. fn:startsWith()函数用于确定一个字符串是否以指定的前缀开始
  2. fn:startsWith()函数语法如下:
  3. <c:if test="${fn:startsWith(<原始字符串>, <搜索的前缀>)}">
  4. ...
  5. </c:if>

0x02.10.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_startswith.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string" value="Google I love"/>
  7. <c:if test="${fn:startsWith(string, 'Google')}">
  8. <p>${string}字符串以Google开头</p>
  9. </c:if>
  10. <c:if test="${fn:startsWith(string, 'QQ')}">
  11. <p>${string}字符串以QQ开头</p>
  12. </c:if>
  13. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_startswith.jsp

image.png

0x02.11 fn:substring()

0x02.11.1 语法

  1. fn:substring()函数返回字符串中指定开始和结束索引的子串
  2. fn:substring()函数语法如下:
  3. ${fn:substring(<string>, <beginIndex>, <endIndex>)}

0x02.11.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_substring.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string1" value="This is first String"/>
  7. <c:set var="string2" value="${fn:substring(string1, 5, 15)}"/>
  8. 生成的子字符串为: ${string2}
  9. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_substring.jsp

image.png

0x02.12 fn:substringAfter()

0x02.12.1 语法

  1. fn:substringAfter()函数返回字符串中指定子串后面的部分
  2. fn:substringAfter()函数语法如下:
  3. ${fn:substringAfter(<string>, <substring>)}

0x02.12.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_substringafter.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string1" value="This is first String"/>
  7. <c:set var="string2" value="${fn:substringAfter(string1, 'is')}"/>
  8. 生成的子字符串: ${string2}
  9. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_substringafter.jsp

image.png

0x02.13 fn:substringBefore()

0x02.13.1 语法

  1. fn:substringBefore()函数返回一个字符串中指定子串前面的部分
  2. fn:substringBefore()函数语法如下:
  3. ${fn:substringBefore(<string>, <substring>)}

0x02.13.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_substringbefore.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string1" value="This is first String"/>
  7. <c:set var="string2" value="${fn:substringBefore(string1, 'first')}"/>
  8. <p>生成的子字符串: ${string2}</p>
  9. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_substringbefore.jsp

image.png

0x02.14 fn:toLowerCase()

0x02.14.1 语法

  1. fn:toLowerCase()函数将字符串中的所有字符转为小写
  2. fn:toLowerCase()函数语法如下:
  3. ${fn.toLowerCase(<string>)}

0x02.14.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_tolowercase.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string1" value="I am from WWW.QQ.CN"/>
  7. <c:set var="string2" value="${fn:toLowerCase(string1)}" />
  8. <p>字符串为: ${string2}</p>
  9. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_tolowercase.jsp

image.png

0x02.15 fn:toUpperCase()

0x02.15.1 语法

  1. fn:toUpperCase()函数将一个字符串中的所有字符转为大写
  2. fn:toUpperCase()函数语法如下:
  3. ${fn.toUpperCase(<string>)}

0x02.15.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_touppercase.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string1" value="This is a string"/>
  7. <c:set var="string2" value="${fn:toUpperCase(string1)}" />
  8. 字符串为: ${string2}
  9. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_touppercase.jsp

image.png

0x02.16 fn:trim()

0x02.16.1 语法

  1. fn:trim()函数将字符串两端的空白符移除
  2. fn:trim()函数语法如下:
  3. ${fn.trim(<string>)}

0x02.16.2 小例子

  1. // 文件地址: ./src/main/webapp/JSTL库测试/
  2. // 文件名称: jstl_fn_trim.jsp
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  5. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  6. <c:set var="string1" value="This is first String "/>
  7. <p>string1长度: ${fn:length(string1)}</p>
  8. <p>原始字符串为: ${string1}</p>
  9. <br/>
  10. <c:set var="string2" value="${fn:trim(string1)}"/>
  11. <p>string2长度: ${fn:length(string2)}</p>
  12. <p>去除左右两个空格的字符串为: ${string2}</p>
  13. // 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fn_trim.jsp

image.png