JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
根据JSTL标签所提供的功能,可以将其分为5个类别。
- 核心标签: 最常用的JSTL标签。
- 格式化标签: 用来格式化并输出文本、日期、时间、数字。
- SQL标签: 与关系型数据库(Oracle、MySQL、SQL Server等)进行交互。
- XML标签: 创建和操作XML文档。
- JSTL函数标签: 包含一系列标准函数,大部分是通用的字符串处理函数。
在使用JSTL标签前,需要在jsp中对标签库进行引用
<!--引用JSTL标签库 -->
<!--通用标签(c) -->
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!--格式化标签(fmt) -->
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!--函数标签(fn) -->
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<!--SQL标签(sql) -->
<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<!--XML标签(x) -->
<%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
除此之外,使用XML标签前,还需要将XML 和 XPath 的相关包拷贝至<Tomcat 安装目录>\lib下
核心标签是JSTL中最常用的标签,所以在这里我只重点介绍一下核心标签。
下面是几种c标签的使用方法:
例如在web项目中经常使用到的重定向,JSTL中就可以使用<c:redirect>
重定向标签来实现
<c:if test="${userid==null}">//判断userid中有没有值
//设置重定向的url
<c:redirect url="servlet/UserServlet?fun=toLogin"></c:redirect>
</c:if>
<c:if>标签就相当于if()表达式,test属性写的是if()括号中的条件语句
但是<c:if>标签就只有if表达式的作用,并不存在else,要实现if…else if…else就要用到<c:choose>、<c:when>和<c:otherwise>
标签
//<c:set>标签可以设置一个值
<c:set var="name" scope="page" value="小明"></c:set>
<c:choose>
<c:when test="${name eq '小明'}">
<c:out value="我叫小明,今年6岁啦"></c:out>
</c:when>
<c:when test="${name eq '小白'}">
<c:out value="我叫小白,今年10岁"></c:out>
</c:when>
<c:otherwise>
<c:out value="没有这个小朋友"></c:out>
</c:otherwise>
</c:choose>
我们在<c:set>
标签中设置name的值为“小明”,所以结果应该是通过<c:out>
标签在页面上输出显示“我叫小明,今年6岁啦”
下表是c标签库中的标签及其作用:
标签 | 描述 |
---|---|
<c:out> | 用于在JSP中显示数据,就像<%= … > |
<c:set> | 用于保存数据 |
<c:remove> | 用于删除数据 |
<c:catch> | 用来处理产生错误的异常状况,并且将错误信息储存起来 |
<c:if> | 与我们在一般程序中用的if一样 |
<c:choose> | 本身只当做<c:when>和<c:otherwise>的父标签 |
<c:when> | <c:choose>的子标签,用来判断条件是否成立 |
<c:otherwise> | <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行 |
<c:import> | 检索一个绝对或相对 URL,然后将其内容暴露给页面 |
<c:forEach> | 基础迭代标签,接受多种集合类型 |
<c:forTokens> | 根据指定的分隔符来分隔内容并迭代输出 |
<c:param> | 用来给包含或重定向的页面传递参数 |
<c:redirect> | 重定向至一个新的URL. |
<c:url> | 使用可选的查询参数来创造一个URL |