第五章_JSTL

5.1、下载JSTL

http://jstl.java.net

 

5.2、JSTL类库


类别


下属功能


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指令:

[java] view plain copy

 print?

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

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

[java] view plain copy

 print?

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

5.3、通用动作指令

5.3.1、out标签

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

[java] view plain copy

 print?

  1. <c:out value=”value” [escapeXml=”{true|false}”] [default=”defaultValue”] />  
  2. <c:out value=”value” [escapeXml=”{true|false}”]>  
  3. Default value  
  4. </c:out>  

5.3.2、set标签

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

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

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

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

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

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

No1、

[java] view plain copy

 print?

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

No2、

[java] view plain copy

 print?

  1. <c:set value=”value” var=”varName” [scope=”{page|request|session|application}”] >  
  2. Body content  
  3. </c:set>  

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

[java] view plain copy

 print?

  1. <c:set target=”target” property=”propertyName” value=”value” />  

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

[java] view plain copy

 print?

  1. <c:set target=”${address}” property=”city” value=”Tokyo” />  

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

[java] view plain copy

 print?

  1. <c:set target=”target” property=”propertyName”>  
  2. Body content  
  3. </c:set>  
  4.    

5.3.3、remove标签

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

[java] view plain copy

 print?

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

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

 

5.4、条件式动作指令

在JSTL中有4个标签可以执行条件式动作指令:if、choose、when和otherwise。

 

5.4.1、if标签

[java] view plain copy

 print?

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

或者

[java] view plain copy

 print?

  1. <c:if test=”testCondition” [var=”varName”] [scope=”{page|request|session|application}”>  
  2. Body content  
  3. </c:if>  

 


属性


类型


描述


Test+


Boolean


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


Var


String


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


Scope


String


用var设置的限域变量的范围

 

5.4.2、choose、when和otherwise标签

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

例如:

[java] view plain copy

 print?

  1. <c:choose>  
  2. <c:when test=”${param.status==’full’}”>  
  3. You atr a full member  
  4. </c:when>  
  5. <c:when test=”${param.status==’student’}”>  
  6. You are a student memeber  
  7. </c:when>  
  8. <c:otherwise>  
  9. Please register  
  10. </c:otherwise>  
  11. </c:choose>  

 

5.5、iterator动作指令

两个可以执行iterator动作指令的标签:forEach和forTokens。

 

5.5.1、forEach标签

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

[java] view plain copy

 print?

  1. <c:forEach [var=”varName”] begin=”begin” end=”end” step=”step”>  
  2. Body content  
  3. <c:forEach>  

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

[java] view plain copy

 print?

  1. <c:forEach items=”collection” [var=”varName”] [varStatus=”varStatusName”]  
  2. [begin=”begin”] [end=”end”] [step=”step”]>  
  3. Body content  
  4. </c:forEach>  

属性


类型


描述


Var


String


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


Items+


支持的任何类型


要迭代的对象集合


varStatus


String


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

varStatus定义了一个循环变量var,循环状态变量中保存了循环进行时保存的信息,包括下面几个属性:

index:当前循环索引号

count成员总数

last:是否为最后一个成员

index的值是迭代的索引值+begin


Begin+


Int


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


End+


Int


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


Step+


Int

 


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

5.5.2、forTokens标签

forTokens标签可用于迭代以特定分界符分隔的token,这个动作指令的语法如下:

[java] view plain copy

 print?

  1. <c:forTokens items=”stringOfTokens” delims=”delimiters” [var=”varName”]  [varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>  
  2. Body content  
  3. </c:forTokens>  

 


属性


类型


描述


Var


String


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


Items+


String


要迭代的token字符串


varStatus


String


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


Begin+


Int


迭代的起始索引,这里的索引是从0开始的。如果有begin属性,那么它的值必须大于或者等于0。


End+


Int


迭代的结束索引,这里的索引是从0开始的。


Step


Int


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


Delims+


String


一组分节符

 

下面是一个forTokens范例:

[java] view plain copy

 print?

  1. <c:forTokens var=”item” items=”Argentina,Brazil,Chile” delims=”,”>  
  2. <c:out value=”${item}” /><br />  
  3. </c:forTokens>  
  4. 当它放在jsp中时,上述forTokens将产生以下结果:  
  5. Argentina  
  6. Brazil  
  7. Chile  

 

5.6、格式化动作指令

JSTL提供了格式化和解析数字和日期的标签,有:formatNumber、formatDate、tomeZone、setTimeZone、parseNumber及parseDate。

 

5.7、函数

除了定制动作指令之外,JSTL1.1和1.2中还定义了一组标准函数,可以用在EL表达式中,这些函数分组放在函数标签类库中。当使用这些函数时,必须在JSP上使用taglib指令。

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

调用函数时,要以下面这种格式来使用EL:

${fn:functionName}

这里的functionName是函数名称

 

5.7.1、contains函数

语法如下:

Contains(String,substring)

例如下面这些EL表达式都返回true:

[java] view plain copy

 print?

  1. <c:set var=”myString” value=”Hello World” />  
  2. ${fn:contains(myString, “Hello”)}  
  3. ${fn:contains(“Stella Cadente”, “Cadente”)}  

 

5.7.2、containsIgnoreCase函数

containsIgnoreCase函数与contains函数类似,但其检测是区分大小写的,具体语法如下:

containsIgnoreCase(String, substring)

 

5.7.3、endsWith函数

endsWith函数检测某个字符串是否以指定的后缀结尾。其返回值是一个Boolean值,具体语法如下:

endsWith(string, suffix)

例如:以下EL表达式将返回true

[java] view plain copy

 print?

  1. ${fn:endsWith(“Hello World”, “World”)}  

 

5.7.4、escapeXml函数

该函数用于给String进行编码,它的转换方法与out标签将其escapeXml属性设为true时相似,具体语法如下:

escapeXml(string)

例如:El表达式

[java] view plain copy

 print?

  1. ${fn:escapeXml(“User <br/> to change lines”)}  
  2. 显示为:  
  3. Use <br/> to change lines  

 

5.7.5、indexOf函数

indexOf函数返回在某个字符串中第一次出现指定子字符串时的索引。如果没有找到指定的子字符串,它将返回-1,具体语法如下:

indexOf(string,substring)

例如,以下EL表达式将返回7:

[java] view plain copy

 print?

  1. ${fn:indexOf(“Stella Cadente”, “Cadente”)}  

 

5.7.6、join函数

Join函数将一个String数组中的所有元素都合并成一个字符串,中间用指定的分隔符隔开,其语法如下:

Join(array, separator)

如果数组为null,将返回一个空的字符串。

例如,如果myArray是一个具有两个元素”my”和”world”的String数组,那么EL表达式:

[java] view plain copy

 print?

  1. ${fn:join(myArray, “,”)}将返回”my,world”  

 

5.7.7、length函数

length函数将返回一个集合中的项目数,或者一个字符串中的字符数。其语法如下:

length(input)

举个例子,下面的EL表达式将返回14:

[java] view plain copy

 print?

  1. ${fn:length(“Stella Cadente”)}  

 

5.7.8、replace函数

Replace函数用afterString替换某一个字符串中所有的beforeString,并返回结果。其语法replace(string, beforeSubstring, afterSubstring)

例如,EL表达式

[java] view plain copy

 print?

  1. ${fn:replace(“Stella Cadente”, “e”, “E”)}  
  2. 将返回”StElla CadEntE”  

 

5.7.9、split函数

Split函数将一个字符串分解成一组子字符串,它的作用与join相反。例如,以下代码分界字符串”my,world”,并将结果保存在限域变量split中。然后,它利用forEach标签将split格式化成一个HTML表格。

[java] view plain copy

 print?

  1. <c:set var=”split” value=’${fn:split(“my,world”,”,”)}’ />  
  2. <table>  
  3. <c:forEach var=”substring” items=”${split}”>  
  4. <tr><td>${substring}</td></tr>  
  5. </c:forEach>  
  6. </table>  
  7.    
  8. 其结果为:  
  9. <table>  
  10. <tr><td>my</td></tr>  
  11. <tr><td>world</td></tr>  
  12. </table>  

 

5.7.10、startsWith函数

startsWith函数测试某个字符串是否以指定的前缀开头,其语法如下:

startsWith(string,prefix)

例如,以下EL表达式将返回true:

[java] view plain copy

 print?

  1. ${fn:startsWith(“Stella Cadente”, “St”)}  

 

5.7.11、substring函数

Substring函数将返回一个从指定的起始索引(从0开始,含起始索引)至指定的结束索引之间的子字符串,其语法如下:

Substring(String, beginIndex, endIndex)

例如,以下EL表达式将返回”Stel”

[java] view plain copy

 print?

  1. ${fn:substring(“Stella Cadente”, 0, 4)}  

 

5.7.12、substringAfter函数

substringAfter函数返回第一次出现指定子字符串之后的字符串部分,其语法如下:

substringAfter(string, substring)

例如,以下EL表达式

[java] view plain copy

 print?

  1. ${fn:substringAfter(“Stella Cadente”, “e”)}  
  2. 将返回”lla Cadente”。  

 

5.7.13、substringBefore函数

substringBefore函数返回第一次出现子字符串之前的字符串部分,其语法如下:

substringBefore(string, substring)

例如,以下EL表达式将返回”St”

[java] view plain copy

 print?

  1. ${fn:substringBefore(“Stella Cadente”, “e”)}  

 

5.7.14、toLowerCase函数

toLowerCase函数将字符串转换成全部小写字母,其语法如下:

toLowerCase(string)

例如,以下EL表达式将返回”stella cadente”:

[java] view plain copy

 print?

  1. ${fn:toLowerCase(“Stella Cadente”)}  

 

5.7.15、toUpperCase函数

toUpperCase函数将字符串转换成全部大写字母,其语法如下:

toUpperCase(string)

例如,以下EL表达式将返回”STELLA CADENTE”

[java] view plain copy

 print?

  1. ${fn:toUpperCase(“Stella Cadente”)}  

 

5.7.16、trim函数

trim函数去掉字符串前后的空格,其语法如下:

trim(string)

例如,以下EL表达式将返回”Stella Cadente”

[java] view plain copy

 print?

  1. ${fn:trim(“              Stella Cadente       ”)}  
时间: 2024-09-28 23:14:56

第五章_JSTL的相关文章

《PHP程序设计》 第五章 中场一:数据库连接

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />          第五章 中场一:数据库连接      前两章中集中介绍了PHP语言,现在停下来开始创建一个应用程序.在本章中将创建一个连接MySQL数据库的应用程序.      在学习过前面两章之后,你肯定已经学会了怎样处理PHP内部数据,以及怎样编写语句和函数.下一步从逻辑上讲,应该到了学习如何用SQL(结构化查询语句

Frontpage2000中文教程:第五章(最后的启示)

frontpage|教程|中文 第五章 最后的启示 启示(1)定置表格 表格可以定置它的长宽,具体怎么做的?我们新建一个网页,插入一个一行一列的表格.在表格内点击鼠标右键,选择表格属性.在弹出的窗口中设置(如图1). (图1) 启示(2)设置图片热点连接 有时你可能不希望一张图片都做上连接,只想为图片的某部分做上连接,这就叫做提片热点连接.如何做到呢?我们点击一下想要做热点连接的图片,你会看到Frontpage2000会自动在编辑区下面弹出一个工具栏(如图2). (图2) 你可以使用这些工具加工

SEO从零开始第五章——新闻源与百度敏感词

  营销手段中包含了SEO,SEO是营销一部分如果想在SEO界有所成就那一定要学会网络营销手段,网络营销会了SEO自然就会了,因为SEO是根本网络营销而变的.2013年5月28日百度外链工具全新升级,我记得在SEO从零开始第2章节说过,快照全部停留在27号,28号百度肯定有动作,百度拒绝外链技术越来越成熟, 回到正题,最近很多灰色行业在大量收购百度新闻源来做百度敏感词语,先说说我自己理解的原理,先知道原理然后再推荐百度如何针对这些问题.目前主流获得敏感词语排名的方案企业,新闻源站劫持获取排名.百

&amp;gt; 第五章 类(rainbow 翻译)*1 (来自重粒子空间)

<<展现C#>> 第五章 类(rainbow 翻译)出处:http://www.informit.com\matter\ser0000002正文:第五章  类       前一章讨论了数据类型和它们的用法.现在我们转移到C#中至关重要的结构--类.没有了类,就连简单的C#程序都不能编译.这一章假定你知道了一个类的基本组成部分:方法.属性.构造函数和析构函数. C#在其中增加了索引和事件.       在这一章中,你学到下列有关类的话题.      . 使用构造函数和析构函数    

《.net编程先锋C#》第五章 类(转)

编程 第五章 类前一章讨论了数据类型和它们的用法.现在我们转移到C#中至关重要的结构--类.没有了 类,就连简单的C#程序都不能编译.这一章假定你知道了一个类的基本组成部分:方法.属性.构 造函数和析构函数. C#在其中增加了索引和事件.在这一章中,你学到下列有关类的话题.. 使用构造函数和析构函数.给类写方法.给一个类增加属性存取标志.实现索引.创建事件并通过代表元为事件关联客户.应用类.成员和存取修饰符. 5.1 构造函数和析构函数在你可以访问一个类的方法.属性或任何其它东西之前, 第一条执

第十五章 接口[《.net框架程序设计》读书笔记]

.net框架|笔记|程序|设计 第十五章 接口 摘要: 接口的应用及完全限定名方式定义接口的应用. 一. 接口与继承 l C#支持单实现继承和多接口继承 l 接口中可以定义:事件.无参属性(属性).含参属性(索引器):C#不允许接口定义任何静态成员(CLR却允许定义静态成员):CLR不允许接口定义实例字段和构造器. l 缺省为public abstract 方法,但不可用任何修饰符进行修饰(包括public) l 将值类型转换为接口类型(假设其实现了某个接口),则值类型被装箱为引用类型,以调用其

3D编程:第五章 Texture Mapping

第五章 Texture Mapping 纹理映射就是在3D object表面添加细节的过程.可以比喻成包装礼品的过程,包装纸就是一种2D纹理.纹理映射是现代渲染的基础,并用于多种有趣的图形技术中. An Introduction to Texture Mapping 相比如上一章使用HelloShaders和HelloShaders effects产生的纯色效果,通常情况你会期望在3D objects中渲染更多的细节.正如之前所讲的,3D模型由vertices组成,并组织成三角形,这些verti

第五章、虚拟存储器

第五章.虚拟存储器 虚拟存储器定义:指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统. 虚拟存储器特征 多次性 对换性 虚拟性 虚拟内存的实现方式 请求分页存储管理 请求分段存储管理 请求段页存储管理 页面置换算法 最佳置换算法(Optimal) 概念:其所选择的被淘汰的页面将是以后永不使用获取是在最长时间内不再访问的页面. 向后看,谁最后被访问置换谁. 例子: 先进先出置换算法(FIFO) 淘汰最先进入内存的页面,即选择在内存中驻留时间最大的页面. 例子: 最近最久未

ArcGIS for Desktop入门教程_第五章_ArcCatalog使用 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第五章_ArcCatalog使用 - ArcGIS知乎-新一代ArcGIS问答社区 1 ArcCatalog使用1.1 GIS数据 地理信息系统,就是将真实的地物或地理现象抽象为计算机可表达的简单的集合类型(比如点.线.多边形),再按其几何类型和专题信息进行分类,通过计算机技术来管理和分析这些数据.从数据的组织形式上,我们通常将其分为矢量数据和栅格数据两大类. 如上图所示,分别用矢量和栅格的形式来表达一条高速公路.我们可以清晰地发现矢量数据与栅