http://www.iteye.com/topic/206730
JSP 标准标记库( Standard Tag Library , JSTL) 是一组以标准化格式实现许多通用的 Web 站点功能的定制标记。
?
这个东西我是不太喜欢用的,更喜欢用<%......%>,不过需要做很多异常处理,而且代码随便很多,还要做很多去html 符号的工作,于是研究了一下jstl.以下一些要点.
?
1 配置,我用的resin3+jdk6,好像不用配什么jar包了
2 使用,jsp里添加
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
?????? <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> ??
?
,这里主要讲"c"
1.<c:out>,相当于<%=XX%>,例如<c:out value="${a}"/>,
优先级是request>session>application,如果3个都有值,则显示request的"a"
? ? ? ? request==<%=request.getAttribute("a")%><br />
??????? session==<%=session.getAttribute("a")%><br />
??????? application==<%=application.getAttribute("a")%><br />??????
?
显示url?a=abc 里的"a"需要<c:out value="${param.a}" /> ,而不是上述写法
?
2.<c:set>
用于设置范围变量的值或者 javabean 对象的属性。
看个实际例子:
<c:set var=”username” value=”lisi” scope=”session”/>
这样就相当于设置了 session 。
?
3.<c:remove>
相对 <c:set> 其作用是移除范围变量。比如: <c:remove var=”nusername” scope=”session”/>
4.<c:catch>
用于捕获在其中嵌套的操作所抛出的异常对象,并将异常信息保存到变量中。
我们将有可能抛出异常的代码放置到开始标签 :<c:catch> 和结束标签 :</c:catch> 之间。如果其中代码出现异常,异常对象将被捕获,保存在 var 声明的变量中,该变量总是有 page 范围。如果没有发生异常,而 var 所标识的范围变量将被移除。
如果没有指定 var 属性,异常只是简单的被捕获,异常信息并不会被保存。
Eg :
<c:catch var=”exception”>
<%
??????? int i = 5;
??????? int j = 0;
??????? int k=i/j;
%>
</c:catch>
<c:out value=”${exception}” /><br>
<c:out value=”${exception.massage}”/>
后一句相当于: exception.getMessage()
条件标签包括 <c:if><c:choose><c:when><c:otherwise>
1.<c:if>
用于实现 java 中的 if 语句功能。
?
<c:if test=”${user.visitCount==1}”>
??????? This is your first visit .
</c:if>
?
若为 true ,会打印中间部分。也可以声明 var ,方便下一步判断。
<c:if test=”${param.name==’admin’}” value=”result”/>
<c:out value=”${result}” />
2.<c:choose>
<c:choose> 和 <c:when> 、 <c:otherwise> 一起实现互斥条件执行,类似于 java 中的 if else.
<c:choose> 一般作为 <c:when> 、 <c:otherwise> 的父标签。
eg :
<c:choose>
??????? <c:when test="${row.v_money<10000}">
?????????????? 初学下海
??????? </c:when>
??????? <c:when test="${row.v_money>=10000&&row.v_money<20000}">
?????????????? 身手小试
??????? </c:when>
??????? <c:otherwise>
?????????????? 商业能手
??????? </c:otherwise>
</c:choose>
迭代标签
迭代标签有
<c:forEach>
和
</c:forEach>
//
遍历记录集
<c:forEach items="${finalResult.rows}" var="row">????????
<tr class="<%=tdClass[(rank+1)%2]%>">
<td align="center"><span><%=rank%> </span></td>
<td align="center"><span ><c:out value="${row.player_name}"/></span> </td>
<td align="center"><span >
¥
<c:out value="${row.money}"/></span></td>
</tr>
<%rank++;%>??????
</c:forEach>??
? 也可以设定固定次数。
<c:forEach var =”i” begin=”100 “ end= “110”>
???????
${i}
</c:forEach>
如果再加个
step=
“
2
”那么每次增长为
2
。