当前位置: 代码迷 >> JavaScript >> JSTL 学习札记1
  详细解决方案

JSTL 学习札记1

热度:186   发布时间:2012-12-27 10:17:10.0
JSTL 学习笔记1

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