jstl c标签(2)
9. <c:forEach>
库 :Core(核心库)
URI : http://java.sun.com/jsp/jstl/core
前缀 : c
描述 : <c:forEach>动作将其体反复计算固定次数,或者针对一个集合中的每个元素分别计算一次体。当前元素(如果未指定集合则为当前索引)和迭代状态可以通过嵌套变量提供给体中的动作元素。
此动作接受属性表中所列的类型集合。当前元素的类型即为底层集合的类型,仅有两个例外。对于一个基本类型的数组,当前元素将作为相应包装类(Integer、Float等等)的一个实例提供。对于一个java.util.Map,当前元素则作为一个java.util.Map.Entry提供。
语法 :
语法1:基于集合元素进行迭代
<c:forEachitems="collection"[var="var"][varStatus="varStatus"]
[begin="startIndex"][end="stopIndex"][step="increment"]>
JSPelements
</c:forEach>
语法2:迭代固定次数
<c:forEach[var="var"][varStatus="varStatus"]
begin="startIndex"end="stopIndex"[step="increment"]>
JSPelements
</c:forEach>
属性 :
属性名 |
描述 |
类型 |
是否接受动态值 |
是否支持 EL |
是否 必须 |
默认值 |
说明 |
begin |
开始位置 |
int |
Y |
Y |
否 |
0 |
结合集合使用时的开始索引,从0计起。对于集合来说默认为0 |
end |
结束位置 |
int |
Y |
Y |
否 |
最后一个成员 |
结合集合使用时的结束索引(元素引要小于等于此结束索引),从0计起。默认为集合的最后一个元素。如果end小于begin,则根本不计算体集合,迭代即要针对此集合进行。 |
items |
被迭代的集合对象 |
Collection, Iterator,Enumeration, Map, 数组 |
Y |
Y |
否 |
无
|
集合,迭代即要针对此集合进行。 |
step |
步长 |
int |
Y |
Y |
|
1 |
每次迭代时索引的递增值。默认为1。 |
var |
当前项目 |
String |
N |
N |
否 |
无 |
保存当前元素的嵌套变量的名字。 |
varStatus |
循环状态 |
String |
N |
N |
否 |
无 |
保存LoopTagStatus对象的嵌套变量的名字。 |
Null和错误处理
.假若items为null时,则表示为一空的集合对象
.假若begin大于或等于items时,则迭代不运算
注意:
varName的范围只存在<c:forEach>的本体中,如果超出了本题,则不能取得varName的值。如:
<c:forEachitems="${atts}"var="item">
</c:forEach>
${item}</br>
${item}则不会显示item的内容。<c:forEach>除了支持数组之外,还有标准的J2SE的结合类型,例如:
ArrayList,List,LinkedList,Vector,Stack和Set等等;另外包括java.util.Map类的对象,例如:
HashMap,Hashtable,Properties,Provider和Attributes。
另外<c:forEach>还提供了varStatus属性,主要用来存放现在指到成员的相关信息。例如:我们写成
varStatus="s",那么就会把信息存放到名称为s的属性当中。varStatus属性还提供另外四个属性:index,
count,fist和last,它们个自的意义如下:
属性类型意义 indexnumber现在指到成员的索引 countnumber总共指到成员的总和 firstboolean现在指到成员是否为第一个 lastboolean现在指到成员是否为最后一个
|
实例 :
----------------------------------------------------------------------------------------------------------------------------------------
Example1
< %@page contentType="text/html;charset=gb2312"%>
< %@taglib prefix="c"uri=" http://java.sun.com/jsp/jstl/core"% >
<%
Stringatts[]=newString[5];
atts[0]="hello";
atts[1]="this";
atts[2]="is";
atts[3]="a";
atts[4]="girl";
request.setAttritue("atts",atts);
%>
<c:forEachitems="${atts}"var="item"varStatus="s">
<h2><c:outvalue="${item}"/>的四种属性></h2>
index:${s.index}</br>
count:${s.count}</br>
first:${s.first}</br>
last:${s.last}</br>
</c:forEach>
----------------------------------------------------------------------------------------------------------------------------------------
Example2
综合实例
< select > < c:forEach items = " ${model.options} " var = "forum" > < c:choose > < c:when test = " ${forum.id==model.forumId} " > < option value = " ${forum.id} " elected > ${forum.name} </ option > </ c:when > < c:otherwise > < option value = " ${forum.id} " > ${forum.name} </ option > </ c:otherwise > </ c:choose > </ c:forEach > </ select > |
Example3
奇偶行样式
<c:forEachitems="${model.page.list}"var="observer"varStatus="loop"> < trclass="row$(loop.count%2)"> <td>迭代observer</td> <td>迭代observer</td> ... </tr> </c:forEach> |
Example4
分页条1
< c:set var = "page" value = " ${model.page} " ></ c:set > < table width = "800" align = "center" cellpadding = "0" cellspacing = "0" > < tr class = "even" > < td height = "20" align = "center" colspan = "3" valign = "top" > < a href = "javascript:page(1)" class = "gr_pages" > 首页 </ a > < c:if test = " ${page.currentPage>1} " > < a href = " javascript:page( < c:out value = " ${page.currentPage-1} " /> ) " class = "gr_pages" > 上页 </ a > </ c:if > < c:if test = " ${page.currentPage<page.totalPage} " > < a href = " javascript:page( < c:out value = " ${page.currentPage+1} " /> ) " class = "gr_pages" > 下页 </ a > </ c:if > < a href = " javascript:page( < c:out value = " ${page.totalPage} " default = "1" /> ) " class = "gr_pages" > 末页 </ a > 当前第 < c:out value = " ${page.currentPage} " /> / < c:out value = " ${page.totalPage} " /> 页 </ td > </ tr > </ table > |
Example5
分页条2
< div align = "center" >< span class = "all_font12" > < a href = " jsp/vote/voteAreaService.do?method=listVote¤tPage=1&subareaCode= ${param.subareaCode} " class = "gr_pages" > 首页 </ a > < c:if test = " ${page.currentPage>1} " > < a href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage-1} &subareaCode= ${param.subareaCode} " class = "gr_pages" > 前页 </ a > </ c:if > < a href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage} &subareaCode= ${param.subareaCode} " > < c:out value = " ${page.currentPage} " /></ a > < c:if test = " ${page.currentPage+1<=page.totalPage} " > < a href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage+1} &subareaCode= ${param.subareaCode} " >< c:out value = " ${page.currentPage+1} " /></ a > </ c:if > < c:if test = " ${page.currentPage+2<=page.totalPage} " > < a href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage+2} &subareaCode= ${param.subareaCode} " >< c:out value = " ${page.currentPage+2} " /></ a > </ c:if > < c:if test = " ${page.currentPage+3<=page.totalPage} " > < a href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage+3} &subareaCode= ${param.subareaCode} " >< c:out value = " ${page.currentPage+3} " /></ a > </ c:if > < c:if test = " ${page.currentPage<page.totalPage} " > < a href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage+1} &subareaCode= ${param.subareaCode} " class = "gr_pages" > 后页 </ a > </ c:if > < a href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.totalPage} &subareaCode= ${param.subareaCode} " class = "gr_pages" > 末页 </ a > < a > 当前第 < c:out value = " ${page.currentPage} " /> / < c:out value = " ${page.totalPage} " /> 页 </ a ></ span ></ div > |
Example6
综合实例
<%@pageimport="java.util.Map"%> <%@pageimport="java.util.HashMap"%> <%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>
<% Mapmap=newHashMap(); map.put("a","12345"); map.put("b","abcde"); out.println(map.get("a")); request.setAttribute("map",map); %> <!-- 完全迭代 --> <c:forEachitems="${map}"var="mymap"> <c:outvalue="${mymap.key}"/> <c:outvalue="${mymap.value}"/> </c:forEach> <!--根据map的key来找到特定的值--> <c:forEachitems="${map}"var="mymap"> <c:iftest="${mymap.key=='a'}"> <c:outvalue="${mymap.value}"/> </c:if> </c:forEach>
|
10. <c:forTokens>
库 :Core(核心库)
URI : http://java.sun.com/jsp/jstl/core
前缀 : c
描述 : 标签可以根据某个分隔符分隔指定字符串,相当于java.util.StringTokenizer 类。
语法 :
<c:forTokensitems="stringFoTokens"delims="delimmmmiters"[var="varName"]
[varStatus="varStatusName"][begin="begin"][end="end"][step="step"]>
...body内容....
</c:forTokens>
属性 :
属性名 |
描述 |
类型 |
是否接受动态值 |
是否支持 EL |
是否 必须 |
默认值 |
说明 |
var |
变量名 |
String |
false |
Y |
否 |
无 |
用来存放现在指到的成员 |
items |
被迭代的字符串 |
String |
true |
Y |
是 |
无 |
被迭代的字符串
|
delims |
分隔符 |
String |
true |
N |
是 |
无 |
定义用来分割字符串的字符 |
varStatus |
循环状态变量 |
String |
false |
N
|
否
|
无 |
用来存放现在指到的相关成员信息 |
begin |
开始条件 |
int |
true |
Y |
否 |
0 |
开始的位置 |
end
|
结束条件 |
int |
true |
Y |
否 |
最后一个成员
|
结束的位置 |
step |
步长 |
int |
true |
Y |
否 |
1
|
每次迭代步长 |
限制:
.假若有begin属性时,begin必须大于等于0
.假若有end属性时,必须大于begin
.假若有step属性时,step必须大于等于1
Null和错误处理
.假如itmes为null时,则表示为有空的集合对象
.假若begin大于等于items的大小时,则迭代不运算
实例 :
<c:forTokenitems="A,B,C,D,E,F,G"delims=","var="item>
${item}
</c:forToken>
items属性也可以用EL,例如:
<%
Stringphonenumber="123-456-7899";
request.setAttribute("userPhone",phonenumber);
%>
<c:forTokensitems="${userPhone}"delims="-"var="item">
${item}
</c:forTokens>
11. <c:import>
库 :Core(核心库)
URI : http://java.sun.com/jsp/jstl/core
前缀 : c
描述 : 标签允许包含另一个JSP 页面到本页面来。jsp有两种内置机制可以将来自不同URL的内容合并到一个JSP页面:include伪指令和<jsp:include>操作。不过,不管是哪种机制,要包含的内容都必须属于与页面本身相同的Web应用程序(或servlet上下文)。两个标记之间的主要区别在于:include伪指令在页面编译期间合并被包含的内容,而<jsp:include>操作却在请求处理JSP页面时进行。
core库的<c:import>和<jsp:include>一样,<c:import>也是一种请求时操作,它的基本任务就是将其它一些Web资源的内容插入JSP页面中。通过url属性指定将要导入内容的URL,这个属性是<c:import>的唯一一个必选属性。这里允许使用相对URL,并且根据当前页面的URL来解析这个相对URL。但是,如果url属性的值以斜杠开始,那么它就被解释成本地JSP容器内的绝对URL。如果没有为context属性指定值,那么就认为这样的绝对URL引用当前servlet上下文内的资源。如果通过context属性显式地指定了上下文,那么就根据指定的servlet上下文解析绝对(本地)URL。但<c:import>操作并不仅仅限于访问本地内容。也可以将包含协议和主机名的完整URI指定为url属性的值。实际上,协议甚至不仅局限于HTTP。<c:import>的url属性值可以使用java.net.URL类所支持的任何协议。
语法 :
语法1:资源的内容使用String对象向外暴露
<c:importurl="url"[context="context"]
[var="varName"][scope="{page|request|session|application}"][charEncoding="charEncoding"]>
内容
</c:import>
语法2:资源的内容使用Reader对象向外暴露。
<c:importurl="url"[context="context"]
varReader="varReaderName"[charEncoding="charEncoding"]>
内容
</c:import>
属性 :
属性名 |
描述 |
类型 |
是否接受动态值 |
是否支持 EL |
是否 必须 |
默认值 |
说明 |
url |
统一资源定位器 |
String |
true |
Y |
是 |
无 |
待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源 |
context |
上下文 |
String |
true |
Y |
否 |
无 |
当使用相对路径访问外部context资源时,context指定了这个资源的名字。 |
var |
变量 |
String |
false |
N |
否 |
无 |
参数的名字。 |
scope |
范围 |
String |
false |
N |
否 |
page |
var参数的作用范围。 |
cahrEncoding |
字符编码 |
String |
true |
Y |
否 |
无 |
输入资源的字符编码。 |
varReader |
资源 阅读器 |
String |
false |
N |
否 |
无 |
这个参数的类型是Reader,用于读取资源。 |
说明
<c:import>中必须要有url属性,它是用来设定被包含网页的地址。它可以为绝对地址或是相对地址.
<c:import>也支持FTP协议,假设现在有一个FTP站台,地址为ftp.javaworld.com.tw,它里面有一个文件data.txt,那么可以写成如下方式将其内容显示出来:
<c:importurl="ftp://ftp.cse.yzu.edu.tw/data.txt"/>
另外,可以在<c:import>的本体内容中使用<c:param>,它的功用主要是:可以将参数传递给被包含的文件,它有两个属性name和value.如:
<c:importurl="http://java.sun.com">
<c:paramname="test"value="1234"/>
</c:import>
这样的做法等于是包含一个文件,并且所指定的网址会变成如下:
http://java.sun.com?test=1234
实例 :
----------------------------------------------------------------------------------------------------------------------------------------
Example1
<c:catchvar="exception">
<c:importurl="ftp://ftp.example.com/package/README"/>
</c:catch>
<c:iftest="${notemptyexception}">
Sorry,theremotecontentisnotcurrentlyavailable.
</c:if>
<c:import>操作用来包含通过FTP协议访问的文档内容。此外,还使用了<c:catch>操作,以便在本地处理FTP文件传送期间可能发生的任何错误。错误处理是这样实现的:使用<c:catch>的var属性为异常指定一个限定了作用域的变量,然后使用<c:if>检查其值。如果产生了异常,那么就会对那个限定了作用域的变量进行赋值:如清单18中的EL表达式所显示的那样,该变量的值将不会为空。由于FTP文档的检索将会失败,因此会显示有关这种情况的错误消息。<c:import>操作的最后两个(可选的)属性是var和scope。var属性会导致从指定URL获取的内容(作为String值)被存储在一个限定了作用域的变量中,而不是包含在当前JSP页面中。scope属性控制该变量的作用域,缺省情况下是页面作用域。如同我们在今后的文章中将要看到的那样,JSTLxml库中的标记利用了<c:import>这种能力,即将整个文档存储在一个限定了作用域的变量中。
还要注意的是,可以使用(可选的)嵌套的<c:param>标记来为正在导入的URL指定请求参数。与在<c:url>中嵌套<c:param>标记一样,必要时也要对参数名称和参数值进行URL编码。
----------------------------------------------------------------------------------------------------------------------------------------
Example2
<c:importurl="/MyHtml.html"var="thisPage"/>
<c:importurl="/MyHtml.html"context=”/sample2”var="thisPage"/>
<c:importurl="www.sample.com/MyHtml.html"var="thisPage"/>
该示例演示了三种不同的导入方法,第一种是在同一Context下的导入,第二种是在不同的Context下导入,第三种是导入任意一个URL。
---------------------------------------------------------------------------------------------------------------------------------------
12. <c:url>
库 :Core(核心库)
URI : http://java.sun.com/jsp/jstl/core
前缀 : c
描述 : 主要用来产生一个URL。
语法 :
语法1:没有本体内容
<c:urlvalue="value"[context="context"][var="varName"]
[scope="{page|request|session|application}"]/>
语法2:本体内容代表查询字符串(QueryString)参数
<c:urlvalue="value"[context="context"][var="varName"]
[scope="{page|request|session|application}"]>
<c:param>标签
</c:url>
属性 :
属性名 |
描述 |
类型 |
是否接受动态值 |
是否支持 EL |
是否 必须 |
默认值 |
说明 |
value |
|
String |
true |
Y |
是 |
无 |
执行的URL |
context |
|
String |
true |
Y |
否 |
无 |
相同Container下,其他web站台必须以“/”开头 |
var |
|
String |
false |
N |
否 |
无 |
储存被包含文件的内容(以String类型存入) |
scope |
|
String |
false |
N |
否 |
page |
var变量的JSP范围 |
实例 :
<c:urlvalue="http://www.javafan.net">
<c:paramname="param"value="value"/>
</c:url>
上面执行结果将会产生一个网址为http://www.javafan.net?param=value,我们更可以搭配HTML的<a>使用,如下:
<ahref="
<c:urlvalue="http://www.javafan.net">
<c:paramname="param"value="value"/>
</c:url>">Java爱好者</a>
如果<c:url>有var属性时,则网址会被存到varName中,而不会直接输出网址。
13. <c:redirect>
库 :Core(核心库)
URI : http://java.sun.com/jsp/jstl/core
前缀 : c
描述 : 可以将客户端的请求从一个JSP网页导向到其他文件。
语法 :
语法1:没有本体内容
<c:redirecturl="url"[context="context"]/>
语法2:本体内容代表查询字符串(QueryString)参数
<c:redirecturl="url"[context="context"]>
<c:param>
</c:redirect>
属性 :
属性名 |
描述 |
类型 |
是否接受动态值 |
是否支持 EL |
是否 必须 |
默认值 |
说明 |
url |
统一资源定位器 |
String
|
true |
Y |
是 |
无 |
导向的目标地址,它可以是相对或绝对地址。
|
context |
上下文 |
String |
true |
Y |
否 |
无 |
相同Container下,其他web站台必须以“/”开头 |
实例 :
<c:redirect>的功能不止可以导向网页,同样它还可以传递参数给目标文件。如:
<c:redirecturl="http://java.sun.com">
<c:paramname="param"value="value"/>
</c:redirect>
14. <c:param>
库 :Core(核心库)
URI : http://java.sun.com/jsp/jstl/core
前缀 : c
描述 :用于传递参数,用来为包含或重定向的页面传递参数。
语法 :
属性 :
属性名 |
描述 |
类型 |
是否接受动态值 |
是否支持 EL |
是否 必须 |
默认值 |
说明 |
name |
参数名 |
String
|
true |
Y |
是 |
无 |
传递的参数名
|
value |
参数值 |
String |
true |
Y |
否 |
无 |
传递的参数值(可选) |
实例 :
<c:redirecturl="/MyHtml.jsp">
<c:paramname="userName"value=”RW”/>
</c:redirect>
该示例将为重定向的“MyHtml.jsp”传递指定参数“userName=’RW’”。
相关推荐
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> jstl标准标签库的三个jar包:jstl-1.2、jstl-api-1.2、jstl-impl-1.2。 jstl标准标签库的三个jar包:jstl-1.2、jstl-api-1.2、jstl-impl-1.2。 ...
C标签是JSTL的一部分,全称为Core标签库,提供了大量实用的功能,如迭代数组、集合,执行条件语句,以及处理页面导航等。 在Java Web应用中,JSTL C标签可以帮助开发者避免在JSP页面中编写过多的Java脚本,使代码更...
JSTL 以及自定义标签开发相关 JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out、set、remove、catch 2.流程控制标签:if、choose、when、otherwise 3.循环标签:forEach、forTokens 4.URL...
**JSTL与C标签库** JavaServer Pages Standard Tag Library(JSTL)是一个标准的标签库,用于增强JavaServer Pages(JSP)的可读性和可维护性。它提供了许多预定义的标签,用于执行常见的JSP任务,如迭代、条件判断...
JSTL(JavaServer Pages Standard Tag Library,JavaServer Pages 标准标签库)是Java Web开发中常用的一个库,它提供了一系列预定义的标签,用于简化JSP页面中的逻辑代码,使得页面更加清晰易读。在给定的压缩包...
JSTL(JavaServer Pages Standard Tag Library)即JavaServer页面的标准标签库,它是一套用于JSP页面的自定义标签库,通过这些标签可以简化JSP页面的开发。本文将对JSTL中常用的标签进行总结。 首先,<c:out>标签...
2. **JSTL的核心标签库(core)**: - `<c:out>`:用于安全地输出变量的值,防止XSS攻击。 - `<c:if>`:提供条件判断功能,类似Java的`if`语句。 - `<c:choose>`, `<c:when>`, `<c:otherwise>`:提供类似于Java的...
自己总结的JSTL 核心标签 附上一定的源码 希望对大家有用
2. **流程控制标签:** 包括条件判断和迭代。 - `<c:if>`:执行条件判断,`test`属性是判断的条件。 - `<c:choose>`:多条件判断,配合`<c:when>`和`<c:otherwise>`使用,`<c:when>`标签内的内容在满足条件时执行,...
JavaServer Pages Standard Tag Library(JSTL)是用于简化JSP开发的标准标签库,它将常见的JSP操作封装成易于使用的标签,使得代码更加简洁、可读性更强。JSTL的核心标签库提供了处理流程控制、迭代、条件判断等...
2. **JSTL函数标签** JSTL函数标签库(fn taglib)提供了额外的字符串操作和集合操作函数,比如`fn:split`用于分割字符串,`fn:contains`检查字符串是否包含特定子串。 3. **JSTL SQL标签** SQL标签库允许在JSP...
JSTL还包括其他标签,如`<c:forEach>`用于迭代集合,`<c:forEach>`和`<fmt:formatDate>`用于日期和时间格式化,以及`<c:remove>`用于删除变量等。学习和掌握JSTL能显著提高JSP开发的效率和代码的可读性。
**JSTL(JavaServer Pages Standard Tag Library)** 是一个标准的标签库,它为Java Servlet和JavaServer Pages (JSP) 提供了强大的处理能力,使得开发者可以通过使用标签而不是脚本来实现页面逻辑,从而提高了代码...
### JSTL(JSP标准标签库):增强JSP页面功能的关键技术 JSTL,全称为JSP Standard Tag Library(JSP标准标签库),是JavaServer Pages(JSP)技术的重要补充,旨在简化JSP页面的开发,提供了一系列预定义的、可...
2. **配置web.xml**:在`web.xml`文件中,我们需要声明JSTL的标签库解析器。添加如下配置: ```xml <taglib-uri>/tags/jstl-core <taglib-location>/WEB-INF/tlds/c.tld <taglib-uri>/tags/jstl-fmt ...
以上只是JSTL核心标签库的一部分功能,实际应用中还有更多标签,如循环标签`<c:forEach>`、迭代标签`<c:forTokens>`等。这些标签在处理数据、控制流程等方面提供了极大的便利,使得JSP页面更加简洁、易读,也更符合...
**JSTL(JavaServer Pages Standard Tag Library)** 是一个标准的JSP标签库,它提供了许多用于处理常见任务的标签,比如迭代、条件判断、字符串操作等。**`fn`** 标签库是JSTL的一部分,专门用于提供各种字符串处理...
JSTL提供了丰富的标签,包括控制流标签(`if`, `choose`, `when`, `otherwise`等)、迭代标签(`forEach`)、函数标签(`fn:escapeXml`, `fn:length`等)以及XML处理标签(`c:import`, `c:out`等)。下面是一些常见...