JSTL - JSP 标准标签库
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
根据JSTL标签所提供的功能,可以将其分为5个类别。
配置JSTL标签库的jar到类路径
把jstl.jar和standard.jar拷贝到lib目录
JSTL标签库有两种,一种
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
一种是
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core_rt" %>
网上解释,其中RT库是基于传统请求的运行库,如果JSP不支持EL表达式时,用这个库替换非rt库,一般即可解决问题。
-
核心标签
-
格式化标签
-
SQL 标签
-
XML 标签
-
JSTL 函数
这里我们主要介绍核心标签和格式化标签
核心标签
1.1.引用核心标签库
页面中添加如下的处理指令
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
c:set和c:out标签示例
<%--
Created by IntelliJ IDEA.
User: 晨曦
Date: 2019/8/19
Time: 15:21
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>
c:set和c:out标签
</h3>
<p>
<c:set var="a" scope="request" value="${20}"/>c:set用的不多<br/>
<c:out value="${20}"/>c:out用的有点多<br/>
${a}<br/>
<c:set var="b" value="${'<b>鸡你太美!!!</b>'}"/><br/>
${pageScope.b}<br/>
<c:out value="${b}" escapeXml="true"/><br/>
</p>
</body>
</html>
c:if标签示例
<h3>c:if标签</h3>
<c:if test="${not (empty a)}">
a存在
</c:if>
<c:remove var="a"/>
<c:if test="${empty a}">
a不存在
</c:if><br/>
输出:
c:choose标签示例
<h3>c:choose标签</h3>
<c:choose>
<c:when test="${not (empty a)}">
a存在
</c:when>
<c:otherwise>
a不存在
</c:otherwise>
</c:choose>
c:foreach标签示例
<h3>c:foreach标签</h3>
<%
//创建一个Collection
HashSet<String> set = new HashSet<> ();
set.add ("蔡徐坤");
set.add ("吴亦凡");
set.add ("小鹿晗");
pageContext.setAttribute ("set", set);
%>
<h4>迭代collection集合</h4><br/>
<c:forEach var="a" items="${set}" step="2" begin="0" end="2">
${k}:${a}<br/>
</c:forEach>
<h4>迭代Map集合</h4>
<%
HashMap<String, String> map = new HashMap<> ();
map.put ("a", "蔡徐坤");
map.put ("b", "吴亦凡");
map.put ("c", "小鹿晗");
pageContext.setAttribute ("map", map);
%>
<c:forEach var="t" items="${map}">
${t.key}:${t.value}<br/>
</c:forEach>
c:forTokens示例
这个标签是对一个根据某个字符分隔开的字符串数组进行迭代
<h3>c:forTokens标签</h3>
<%
pageContext.setAttribute ("aa", "鸡你太美");
%>
<c:forTokens var="a" items="${aa}" delims="|,">
${a}~~<br/>
</c:forTokens>
格式化标签
JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt" %>
如果无法处理表达式则用
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt_rt" %>
格式化时间
<h3>格式化时间:</h3><br/>
<%
pageContext.setAttribute ("cur", new Date ());
%>
${cur}<br/>
<ftm:formatDate value="${cur}" pattern="yyyy年MM月dd日"/><br/>
<ftm:formatDate value="${cur}" pattern="yyyy年MM月dd日" var="aa"/><br/>
<c:out value="${aa}"/><br/>
格式化数字
<h3>格式化数字:</h3>
<%
pageContext.setAttribute ("num",123561523L);
%>
${num}<br/>
<ftm:formatNumber value="${num}" type="currency"/><br/>
<ftm:setLocale value="en"/>
<ftm:formatNumber value="${num}" type="currency"/><br/>
<ftm:formatNumber value="${num}" pattern="000,000,000,000"/><br/>