Core
标签库,又被称为核心标签库,该标签库的工作是对于
JSP
页面一般处理的封装。在该标签库中的标签一共有
14
个,被分为了四类,分别是:
q
多用途核心标签:
<c:out>
、
<c:set>
、
<c:remove>
、
<c:catch>
。
q
条件控制标签:
<c:if>
、
<c:choose>
、
<c:when>
、
<c:otherwise>
。
q
循环控制标签:
<c:forEach>
、
<c:forTokens>
。
q
URL
相关标签:
<c:import>
、
<c:url>
、
<c:redirect>
、
<c:param>
。
以下是各个标签的用途和属性以及简单示例。
<c:out>
标签是一个最常用的标签,用于在
JSP
中显示数据。它的属性和描述如表
9.3
所示:
表9.3 <c:out>标签属性和说明
属性
|
描述
|
value
|
输出到页面的数据,可以是EL表达式或常量(必须)
|
default
|
当value为null时显示的数据(可选)
|
escapeXml
|
当设置为true时会主动更换特殊字符,比如“<,>,&”(可选,默认为true)
|
在
JSTL1.0
的时候,在页面显示数据必须使用
<c:out>
来进行。然而,在
JSTL1.1
中,由于
JSP2.0
规范已经默认支持了
EL
表达式
,因此可以直接在
JSP
页面使用表达式。下面看一个示例。
<c:out value="${sessionScope.anyValue}" default="no value" escapeXml="false"/>
<c:set>
标签用于为变量或
JavaBean
中的变量属性赋值的工作。它的属性和描述如表
9.4
所示:
表9.4 <c:set>标签属性和说明
属性
|
描述
|
value
|
值的信息,可以是EL表达式或常量
|
target
|
被赋值的JavaBean实例的名称,若存在该属性则必须存在property属性(可选)
|
property
|
JavaBean实例的变量属性名称(可选)
|
var
|
被赋值的变量名(可选)
|
scope
|
变量的作用范围,若没有指定,默认为page(可选)
|
当不存在
value
的属性时,将以包含在标签内的实体数据作为赋值的内容。下面看一个示例:
<c:set value="this is andy" var="oneString"/>
${oneString} <br>
该示例将为名为“
oneString
”的变量赋值为“
this is andy
”,其作用范围为
page
。
<c:remove>
标签用于删除存在于
scope
中的变量。它的属性和描述如表
9.5
所示:
表9.5 <c:remove>标签属性和说明
属性
|
描述
|
var
|
需要被删除的变量名
|
scope
|
变量的作用范围,若没有指定,默认为全部查找(可选)
|
下面看一个示例:
<c:remove var="sampleValue" scope="session"/>
${sessionScope.sampleValue} <br>
该示例将存在于
Session
中名为“
sampleValue
”的变量删除。下一句
EL
表达式显示该变量时,该变量已经不存在了。
<c:catch>
标签允许在
JSP
页面中捕捉异常。它包含一个
var
属性,是一个描述异常的变量,改变量可选。若没有
var
属性的定义,那么仅仅捕捉异常而不做任何事情,若定义了
var
属性,则可以利用
var
所定义的异常变量进行判断转发到其他页面或提示报错信息。看一个示例。
<c:catch var="err">
${param.sampleSingleValue[9] == 3}
</c:catch>
${err}
当“
${param.sampleSingleValue[9] == 3}
”表达式有异常时,可以从
var
属性“
err
”得到异常的内容,通常判断“
err
”是否为
null
来决定错误信息的提示。
<c:if>
标签用于简单的条件语句。它的属性和描述如表
9.6
所示:
表9.6 <c:if>标签属性和说明
属性
|
描述
|
test
|
需要判断的条件
|
var
|
保存判断结果true或false的变量名,该变量可供之后的工作使用(可选)
|
scope
|
变量的作用范围,若没有指定,默认为保存于page范围中的变量(可选)
|
下面看一个示例:
<c:if test="${paramValues.sampleValue[2] == 12}" var="visits">
It is 12
</c:if><br>
${visits} <br>
该示例将判断
request
请求提交的传入控件数组参数中,下标为“
2
”的控件内容是否为“
12
”,若为
12
则显示“
It is 12
”。判断结果被保存在
page
范围中的“
visits
”变量中。
这三个标签用于实现复杂条件判断语句,类似“
if,elseif
”的条件语句。
q
<c:choose>
标签没有属性,可以被认为是父标签,
<c:when>
、
<c:otherwise>
将作为其子标签来使用。
q
<c:when>
标签等价于“
if
”语句,它包含一个
test
属性,该属性表示需要判断的条件。
q
<c:otherwise>
标签没有属性,它等价于“
else
”语句。
下面看一个复杂条件语句的示例。
<c:choose>
<c:when test="${paramValues.sampleValue[2] == 11}">
not 12 not 13,it is 11
</c:when>
<c:when test="${paramValues.sampleValue[2] == 12}">
not 11 not 13,it is 12
</c:when>
<c:when test="${paramValues.sampleValue[2] == 13}">
not 11 not 12,it is 13
</c:when>
<c:otherwise>
not 11 、12、13
</c:otherwise>
</c:choose>
该示例将判断
request
请求提交的传入控件数组参数中,下标为“
2
”控件内容是否为“
11
”或“
12
”或“
13
”,并根据判断结果显示各自的语句,若都不是则显示“
not 11
、
12
、
13
”。
<c:forEach>
为循环控制标签。它的属性和描述如表
9.7
所示:
表9.7 <c:forEach>标签属性和说明
属性
|
描述
|
items
|
进行循环的集合(可选)
|
begin
|
开始条件(可选)
|
end
|
结束条件(可选)
|
step
|
循环的步长,默认为1(可选)
|
var
|
做循环的对象变量名,若存在items属性,则表示循环集合中对象的变量名(可选)
|
varStatus
|
显示循环状态的变量(可选)
|
下面看一个集合循环的示例。
<%ArrayList arrayList = new ArrayList();
arrayList.add("aa");
arrayList.add("bb");
arrayList.add("cc");
%>
<%request.getSession().setAttribute("arrayList", arrayList);%>
<c:forEach items="${sessionScope.arrayList}" var="arrayListI">
${arrayListI}
</c:forEach>
该示例将保存在
Session
中的名为“
arrayList
”的
ArrayList
类型集合参数中的对象依次读取出来,
items
属性指向了
ArrayList
类型集合参数,
var
属性定义了一个新的变量来接收集合中的对象。最后直接通过
EL
表达式显示在页面上。下面看一个简单循环的示例。
<c:forEach var="i" begin="1" end="10" step="1">
${i}<br />
</c:forEach>
<c:forTokens>
标签可以根据某个分隔符分隔指定字符串,相当于
java.util.StringTokenizer
类。它的属性和描述如表
9.8
所示:
表9.8 <c:forTokens>
标签
属性和说明
属性
|
描述
|
items
|
进行分隔的EL表达式或常量
|
delims
|
分隔符
|
begin
|
开始条件(可选)
|
end
|
结束条件(可选)
|
step
|
循环的步长,默认为1(可选)
|
var
|
做循环的对象变量名(可选)
|
varStatus
|
显示循环状态的变量(可选)
|
下面看一个示例。
<c:forTokens items="aa,bb,cc,dd" begin="0" end="2" step="2" delims="," var="aValue">
${aValue}
</c:forTokens>
需要分隔的字符串为“
aa,bb,cc,dd
”,
分隔符
为“
,
”。
begin
属性
指定从第一个“
,
”开始分隔,
end
属性指定分隔到第三个“
,
”,并将做循环的
变量
名指定为“
aValue
”。由于步长为“
2
”,使用
EL
表达式
${aValue}
只能显示“
aa cc
”。
<c:import>
标签允许包含另一个
JSP
页面到本页面来。它的属性和描述如表
9.9
所示:
表9.9 <c:import>标签属性和说明
属性
|
描述
|
url
|
需要导入页面的URL
|
context
|
Web Context该属性用于在不同的Context下导入页面,当出现context属性时,必须以“/”开头,此时也需要url属性以“/”开头(可选)
|
charEncoding
|
导入页面的字符集(可选)
|
var
|
可以定义导入文本的变量名(可选)
|
scope
|
导入文本的变量名作用范围(可选)
|
varReader
|
接受文本的java.io.Reader类变量名(可选)
|
下面看一个示例。
<c:import url="/MyHtml.html" var="thisPage" />
<c:import url="/MyHtml.html" context=”/sample2” var="thisPage"/>
<c:import url="www.sample.com/MyHtml.html" var="thisPage"/>
该示例演示了三种不同的导入方法,第一种是在同一
Context
下的导入,第二种是在不同的
Context
下导入,第三种是导入任意一个
URL
。
<c:url>
标签用于得到一个
URL
地址。它的属性和描述如表
9.10
所示:
表9.10 <c:url>标签属性和说明
属性
|
描述
|
value
|
页面的URL地址
|
context
|
Web Context该属性用于得到不同Context下的URL地址,当出现context属性时,必须以“/”开头,此时也需要url属性以“/”开头(可选)
|
charEncoding
|
URL的
字符集
(可选)
|
var
|
存储URL的变量名(可选)
|
scope
|
变量名作用范围(可选)
|
下面看一个示例:
<c:url value="/MyHtml.html" var="urlPage" />
<a href="${urlPage}">link</a>
得到了一个
URL
后,以
EL
表达式放入
<a>
标签的
href
属性,达到链接的目的。
<c:redirect>
用于页面的重定向,该标签的作用相当于
response.setRedirect
方法的工作。它包含
url
和
context
两个属性,属性含义和
<C:url>
标签相同。下面看一个示例。
<c:redirect url="/MyHtml.html"/>
该示例若出现在
JSP
中,则将重定向到当前
Web Context
下的“
MyHtml.html
”页面,一般会与
<c:if>
等标签一起使用。
<c:param>
用来为包含或重定向的页面传递参数。它的属性和描述如表
9.11
所示:
表9.11 <c:
param>标签属性和说明
属性
|
描述
|
name
|
传递的参数名
|
value
|
传递的参数值(可选)
|
下面是一个示例:
<c:redirect url="/MyHtml.jsp">
<c:param name="userName" value=”RW” />
</c:redirect>