这里代码forEach 表示什么意思
<c:forEach var="profBean" items="${bForm.containerMap.profitList}" varStatus="stat">
<tr>
<c:if test="${!bActionForm.containerMap.isOnlyOneCritreria}">
<c:if test="${Bean.isFirstRecordInGroup}">
<td class="${stat.index%2 == 0 ? 'light' :''}" style="border-right: solid 2px;border-bottom: solid 2px; " rowspan="${profBean.totalGroupNum}">
${profBean.primaryCriterion}
</td>
</c:if>
</c:if>
<c:if test="${bForm.containerMap.isOnlyOneCritreria}">
<td class="${stat.index%2 == 0 ? 'light' :''}" style="border-right: solid 2px; text-align:right">
${Bean.primaryCriterion}
<c:if test="${profBean.subProfitBeanList !=null}">
<c:forEach var="subProfitBean" items="${profBean.subProfitBeanList}">
<br>
${subProfitBean.primaryCriterion}
</c:forEach>
</c:if>
<c:forEach var="profBean" items="${bForm.containerMap.profitList}" varStatus="stat">
<tr>
<c:if test="${!bActionForm.containerMap.isOnlyOneCritreria}">
<c:if test="${Bean.isFirstRecordInGroup}">
<td class="${stat.index%2 == 0 ? 'light' :''}" style="border-right: solid 2px;border-bottom: solid 2px; " rowspan="${profBean.totalGroupNum}">
${profBean.primaryCriterion}
</td>
</c:if>
</c:if>
<c:if test="${bForm.containerMap.isOnlyOneCritreria}">
<td class="${stat.index%2 == 0 ? 'light' :''}" style="border-right: solid 2px; text-align:right">
${Bean.primaryCriterion}
<c:if test="${profBean.subProfitBeanList !=null}">
<c:forEach var="subProfitBean" items="${profBean.subProfitBeanList}">
<br>
${subProfitBean.primaryCriterion}
</c:forEach>
</c:if>
使用profBean访问遍历得到的每一个元素
使用stat.count得到当前索引(也就是你经常写的for循环中的i)
格式:
<c:forEach [var="变量名"] itemes="集合名"> varStatus="当前索引">
循环体
</c:forEach>
<tc
<c:if test="${!b....这又表示什么 (是否都是el表达式)
这里 stat在整个句子表示什么意思
查看( 53 ) / 评论( 0 ) / 评分( 0 / 0 )
简介山东001在线-山东小熊Y#kB0l7B:c(Z8R4i
JSP 标准模板库(JSTL)是SUN公司发布的一个针对JSP开发的新组件。JSTL允许你使用标签(tags)来进行JSP页面开发,而不是使用多数 JSP程序员已经习惯了的scrīptlet代码方式开发。JSTL几乎能够做到传统JSP scrīptlet代码能做的任何事情。你可能会疑惑,为什么我们需要另一种这样的HTML生成语言呢?
`7dnmI3}uO0
X9]'ou1c%e}7YR0STL 允许JSP程序员使用tags而不是JAVA代码来编程。为了展示为什么这个是更优越的,下面将给出示例。我们会检查一个非常简单的从1数到10的 JSP页面。我们将通过两种方法来检查,一种是基于JSP的scrīptlet,一种是JSTL。当这个计数器页面的例子是用JSP scrīptlet来编写时,JSP页面如下所示:山东001在线-山东小熊|B ^2KIVtNX;~m9bi0yVG rJ0<html>
+tp3i�F"|0<head>
j4G!i2mqb0<title>Count to 10 in JSP scrīptlet</title>山东001在线-山东小熊1YQ,U@V _ks1qr
</head>
T"d�w n9?6{5k&A.Y-y0<body>
3W(end M}0<%
:].Ms7_?2V&o0for(int i=1;i<=10;i++)山东001在线-山东小熊2c d&Wi/Zd8R
{%>
|#Aw5iE*G0lOd0<%=i%><br/>山东001在线-山东小熊4jS]G:a2h
<%山东001在线-山东小熊)unA*pO9Rs_^0e
}
x0u]~_�A;Umz:^0%>山东001在线-山东小熊1X%q'EB(W(Y1A'` U
</body>
/H[ { }$M3x4P0</html>
*e.Z$VrM^7@w@0山东001在线-山东小熊:z?G h/ag-if"R
正如你在上例中看到的看到的那样,使用scrīptlet代码产生的页面源代码会包含混合的HTML标签和JAVA语句。这种混合型的编程方式不是最佳的方式,其主要原因有以下几点。
]cyF7vh0山东001在线-山东小熊"wppphj I a
主要的原因是它的可读性。这个可读性主要依赖于人类和计算机。JSTL可以允许程序员查看一个只包含完整HTML和类似HTML的标签的页面。
c@*r9?i][0
{6c�L7h~1rrca0SP scrīptlet代码的可读性不适合人类。这种混合的scrīptlet和HTML代码对于计算机来说也很难读。尤其是针对那些HTML官方工具如 Dreamweaver和Microsoft FrontPage,所表现出来的不直观性更突出。目前,大多数HTML官方工具会以不可编辑块(non-editable blocks)的形式来隔离JSP scrīptlet代码。这种HTML官方工具通常是不能直接修改JSP scrīptlet代码的。
f3`#~#Ug0山东001在线-山东小熊g-z B"^LPe)_
下面这段代码展示这个计数器范例如何使用JSTL方式来编写。正如你所看到的,这个代码列表有不变性,仅仅一个标签被使用。HTML和JSTL标签混合起来产生了这个程序。山东001在线-山东小熊\4i)I`&U&N
山东001在线-山东小熊�v;g0?4C!j*P7C
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
s-P)vS6z:i0<html>
P HdS.P0<head>山东001在线-山东小熊}SD Id7[v%S
<title>Count to 10 Example (using JSTL)</title>山东001在线-山东小熊x.YU6[R9S"w:B/v
</head>山东001在线-山东小熊K5E i^)k w:~R
山东001在线-山东小熊4w8K9K2Cma
<body>
1l QGhB&}Yc6k'xL0<c:forEach var="i" begin="1" end="10" step="1">山东001在线-山东小熊e;f.T V+C"nOF8K"Y
<c:out value="${i}" />山东001在线-山东小熊_} r:U;rJm_ O
山东001在线-山东小熊"Os&hF Y
<br />山东001在线-山东小熊 d{1Y$S&mBG!q[
</c:forEach>山东001在线-山东小熊9fk.g;PN(W
</body>山东001在线-山东小熊UEw1e8p2VD6Y
</html>山东001在线-山东小熊ZEb9L:Jpea*Kb@&B^3c pN;d(r'Q0当你检查上面这个例子的代码时,你会看到,JSP页面只包含标签。上面的代码使用诸如<head>和<br>这样的HTML标签。这种标签用法不限制于HTML标签。这段代码也可以使用诸如<c:forEach>和<c:out>这样的JSTL标签。在本文中,将会介绍一些JSTL的基础。
e!?m*{/F1bD0
$w1SG"v}g4G0}8j0安装JSTL山东001在线-山东小熊4sT$_e@$x3i'S"J|
要使用JSTL,你必须安装有一个JSP1.2(或者更高版本)的容器。最普通的JSP容器是Apache Tomcat。你能够从tomcat/">http://jakarta.apache.org/tomcat/这里下载到。独立的Tomcat允许你使用常规的JSP scrīptlet代码。要使用JSTL,你必须在Tomcat中安装JSTL。JSTL的主要URL是 http://java.sun.com/products/jsp/jstl/。要使用JSTL,必须解压这个文件,然后将它安装到Tomcat的正确位置。山东001在线-山东小熊:K(hr N*z|+{[N;qV5uw;qD)@[0要在Tomcat中安装JSTL,有下面三个步骤:山东001在线-山东小熊 E8S)rph;E:X
山东001在线-山东小熊 Ku6lcd9\
拷贝JSTL JAR文件到Tomcat的lib目录中.山东001在线-山东小熊^h0n3P*o
山东001在线-山东小熊w#xL(@ y+i z#W;j
如果你使用的是Windows, 那么lib目录最可能的位置是C:\Program Files\Apache Tomcat 4.0\webapps\ROOT\WEB-INF\lib。你应该拷贝这些JAR包到你的Tomcat JAR目录。
j _^ X"a+Vg'd#zJ"Hx0山东001在线-山东小熊8ONQk3RkV-nhR
拷贝JSTL TLD文件到Tomcat的web-inf目录中
ge FX3Y$v|0
F7Vo3s.b0你检查JSTL发布文件时,你应该会注意到有8个文件是以TLD扩展名结尾的。所有这8个文件都应该复制到你的web-inf目录中。
@Ws-y)n�SRN0山东001在线-山东小熊C$dJQc;qZ
修改web.xml文件包含这些TLD文件。
:o q6f*F2kR~0山东001在线-山东小熊1Z3f1\OEvh+`
最后,你必须修改你的web.xml,添加8个标签库的表项(entry)。需要添加的表项如下所示:
9{'u jP[LZ0<taglib>
E O1b ?%y&{)`0<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>山东001在线-山东小熊Bk[\;PC)f
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
3r!i+z9Z[o0k!f0</taglib>
F%{3] p/G9sUB.XI0山东001在线-山东小熊P4C'S,I N@aIB
<taglib>
MH-TJ|%wX!}6K0<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
})]7{-xuYK0<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>山东001在线-山东小熊tbw*~g6j,t
</taglib>
GE~*r!tTC0
-p J(f?W Z.lF0<taglib>山东001在线-山东小熊4`(qW1~(V:K1_!Zq,J
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>山东001在线-山东小熊1ZKJk1K6U
<taglib-location>/WEB-INF/c.tld</taglib-location>
6fC,S K6j)rIV-q0</taglib>山东001在线-山东小熊/d!xin&}DGY
山东001在线-山东小熊Svi"`.^3DT
<taglib>
B!MHo{`a^N0<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>山东001在线-山东小熊(]P^"\[6a+[M1uk
<taglib-location>/WEB-INF/c-rt.tld</taglib-location>山东001在线-山东小熊`6v/~k_rNg4JJ
</taglib>
0r@*C$fI0S%Kk4Oxp0山东001在线-山东小熊OLi"E&J4Y}:Nyc
<taglib>
hdl%J%j9?3K0<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
p�p:D#IF8^.W;N0<taglib-location>/WEB-INF/sql.tld</taglib-location>
Ie#X d0wA{W(d]}0</taglib>山东001在线-山东小熊Pw8Xdq O
山东001在线-山东小熊+U.A6MK1f-M_
<taglib>山东001在线-山东小熊6Io`&YKt
<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>山东001在线-山东小熊(C,U3lp9_p
<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
{3G�J9]y'r1qY)f�YV:|0</taglib>
Xdk*w&@:cR0山东001在线-山东小熊cIu{4[5D:i
<taglib>
5x8m+y$E#p2a0<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>山东001在线-山东小熊W8q WHT"vl
<taglib-location>/WEB-INF/x.tld</taglib-location>山东001在线-山东小熊Oq2GR?/b]u2{
</taglib>山东001在线-山东小熊3}2Z|+g7R0S(e6uJs m#E'b9l9]1L r0<taglib>
u�KF"uG/v%jx0<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>山东001在线-山东小熊F1c9AC.@1azM`]
<taglib-location>/WEB-INF/x-rt.tld</taglib-location>山东001在线-山东小熊e:isk(x4ToQ
</taglib>
`5v.a9C9u6kF @%ou0
2wr f/d P+u#X/fn0完成上面这三步后,你现在可以准备测试你的JSTL安装了。可以通过创建一个包含JSTL的JSP页面来验证。一个最简单的范例程序就是上面的那个计数器程序。你应该将它放置在你的Webroot目录中(C:\Program Files\Apache Tomcat 5.0\webapps\ROOT)。一旦Tomcat启动后,你应该能够通过浏览 http://127.0.0.1:8080/count.jsp来查看这个页面。山东001在线-山东小熊;N?^}e1S2gEaNAf0如果你没有正确安装JSTL,那么可能不会出现错误信息。如果JSTL不能解释你的标签含义,那么它在Web浏览器上会直接跳过。然后Web浏览器将解释这些未知的HTML标签。多数浏览器仅仅只是忽略这些未知的HTML标签。
0L)rl|*r"\'nZR0山东001在线-山东小熊yE4r&t @U F
山东001在线-山东小熊$JsR&}.?A;UR_
JSTL标签库山东001在线-山东小熊a.SR5|z2Y6bp
JSTL通常被认为是一种单标签库。但JSTL实际上有4个标签库。这些标签库被概括为如下:山东001在线-山东小熊f~\q.L#}E
为了抑制JSP里写大量的JAVA代码,所以用JSTL标签来实现JAVA里逻辑调用.
JSTL为条件处理,迭代,国际化,数据库访问和可扩展标记语言XML处理提供支持.极大地简化了对JSP中应用数据的访问和操作.JSTL包括四个自定义标记库.常用标签库,XML,国际化和数据库标签.JSTL常用标签
<c:out>标签用于在JSP中显示数据
例:<c:out value=“${user.userName}”/><c:set>标签用于保存数据
例:<c:set target="${user.userName}" property=“userName" value="${user}"/>
将对象user.userName的userName属性值保存到变量user中<c:remove>标签用于删除数据
例:<c:remove var=“userName” scope=“session”/>
从session中删除userName.JSTL条件标签
<c:if>是流控制标签
例:<c:if test=“${userName}” >
Welcome !
</c:if>JSTL条件标签
<c:choose>这个标签不接受任何属性
<c:when>
<c:otherwise>
由于JSTL没有if (){…} else {…}的条件语句,所以这种形式的语句只能用<c:choose>、<c:when>和<c:otherwise>标签共同来完成了。
例:
<c:choose>
<c:when test=“${user.userName}”>aaa
</c:when>
<c:when test=“${}”>kkk
</c:when>
<c:otherwise>ddd
</c:otherwise>
</c:choose>JSTL循环控制标签
<c:forEach>标签提供了一个对元素集合进行迭代的简单方法,如果只要迭代集合中的部分元素,分别指定开始和结束值
例:
<c:forEach var=“userName” items=“${user}”>
<c:out value=“${userName}”/>
</c:forEach>JSTL URL标签
<c:param>用来传递参数给一个重定向或包含页面
例:<c:redirect url=“http://www.leeeee……” >
<c:param name=“” value=“”/>
</c:redirect><c:import>导入一个url的资源,也可以把参数传递到被导入的页面。
例:<c:import url=“http://www.leeeee……” />
<c:url>输出一个url地址.
例:<a href=“<c:url url=“wap.muzhizu.cn”/>”/>
<c:redirect>将请求地址重定向到另一个页面
例:<c:redirect url=“http://www.leeeee……”/>JSTL国际化输出标签
<fmt:timeZone>操作的作用域仅限于其标记体内容。在 <fmt:timeZone> 标记体中,由标记的 value 属性指定的时区覆盖了 JSP 环境中现有的任何其它时区设置。SQL标签
<sql:query>
楼上的楼上都已经有说过了