JSTL详解--Core 标签库

在 JSTL1.1中有以下这些标签库是被支持的: Core标签库、 XML processing标签库、 I18N formatting标签库、 Database access标签库、 Functions标签库。对应的标识符见表2所示:
表2 标签库的标识符
标签库 URI 前缀
Core http://java.sun.com/jsp/jstl/core c
XML processing http://java.sun.com/jsp/jstl/xml x
I18N formatting http://java.sun.com/jsp/jstl/fmt fmt
Database access http://java.sun.com/jsp/jstl/sql sql
Functions http://java.sun.com/jsp/jstl/functions fn

下面看例5,简单使用标签库的示例。
例5:简单 JSTL标签库示例
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<c:forEach var="i" begin="1" end="10" step="1">
${i}
<br />
</c:forEach>
</body>
</html>
在该示例的 JSP页面中声明了将使用 Core标签库,它的 URI为“ http://java.sun.com/jsp/jstl/core”,前缀为“ c”。之后,页面中 <c:forEach>标签就是使用了 JSTL的标签进行了工作。对于该标签的功能,这里暂时不作具体讲解,只是让读者能够有个简单的概念,了解怎样定义和使用标签库。

Core标签库,又被称为核心标签库,该标签库的工作是对于 JSP页面一般处理的封装。在该标签库中的标签一共有 14个,被分为了四类,分别是:
 多用途核心标签: <c:out>、 <c:set>、 <c:remove>、 <c:catch>。
 条件控制标签: <c:if>、 <c:choose>、 <c:when>、 <c:otherwise>。
 循环控制标签: <c:forEach>、 <c:forTokens>。
 URL相关标签: <c:import>、 <c:url>、 <c:redirect>、 <c:param>。
以下是各个标签的用途和属性以及简单示例。
1. 用于显示的<c:out>标签
<c:out>标签是一个最常用的标签,用于在 JSP中显示数据。它的属性和描述如表 3所示:
表 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"/>
该示例将从 Session查找名为“ anyValue”的参数,并显示在页面,若没有找到则显示“ no value”。

2. 用于赋值的<c:set>标签
<c:set>标签用于为变量或 JavaBean中的变量属性赋值的工作。它的属性和描述如表4所示:
表 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。
3.用于删除的<c:remove>标签
<c:remove>标签用于删除存在于 scope中的变量。它的属性和描述如表5所示:
表5   <c:remove> 标签属性和说明

属性 描述
var 需要被删除的变量名
scope 变量的作用范围,若没有指定,默认为全部查找(可选)
下面看一个示例:
<c:remove var="sampleValue" scope="session"/>
${sessionScope.sampleValue} <br>
该示例将存在于 Session中名为“ sampleValue”的变量删除。下一句 EL表达式显示该变量时,该变量已经不存在了。
4 .用于异常捕获的<c:catch>标签
<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来决定错误信息的提示。
5 .用于判断的<c:if>标签
<c:if>标签用于简单的条件语句。它的属性和描述如表 6所示:
表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 ”变量中。  
6 .用于复杂判断的<c:choose>、<c:when>、<c:otherwise>标签

这三个标签用于实现复杂条件判断语句,类似“ if,elseif”的条件语句。
 <c:choose>标签没有属性,可以被认为是父标签, <c:when>、 <c:otherwise>将作为其子标签来使用。
 <c:when>标签等价于“ if”语句,它包含一个 test属性,该属性表示需要判断的条件。
 <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”。
7.用于循环的<c:forEach>标签
<c:forEach>为循环控制标签。它的属性和描述如表7所示:
表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>
该示例从“ 1”循环到“ 10”,并将循环中变量“ i”显示在页面上。
8 用于分隔字符的<c:forTokens>标签
<c:forTokens>标签可以根据某个分隔符分隔指定字符串,相当于 java.util.StringTokenizer类。它的属性和描述如表8所示:
表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

9 用于包含页面的<c:import>
<c:import>标签允许包含另一个 JSP页面到本页面来。它的属性和描述如表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。
10. 用于得到URL地址的<c:url>标签
<c:url>标签用于得到一个 URL地址。它的属性和描述如表 10所示:
表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属性,达到链接的目的。
11 .用于页面重定向的<c:redirect>标签
<c:redirect>用于页面的重定向,该标签的作用相当于 response.setRedirect方法的工作。它包含 url和 context两个属性,属性含义和 <C:url>标签相同。下面看一个示例。
<c:redirect url="/MyHtml.html"/>
该示例若出现在 JSP中,则将重定向到当前 Web Context下的“ MyHtml.html”页面,一般会与 <c:if>等标签一起使用。
12. 用于包含传递参数的<c:param>标签
<c:param>用来为包含或重定向的页面传递参数。它的属性和描述如表11所示:
表11   <c:param>标签属性和说明
属性 描述
name 传递的参数名
value 传递的参数值(可选)
下面是一个示例:
<c:redirect url="/MyHtml.jsp">
<c:param name="userName" value=”RW” />
</c:redirect>
该示例将为重定向的“ MyHtml.jsp”传递指定参数“ userName=’RW’”。

1.JSTL 标签 fn 函数



<c:choose>
<c:when test="${fn:length(objs[0]) > 10}">
<c:out value="${fn:substring(objs[0], 0, 8)}..." />
</c:when>
<c:otherwise>
<c:out value="${(objs[0])}" />
</c:otherwise>
</c:choose>



其中objs[0]是所要截取的字符串;



2.struct2 标签所处理的字符串很好用,

因为返回到页面的变量最终以字符串的形式显示,故它适用所有字符串的方法:



<s:if test="pdProduct.pdBrand.brandName.length() > 10">
<s:property value="pdProduct.pdBrand.brandName.substring(0,8).concat('...')"/>
</s:if>
<s:else>
<s:property value="pdProduct.pdBrand.brandName"/>
</s:else>



pdProduct.pdBrand.brandName为后台返回要显示的数据

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tiger20015/archive/2008/11/27/3389882.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值