1、JSTL标签有五个不同的标签库组成。分别是核心标签库、格式标签库、SQL标签库、XML标签库和函数标签库。
引用:在JSP页面顶部使用<%@ taglib %>指令定义引用的标签库和访问的前缀。
2、使用核心标签库指令格式:<%@taglib prifix="c" uri="http://java.sun.com/jsp/jstl/core"%>
使用格式标签库指令格式:<%@taglib prifix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
使用SQL标签库指令格式:<%@taglib prifix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
使用XML标签库指令格式:<%@taglib prifix="xml" uri="http://java.sun.com/jsp/jstl/xml"%>
使用函数库标签库指令格式:<%@taglib prifix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
3、核心标签库:主要完成JSP页面的常用功能,包括JSTL的表达式标签、URL标签、流程控制标签和循环标签;
表达式标签:<c:out> <c:set> <c:remove> <c:catch>
URL标签:<c:import> <c:redirect> <c:url> <c:param>
流程控制标签:<c:if> <c:choose> <c:when> <c:otherwise>
循环标签:<c:forEach> <c:forTokens>
基本作用:
<c:out> 将表达式内容输出到JSP页面,相当于<%= 表达式 %>
<c:set> 指定范围中定义变量,或为该变量设置属性值
<c:remove> 从JSP页面中移除指定的变量
<c:catch> 捕获程序中出现的异常
<c:import> 导入站内或其他网站的静态和动态的文件到WEB页面中
<c:redirect> 将客户端发出的请求重定向到其他的URL服务端
<c:url> 使用正确的URL重写规则,重新构造一个URL
<c:param> 为其他的标签提供参数信息
<c:if> 类似于java中的if语句
<c:choose> <c:when> <c:otherwise> 相当于java中的switch语句
<c:forEach> 循环条件,遍历数组和集合类的所有或部分数据
<c:forTokens> 迭代字符串中由分割符分割的成员
4、表达式标签
4.1)<c:out>输出标签:用于表达式值的输出到jsp页面中,该标签类似于jsp的表达式<%= 表达式 %>或者EL表达式${expression}。有两种格式:一种没有标签体,一种有标签体,但是输出结果相同。
语法1(没有标签体):<c:out value="expression"[escapeXml="true|false"] [ default="defaultValue" ] />
语法2(含有标签体):<c:out value="expression"[escapeXml="true|false" ]> defaultValue </c:out>
value:指定将要输出的变量或表达式。
escapeXml:可选属性,指定是否转换特殊的字符。默认是true,如“<” 转换为 “ < ”
default:可选属性,用于指定当value属性值等于nul时,将要显示的默认值。如果没有指定该属性,且value值为null,该标签输出空字符。
<c:out value="水平线标签<hr>"escapeXml="true" /> 编译为:水平线标签<hr>
输出结果:水平线<hr>
<c:out value="水平线标签<hr>"escapeXml="false" /> 编译为:水平线标签<hr>
输出结果:水平线
4.2)<c:set>向指定的作用域存入命名属性
语法:<c:set scope="指定存入作用域的名字" value="值" var="命名属性名"
<c:set var="name" value="张三" scope="session"></c:set>
4.3)<c:remove>从指定的作用域中移除命名属性
语法:<c:remove var="值" scope="指定作用域的 ">
<c:remove var="name" scope="session" />
4.4)<c:catch>捕获异常标签
语法:<c:catch var="存储异常信息的变量">可能存在异常的代码</c:catch>
5、URL相关的标签
5.1)<c:import>可以导入一个站内或其他网站的静态和动态文件到web页面中。
语法:<c:import url="指定目标包含资源的路径">,如果url为空、null或无效,则抛出异常。
<c:import url="xxxx.jsp" charEncoding="UTF-8">
5.2)<c:redirect>一个做重定向跳转的标签
语法:<c:redirect url="重定向的路径名">
<c:redirect url="choose.jsp"/>
5.3)<c:url>生成一个URL路径的字符串
语法:<c:url value="url相对路径">
<c:url value="/xx.jsp">
5.4)<c:param>传递参数的标签
语法:<c:param name="paramName" value="paramValue">如果name为空,标签不起作用,如果value参数为null,则为空值处理
<c:reidrect>配合<c:param>
<c:reidrect url="main.jsp">
<c:param name="user" value="sqc"/>
</c:reidrect>
取值${param.user}
6、流程控制标签
6.1)<c:if>类似于java中的if语句类型,不过这里没有else标签
语法:<c:if test="条件" var="name"[scope="page/request/session/application"] />
6.2)<c:choose>类似于java中的when case
<c:choose>只能作为<c:when>、<c:otherwise>标签的父标签
语法:<c:choose>
<c:when>标签和<c:otherwise>标签组成
</c:choose>
6.3)<c:when>
语法:<c:when test="条件">标签体</c:when>
注意:必须放在<c:otherwise>之前
6.4)<c:otherwise>
语法:<c:otherwise test="条件">标签体</c:otherwise>
7、循环标签
7.1)<c:forEach>循环标签:遍历集合和数组
语法1:<c:forEach items="data"[var="name"]["begin="start"][end="finish"][step="step"][varStatus="statusName"] >
标签体
</forEach>
items:与后台传递的集合、数组等名称一致,用EL表达式
语法2:<c:forEach begin="start" end="finish" [var="name"][varStatus="statusName"][step="step"]>
标签体
</c:forEach>
var:存储items指定的对象的成员
begin:指定循环起始位置
end:用于指定循环终止的位置
step:用于指定循环步长
varStatus:用于指定循环的状态的变量,index(当前循环的索引值,从0开始),count(当前循环的索引值,从1开 始),first(是否为第一次循环,last(是否为最后一次循环)
注意:语法2通常用于分页;
输出10以内的全部基数
<c:forEach var="i" begin="1" end="10" step="2">
${i}
</c:forEach>
7.2)<c:forTokens>迭代标签:用于指定的分隔符将一个字符串分割开,根据分割的数量确定次数
语法:<c:forTokens items="String" delims="char"[var="name"][begin='start'][end="end"][step="step"][varStatusName="varStatusName"]>标签体<c:forTokens>
items:用于迭代的String对象,该字符串通常由指定的分隔符分隔
delims:用于指定分割字符串的分隔符,可以同时有多个分隔符
原字符串:程序开发宝典、典型模块大全;javaweb:一门优秀的web技术、操作简单、方便,被广泛应用;
<c:forTokens items="EL获取字符串" delims=": 、 ;" var="item">
${item}<br/>
</c:forTokens>