JSTL-函数标签库

在JSP页面中使用标签库代替传统Java片段语文来实现页面显示逻辑已经不是新技术了,但是自定义的标签容易造成重复定义和非标准的实现,所以JSTL(JSP Standard Tag Library,JSP标准标签库)诞生了。JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的(标准是SUN制定,apache实现的,SUN收录了apache的实现)。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上。

VersionJSTL versionRequirements
Standard 1.2.3JSTL 1.2Servlet 2.5, JavaServer Pages 2.1
Standard 1.1JSTL 1.1Servlet 2.4, JavaServer Pages 2.0
Standard 1.0JSTL 1.0Servlet 2.3, JavaServer Pages 1.2


Sun 发布的标准 JSTL1.1 标签库有以下几个标签:

  • 核心标签库:包含 Web 应用的常见工作,比如:循环、表达式赋值、基本输入输出等。
  • 格式化标签库:用来格式化显示数据的工作,比如:对不同区域的日期格式化等。
  • 数据库标签库:可以做访问数据库的工作。
  • XML 标签库:用来访问 XML 文件的工作,这是 JSTL 标签库的一个特点。
  • 函数标签库:用来读取已经定义的某个函数。

使用JSTL的步骤:

  • 在项目中引入jstl的相关jar包,确保jar存在:jstl.jar、standard。
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>
  • 在需要使用标签的JSP页面上使用taglib指令引入标签库。
  • 在需要使用标签的位置直接使用标签库。
函数标签:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL_FN</title>
</head>
<body>

<hr>
<!-- ****字符串包含【fn:contains()】****
    ${fn:contains(原始字符串, 要查找的子字符串)}
-->
${fn:contains('i love you!', 'I')}
<!-- 输出:
false
-->

<hr>
<!-- ****忽略大小写字符串包含【fn:containsIgnoreCase()】****
    ${fn:containsIgnoreCase(原始字符串, 要查找的子字符串)}
-->
${fn:containsIgnoreCase('i love you!', 'I')}
<!-- 输出:
true
-->

<hr>
<!-- ****字符串是否以指定后缀结尾【fn:endsWith()】****
    ${fn:endsWith(原始字符串, 要查找的子字符串)}
-->
${fn:endsWith('i love you!', 'you!')}
<!-- 输出:
true
-->

<hr>
<!-- ****函数忽略用于XML标记的字符【fn:escapeXml()】****
    ${fn:escapeXml(要转义标记的文本)}
-->
${"This <abc>is second String.</abc>"}
<br>
${fn:escapeXml("This <abc>is second String.</abc>")}
<!-- 输出:
This is second String.
This <abc>is second String.</abc> 
-->

<hr>
<!-- ****返回指定子串的位置【fn:indexOf()】****
    ${fn:indexOf(原始字符串,子字符串)}
    返回位置从0开始
-->
${fn:indexOf("原始字符串","字符串")}
<!-- 输出:
2
-->

<hr>
<!-- ****将数组的元素使用指定的分隔符来连接成一个字符串【fn:join()】****
    ${fn:join(数组, 分隔符)}
-->
<%
String[] array_ = {"1", "2", "3"};
pageContext.setAttribute("array_",array_);
%>
${fn:join(array_, '-')}
<!-- 输出:
1-2-3 
-->

<hr>
<!-- ****返回字符串或集合的长度【fn:length()】****
    ${fn:length(collection)}
    ${fn:length(string)}
-->
${fn:length(array_)}
、
${fn:length("123456789")}
<!-- 输出:
3 、 9 
-->

<hr>
<!-- ****字符串替换【fn:replace()】****
    ${fn:replace(原始字符串, 被替换的字符串, 要替换的字符串)}
-->
${fn:replace("原始字符串", "字符串", "String")}
<!-- 输出:
原始String 
-->

<hr>
<!-- ****分隔符分裂【fn:split()】****
    ${fn:split(带分隔符的字符串, 分隔符)}
-->
${fn:join(fn:split("1-2-3", "-"), '*')}
<!-- 输出:
1*2*3 
-->

<hr>
<!-- ****是否以指定的前缀开始【fn:startsWith()】****
    ${fn:startsWith(原始字符串, 搜索的前缀)}
-->
${fn:startsWith("原始字符串","前缀")}
、
${fn:startsWith("原始字符串","原始")}
<!-- 输出:
false 、 true
-->

<hr>
<!-- ****返回字符串的子集【fn:substring()】****
    ${fn:substring(string, beginIndex, endIndex)}范围区间为前闭后开
-->
${fn:substring("返回字符串的子集", 2, 6)}
<!-- 输出:
字符串的
-->

<hr>
<!-- ****返回字符串在指定子串之后的子集【fn:substringAfter()】****
    ${fn:substringAfter(string, substring)}
-->
${fn:substringAfter("返回字符串在指定子串之后的子集", "字符串在")}
<!-- 输出:
指定子串之后的子集
-->

<hr>
<!-- ****返回一个字符串中指定子串前面的部分【fn:substringBefore()】****
    ${fn:substringBefore(string, substring)}
-->
${fn:substringBefore("返回字符串在指定子串之后的子集", "指定子串")}
<!-- 输出:
返回字符串在
-->

<hr>
<!-- ****字符转为小写【fn:toLowerCase()】****
    ${fn:toLowerCase(string)}
-->
${fn:toLowerCase("asdfERW转为小写")}
<!-- 输出:
asdferw转为小写
-->

<hr>
<!-- ****字符转为大写【fn:toUpperCase()】****
    ${fn:toUpperCase(string)}
-->
${fn:toUpperCase("asdfERW转为大写")}
<!-- 输出:
ASDFERW转为大写
-->

<hr>
<!-- ****移除首尾的空白符【fn:trim()】****
    ${fn:trim(string)}
-->
-${fn:trim("  移除首尾的空白符  ")}-
<!-- 输出:
-移除首尾的空白符-
-->
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值