JSTL:JavaServer Pages Standard Tag Library 主要提供给java web开发人员一个标准通用的标签函数库
一 简介
是一个以定制好的标签库,应用各种领域:基本输入输出、流程控制、循环、xml文件剖析、数据库查询以及国际化和文字格式标准化等
支持EL语法,和el结合使用
可以在http://jakarta.apache.org/builds/jakarta-taglibs/releases/standard/下载实现好的jstl,然后解压,将里边的jstl.jar/standard.jar赋值到Tomcat的WEB-INF\LIB中,就可以在网页中使用JSTL了,最好将tld文件的目录也复制到WEB-INF中,以便日后使用
二 核心标准库(Core tag library)
Core:主要有输入输出、流程控制、迭代操作、url操作
使用时,使用指令:<%@taglib %> 并设定prfix和uri的值
<%@taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
若没有,将无法使用核心功能
1 表达式操作
<c:out>: 主要用来显示数据内容,如同<%= scripting-language%>一样 如:hello ! <c:out value = "${username}"/>
语法:<c:out value = "value" [escapeXml = "{true|false}"] [ default= "defaultValue"] />
或者 :<c:out value = "value" [escapeXml = "{true|false}"] />
default value
</c:out>
escapeXml:是否转换特殊字符:如< 转换为<;
<c:set>:主要将比昂两存储到jsp范围中或是javabean的属性中
如:<c:set value = "value" var = "varName" [scope = "{page....}"] />
存入target中:
<c:set value = "value" target= "varName" property = "propertyName"/>
<c:set target = "target" property = "name" />
target为JavaBean或者java.util.Map对象
<c:remove>:主要是移除范围中的属性
如:<c:remove var = "number" scope = "session"/>
scope可有可无,有时,就移除相应范围的,没有时,就按顺序找,找到就移除,繁殖不做任何事
<c:catch>:主要用来处理错误的异常情况,并将错误信息存储起来
形式:
<c:catch var = "message">
可能错误的代码部分
</c:catch>
如果错误了,就将错误信息放在varname中,并且停止执行catch中的代码
2 流程控制
<c:if> 和一般的if没什么两样,形式如;
<c:if test = “testCondition var = "varName" [scope = "{page.....}"]/>
或者
<c:if test = “testCondition" var = "varName" [scope = "{page.....}"]>
content
</c:if>
必须有test属性,为真,执行if里的,为false则不执行
<c:choose> 本身只能作为<c:when> <c:otherwise>的父标签
里边有一个或多个when 零个或多个otherwise
<c:when>
<c:otherwise>
必须为choose的子属性,when中又test属性,作用同if choose的最后一个属性必须为otherwise(若有)
在choose中又好几个when是,只有一个when会成立,即第一个成立的
<c:forEach>:循环控制,当条件符合,重复执行里边的内容,形式:
<c:forEach var = "varName" items = "collection" varStatus = "varStatusName" begin = "begin" end = "end step = "step">
content
</c:forEach>
var 用来存放现在指定的成员
items 被迭代的几何对象
varStatus 用来存放现在知道的相关成员信息
begin 开始位置 若有,必须大于等于零
end 结束位置 必须大于等于begin
step 每次迭代的间隔数 必须大于0
若要内容显示出来,必须要有items属性 若没有,则必须有begin和end属性
<c:forTokens>:用来浏览一字符串中所有的成员,其成员是有定义符号所分隔的
相对于forEach标签,多了delims属性,他的值就是分隔符号如, - 等等
他的items属性必须为将要被分割的字符串