首页 > 代码库 > 第五章_JSTL

第五章_JSTL

5.1、下载JSTL

http://jstl.java.net

 

5.2JSTL类库

类别

下属功能

URI

前缀

 

Core

变量支持

 

http://java.sun.com/jsp/jstl/core

 

c

流向控制

URL管理

杂项

 

XML

Core

 

http://java.sun.com/jsp/jstl/xml

 

x

流向控制

转换

 

I18n

语言环境

 

http://java.sun.com/jsp/jstl/fmt

 

fmt

消息格式化

数字和日期格式化

数据库

SQL

http://java.sun.com/jsp/jstl/sql

sql

 

功能

集合长度

http://java.sun.com/jsp/jstl/functions

 

fn

字符串操作

 

为了在JSP页面中使用JSTL类库,必须以下列格式使用taglib指令:

<%@ taglib uri=”uri” prefix=”prefix”%>

例如,为了使用Core类库,必须在JSP页面开头处这样声明:

<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>

 

5.3、通用动作指令

5.3.1out标签

Out标签对表达式进行运算,并将结果输出到当前的JspWriterOut的语法有两种形式:

<c:out value=http://www.mamicode.com/”value” [escapeXml=”{true|false}”] [default=”defaultValue”] />

<c:out value=http://www.mamicode.com/”value” [escapeXml=”{true|false}”]>

Default value

</c:out>

 

5.3.2set标签

利用set标签可以完成以下工作:

1、创建一个字符串和引用该字符串的一个限域变量。

2、创建一个限域变量,并引用已经存在的某一个限域变量。

3、设置限域对象的属性。

如果利用set创建限域变量,那么处于该标签之后的整个jsp页面将都可以使用该变量。

Set标签的语法有4种形式。第一种形式用来创建一个限域变量,在该变量的value属性中可以指定要创建的字符串,或者现有的限域对象。

No1

<c:set value=http://www.mamicode.com/”value” var=”varName” [scope=”{page|request|session|application}”] />

No2

<c:set value=http://www.mamicode.com/”value” var=”varName” [scope=”{page|request|session|application}”] >

Body content

</c:set>

No3、设置限域对象的属性值。Target属性指定限域对象,property属性指定限域对象的属性。要赋给该属性的值通过value属性进行设置:

<c:set target=”target” property=”propertyName” value=http://www.mamicode.com/”value” />

例如,下面的set标签是将字符串Tokyo赋给限域对象addresscity属性:

<c:set target=”${address}” property=”city” value=http://www.mamicode.com/”Tokyo” />

No4、值是做为主体内容传递的:

<c:set target=”target” property=”propertyName”>

Body content

</c:set>

 

5.3.3remove标签

利用remove标签删除限域变量,语法如下:

<c:remove var=”varName” [scope=”{page|request|session|application}”] />

注意:限域变量引用的对象并没有被删除。因此,如果另一个限域对象也在引用这个对象,那么仍然可以通过另外这个限域对象来访问该对象。

 

5.4、条件式动作指令

JSTL中有4个标签可以执行条件式动作指令:ifchoosewhenotherwise

 

5.4.1if标签

<c:if test=”testCondition” var=”varName” [scope=”{page|request|session|application}” />

或者

<c:if test=”testCondition” [var=”varName”] [scope=”{page|request|session|application}”>

Body content

</c:if>

 

属性

类型

描述

Test+

Boolean

决定是否应该处理某些现有主体内容的测试内容

Var

String

引用测试条件的限域变量名称,var的类型为boolean

Scope

String

var设置的限域变量的范围

 

5.4.2choosewhenotherwise标签

Choosewhen标签的作用与java中的switchcase关键字相似,也就是说,它们为互相排斥的条件式执行提供相关内容。Choose标签内部必须嵌有一个或多个when标签,每个when标签代表可以运行运算和处理的一种情况。Otherwise标签用于默认的条件代码块,如果所有when标签的测试条件运算结果都不为true,就会执行该代码块。如果有otherwise标签,它必须放在最后一个when标签之后。

例如:

<c:choose>

<c:when test=”${param.status==’full’}”>

You atr a full member

</c:when>

<c:when test=”${param.status==’student’}”>

You are a student memeber

</c:when>

<c:otherwise>

Please register

</c:otherwise>

</c:choose>

 

5.5iterator动作指令

两个可以执行iterator动作指令的标签:forEachforTokens

 

5.5.1forEach标签

forEach的语法有两种形式,第一种是将body内容重复一定的次数:

<c:forEach [var=”varName”] begin=”begin” end=”end” step=”step”>

Body content

<c:forEach>

第二种形式用于迭代一个对象集合:

<c:forEach items=”collection” [var=”varName”] [varStatus=”varStatusName”]

[begin=”begin”] [end=”end”] [step=”step”]>

Body content

</c:forEach>

属性

类型

描述

Var

String

引用当前迭代项目的限域变量名称

Items+

支持的任何类型

要迭代的对象集合

varStatus

String

保存迭代状态的限域变量名称,它的值类型为javax.servlet.jsp.jstl.core.LoopTagStatus

Begin+

Int

如果指定了items,那么迭代将从处于指定索引的项开始,该集合中的第一个项索引为0。如果没有指定items,迭代将从该值设定的索引开始。如有指定,begin的值必须大于或者等于0

End+

Int

如果指定了items,那么迭代将结束于处于指定索引的项;如果没有指定的items,那么当索引到达指定值时,迭代结束。

Step+

Int

 

步长,迭代会从集合的第一个step项开始,根据step步长逐个地进行,如果有step属性,那么它的值必须大于或者等于1