JSTL标签库分为5类,分别是JSTL核心标签库、数据库标签库、i18格式化标签库、XML标签库、JSTL函数标签库。
(一)JSTL核心标签库
在JSP页面中要使用此标签库,必须使用<%@ taglib %>指令来指定。如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
//与变量相关的
1.<c:set>标签 定义变量且可将变量存储在JSP范围中或者JavaBean属性中。
(1)指定变量名及变量值,不指定变量scope
<c:set var="变量名" value="变量值"></c:set>
(2)指定变量名,变量值以及变量的存储范围scope
<c:set var="变量名" value="变量值" scope="page|request|session|application"></c:set>
(3)指定变量名以及本体内容中的数据的存储范围scope
<c:set var="变量名" scope="page|request|session|application">本体内容</c:set>
(4)将value值存储到target对象的属性中
<c:set value="值" target="target对象" property="propertyName"></c:set>
(5)将本体内容的数据存储到target对象的属性中
<c:set target="target对象" property="属性名">本体内容</c:set>
2.<c:out>标签 作用:显示数据的内容,类似于<%=%>。使用<c:out>输出内容比使用Scriptlets代码简单,易维护。
(1)输出value属性指定的内容
<c:out value="属性值"/>
(2)escapeXml属性设置是否将value中的内容原样输出
注:<c:out>默认会将<、>、’、”&转化成<>'"和&。因此如果不想进行这种转化就可通过设置escapeXml属性为"false"即可.
<c:out value="属性值" escapeXml="true|false"/>
(3)通过defalult属性设置默认值 注:如果value属性值为null,那么就显示default的值。
<c:out value="属性值" default="默认值"/>
(4)通过本体内容来设定默认值。
<c:out value="属性值" escapeXml="true|false">本体内容</c:out>
3.<c:remove>标签 作用:移除指定范围的变量,语法格式为:
<c:remove var="变量名" scope="page|request|session|application"/>
var属性指定待删除的变量的名称,scope属性是可选的,用来指定待删除变量所在的范围,默认为page
//程序流程控制
4.<c:if>标签 作用:控制执行流程
有两种语法格式:
(1)没有本体内容的<c:if标签,格式如下:
<c:if test="testCondition" var="变量名" [scope="同上"]/>
test属性值为进行判断的表达式,属性var定义的变量来存放判断结果,scope为var所定义的变量的存储范围。
(2)有本体内容的<c:if>标签,格式如下:
<c:if test="testCondition" var="变量名" [scope="同上"]>本体内容</if>
test中判断的结果为true时,会执行本体内容,false就不执行。
5.<c:choose>、<c:when>、<c:otherwise>标签
由于<c:if>标签只能判断一个表达式,并指定当表达式成立时,有执行的内容,而无法指定不成立时应做的反应。
所以JSTL提供了类似if else 的标签<c:chooose>,语法格式如下:
<c:choose>
...
<c:when test="判断条件">
....
</c:when>
...
<c:otherwise>
.....
</c:otherwise>
</c:choose>
6.<c:forEach>标签
有两种语法格式:
一种用来遍历集合对象,另一种用来使语句执行指定的次数。
(1)<c:forEach>遍历集合对象,语法格式为:
<c:forEach [var="变量名" items="集合对象" varStatus="变量名" begin="开始位置int" end="结束位置" step="步长"]>
本地内容
</c:forEach>
var用来存放当前指到的成员 items指被迭代的集合对象 varStatus存放当前指到的成员的信息 step默认为1
(2)<c:forEach>指定语句执行次数,语法格式为:
<c:forEach [var="变量名" varStatus="变量名" begin="起始位置" end="结束位置" step="步长"]>
本地内容
</c:forEach>
注:begin必须大于0 end必大于begin step必大于等于0
7.<c:forTokens>标签 作用:根据指定分隔符分割字符串,语法格式为:
<c:forTokens [var="变量名" items="待分割的字符串" delims="指定分隔符(可多个)" varStatus="变量名" begin="起始位置" end="结束位置" step="步长"]>
本地内容
</c:forTokens>
属性意义同上
8.<c:import>标签(这个还是百度一下的好)
作用:把静态或动态的文件包含到当前JSP页面中
注:与<jsp:include>的区别是:<jsp:include>只能包含同在一个Web application下的文件,而<c:import>还可以包含其他Web application下的文件
<c:import
url="待包含文件URL"
[context="context"] //同一Web容器下,其他Web站点必以"/"开头
[var="变量名"] //存储被包含文件的内容(以String类型存入)
[scope="同上"] //属性var指定变量的存储范围
[charEncoding="被包含文件的编码格式"]
>本体内容
</c:import>
或
<c:import
url="待包含文件URL"
[context="context"] //同一Web容器下,其他Web站点必以"/"开头
[varReader="变量名"] //存储被包含文件的内容(以Reader类型存入)
[scope="同上"] //属性var指定变量的存储范围
[charEncoding="被包含文件的编码格式"]
>本体内容
</c:import>
9.<c:param>标签 作用:传递参数;语法格式为:
<c:param name="参数名" value="参数值"/>
可在<c:import>标签的本体内容中使用<c:param>来向被包含文件传递参数。
10.<c:redirect>标签 作用:从一个JSP页面跳转到其他页面
两种语法格式:
(1)<c:redirect url="url"/>
(2)<c:redirect url="url">
<c:param>
</c:redirect>