第五章_JSTL
5.1、下载JSTL
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指令:
<%@ taglib uri=”uri” prefix=”prefix”%>
比如,为了使用Core类库,必须在JSP页面开头处这样声明:
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
5.3、通用动作指令
5.3.1、out标签
Out标签对表达式进行运算。并将结果输出到当前的JspWriter。
Out的语法有两种形式:
<c:out value=”value” [escapeXml=”{true|false}”] [default=”defaultValue”] />
<c:out value=”value” [escapeXml=”{true|false}”]>
Default value
</c:out>
5.3.2、set标签
利用set标签能够完毕下面工作:
1、创建一个字符串和引用该字符串的一个限域变量。
2、创建一个限域变量,并引用已经存在的某一个限域变量。
3、设置限域对象的属性。
假设利用set创建限域变量,那么处于该标签之后的整个jsp页面将都能够使用该变量。
Set标签的语法有4种形式。
第一种形式用来创建一个限域变量,在该变量的value属性中能够指定要创建的字符串。或者现有的限域对象。
No1、
<c:set value=”value” var=”varName” [scope=”{page|request|session|application}”] />
No2、
<c:set value=”value” var=”varName” [scope=”{page|request|session|application}”] >
Body content
</c:set>
No3、设置限域对象的属性值。Target属性指定限域对象,property属性指定限域对象的属性。
要赋给该属性的值通过value属性进行设置:
<c:set target=”target” property=”propertyName” value=”value” />
比如,以下的set标签是将字符串Tokyo赋给限域对象address的city属性:
<c:set target=”${address}” property=”city” value=”Tokyo” />
No4、值是做为主体内容传递的:
<c:set target=”target” property=”propertyName”>
Body content
</c:set>
5.3.3、remove标签
利用remove标签删除限域变量,语法例如以下:
<c:remove var=”varName” [scope=”{page|request|session|application}”] />
注意:限域变量引用的对象并没有被删除。
因此,假设还有一个限域对象也在引用这个对象,那么仍然能够通过另外这个限域对象来訪问该对象。
5.4、条件式动作指令
在JSTL中有4个标签能够运行条件式动作指令:if、choose、when和otherwise。
5.4.1、if标签
<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.2、choose、when和otherwise标签
Choose和when标签的作用与java中的switch和casekeyword相似,也就是说,它们为互相排斥的条件式运行提供相关内容。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.5、iterator动作指令
两个能够运行iterator动作指令的标签:forEach和forTokens。
5.5.1、forEach标签
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 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。这个动作指令的语法例如以下:
<c:forTokens items=”stringOfTokens” delims=”delimiters” [var=”varName”] [varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
Body content
</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范例:
<c:forTokens var=”item” items=”Argentina,Brazil,Chile” delims=”,”>
<c:out value=”${item}” /><br />
</c:forTokens>
当它放在jsp中时,上述forTokens将产生下面结果:
Argentina
Brazil
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:
<c:set var=”myString” value=”Hello World” />
${fn:contains(myString, “Hello”)}
${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
${fn:endsWith(“Hello World”, “World”)}
5.7.4、escapeXml函数
该函数用于给String进行编码,它的转换方法与out标签将其escapeXml属性设为true时相似,详细语法例如以下:
escapeXml(string)
比如:El表达式
${fn:escapeXml(“User <br/> to change lines”)}
显示为:
Use <br/> to change lines
5.7.5、indexOf函数
indexOf函数返回在某个字符串中第一次出现指定子字符串时的索引。
假设没有找到指定的子字符串,它将返回-1,详细语法例如以下:
indexOf(string,substring)
比如,下面EL表达式将返回7:
${fn:indexOf(“Stella Cadente”, “Cadente”)}
5.7.6、join函数
Join函数将一个String数组中的全部元素都合并成一个字符串,中间用指定的分隔符隔开,其语法例如以下:
Join(array, separator)
假设数组为null,将返回一个空的字符串。
比如,假设myArray是一个具有两个元素”my”和”world”的String数组,那么EL表达式:
${fn:join(myArray, “,”)}将返回”my,world”
5.7.7、length函数
length函数将返回一个集合中的项目数,或者一个字符串中的字符数。其语法例如以下:
length(input)
举个样例,以下的EL表达式将返回14:
${fn:length(“Stella Cadente”)}
5.7.8、replace函数
Replace函数用afterString替换某一个字符串中全部的beforeString,并返回结果。其语法replace(string, beforeSubstring, afterSubstring)
比如。EL表达式
${fn:replace(“Stella Cadente”, “e”, “E”)}
将返回”StElla CadEntE”
5.7.9、split函数
Split函数将一个字符串分解成一组子字符串,它的作用与join相反。比如,下面代码分界字符串”my,world”,并将结果保存在限域变量split中。
然后,它利用forEach标签将split格式化成一个HTML表格。
<c:set var=”split” value=’${fn:split(“my,world”,”,”)}’ />
<table>
<c:forEach var=”substring” items=”${split}”>
<tr><td>${substring}</td></tr>
</c:forEach>
</table>
其结果为:
<table>
<tr><td>my</td></tr>
<tr><td>world</td></tr>
</table>
5.7.10、startsWith函数
startsWith函数測试某个字符串是否以指定的前缀开头,其语法例如以下:
startsWith(string,prefix)
比如,下面EL表达式将返回true:
${fn:startsWith(“Stella Cadente”, “St”)}
5.7.11、substring函数
Substring函数将返回一个从指定的起始索引(从0開始,含起始索引)至指定的结束索引之间的子字符串,其语法例如以下:
Substring(String, beginIndex, endIndex)
比如,下面EL表达式将返回”Stel”
${fn:substring(“Stella Cadente”, 0, 4)}
5.7.12、substringAfter函数
substringAfter函数返回第一次出现指定子字符串之后的字符串部分。其语法例如以下:
substringAfter(string, substring)
比如。下面EL表达式
${fn:substringAfter(“Stella Cadente”, “e”)}
将返回”lla Cadente”。
5.7.13、substringBefore函数
substringBefore函数返回第一次出现子字符串之前的字符串部分,其语法例如以下:
substringBefore(string, substring)
比如,下面EL表达式将返回”St”
${fn:substringBefore(“Stella Cadente”, “e”)}
5.7.14、toLowerCase函数
toLowerCase函数将字符串转换成所有小写字母。其语法例如以下:
toLowerCase(string)
比如,下面EL表达式将返回”stella cadente”:
${fn:toLowerCase(“Stella Cadente”)}
5.7.15、toUpperCase函数
toUpperCase函数将字符串转换成所有大写字母。其语法例如以下:
toUpperCase(string)
比如,下面EL表达式将返回”STELLA CADENTE”
${fn:toUpperCase(“Stella Cadente”)}
5.7.16、trim函数
trim函数去掉字符串前后的空格,其语法例如以下:
trim(string)
比如。下面EL表达式将返回”Stella Cadente”
${fn:trim(“ Stella Cadente ”)}
第五章_JSTL的更多相关文章
- 《Django By Example》第五章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者@ucag注:大家好,我是新来的翻译, ...
- 《Entity Framework 6 Recipes》中文翻译系列 (22) -----第五章 加载实体和导航属性之延迟加载
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第五章 加载实体和导航属性 实体框架提供了非常棒的建模环境,它允许开发人员可视化地使 ...
- 精通Web Analytics 2.0 (7) 第五章:荣耀之钥:度量成功
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第五章:荣耀之钥:度量成功 我们的分析师常常得不到我们应得的喜欢,尊重和资金,因为我们没有充分地衡量一个黄金概念:成果.因为我们 ...
- 《Linux内核设计与实现》读书笔记 第五章 系统调用
第五章系统调用 系统调用是用户进程与内核进行交互的接口.为了保护系统稳定可靠,避免应用程序恣意忘形. 5.1与内核通信 系统调用在用户空间进程和硬件设备间添加了一个中间层, 作用:为用户空间提供了一种 ...
- Java语言程序设计(基础篇) 第五章 循环
第五章 循环 5.2 while循环 1.while循环的语法如下: while(循环继续条件){ //循环体 语句(组); } 2.程序:提示用户为两个个位数相加的问题给出答案 package co ...
- 读《编写可维护的JavaScript》第五章总结
第五章 UI层的松耦合 5.1 什么是松耦合 在Web开发中,用户界面是由三个彼此隔离又相互作用的层定义的: HTML是用来定义页面的数据和语义 CSS用来给页面添加样式 JavaScript用来给页 ...
- 《Linux内核设计与实现》课本第五章学习笔记——20135203齐岳
<Linux内核设计与实现>课本第五章学习笔记 By20135203齐岳 与内核通信 用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个. 为用户空间提供了硬件的抽象接口. 保 ...
- Android深度探索--HAL与驱动开发----第五章读书笔记
第五章主要学习了搭建S3C6410开发板的测试环境.首先要了解到S3C6410是一款低功耗.高性价比的RISC处理器它是基于ARMI1内核,广泛应用于移动电话和通用处理等领域. 开发板从技术上说与我们 ...
- 《java编程思想》读书笔记(一)开篇&第五章(1)
2017 ---新篇章 今天终于找到阅读<java编程思想>这本书方法了,表示打开了一个新世界. 第一章:对象导论 内容不多但也有20页,主要是对整本书的一个概括.因为已经有过完整JAV ...
随机推荐
- ubuntu安装iscsi
ubuntu安装iscsi target端:apt-get install iscsitarget ubuntu安装iscsi initiator端:apt-get install open-iscs ...
- MySQL 存储过程例子,不能在if else里面用begin end否则会报错Error Code : 1064!
Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your My ...
- 联想A800新蜂ROM V1.1 基于官方4.0.4精简省电稳定
ROM介绍 [出品]:新蜂工作室(基于官方) 1.源于官方:基于最稳定官方底包制作. 2.深度精简:自带APK数量从原厂包的131个降低到90个,精简31% 3.ROM包大小从原厂314MB精简到16 ...
- Swift - 使用UIDatePicker实现倒计时功能
如果使用UIDatePicker时将模式设置为CountDownTimer,即可让该控件作为倒计时器来使用.效果图如下: 下面是代码示例: 1 2 3 4 5 6 7 8 9 10 11 12 ...
- Qt Windows下开机自动启动自己的程序
源地址:http://blog.csdn.net/chrisfxs/article/details/13279491 版权声明:本文为博主原创文章,未经博主允许不得转载. void Widget::R ...
- 用Python制作游戏外挂(上)
源地址:http://eyehere.net/2012/python-game-bot-autopy-1/ 悲剧成我这样的人,我知道肯定不止我一个,所以我一点都不悲伤:-( 所以我打开了4399小游戏 ...
- Servlet API中文版
基本类和接口 一.javax.servlet.Servlet接口 servlet抽象集是javax.servlet.Servlet接口,它规定了必须由Servlet类实现由servlet引擎识别和管理 ...
- 辛星PHP教程之yii和ci教程已经写完,望与朋友们交流
记得有个朋友给我说,你写的PHP框架是不是过于少了.我感觉仅仅有一个thinkphp确实不好,于是就又写了下yii和ci的教程,事实上我之前是研究过这两个框架的,因此写起来也还算得心应手吧.估计接下 ...
- 初窥Linux 之 区分硬连接和软连接
一.Linux下的两种连接文件及创建方式 在Linux下面的连接文件有两种——软连接和硬连接,虽然都是连接文件,但两者却有很大的区别.一种是类似于Windows的快捷方式功能的文件(或目录),这种连接 ...
- [Android学习笔记]Activity
每一个activity都表示一个屏幕,程序把activity呈现给用户,而在activity上实际看到的UI控件,都是View. 故把activity简单理解为view的容器. activity的状态 ...