Jsp标准标签库 20111110

来源:互联网 发布:淘宝网注册步骤 编辑:程序博客网 时间:2024/06/07 17:29

JSTL概述

JSTL英文全称是“JSP Standard Tag Library”,即JSP标准标签库之意。
JSTL是由JCP(Java Commnunity Process)指定的标准规范,是一组形如html的标签,使得程序员即使不需要学习Java也可以编写动态Web页。自2002年中期发布后,它已成为JSP平台的一个标准组成部分。
JSTL提供了诸如循环、条件、数据库访问、XML处理、国际化等开发上的工具和流程。
目前最新的版本为1.2,是一个正在不断开发和完善的开放源代码的JSP标签库,它支持多种标签。

JSTL分成了5大类,如下表所示:

功能范围                                                            URI                                           前  缀
核心标签库(Core)                         http://java.sun.com/jsp/jstl/core                        c
国际化/格式化标签库(i18n)           http://java.sun.com/jsp/jstl/fmt                        fmt
数据库标签库(SQL)                      http://java.sun.com/jsp/jstl/sql                         sql
XML标签库(XML)                         http://java.sun.com/jsp/jstl/xml                          x
Functions标签库(Functions)         http://java.sun.com/jsp/jstl/functions                fn

Core标签库

核心标签库主要包括通用标签、条件标签、迭代标签和与URL相关的标签。
在使用Core标签库的JSP文件的开始部分,添加代码: <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
通用标签

<c:out>标签
用于将表达式的结果输出到当前的JspWriter对象中。其功能类似于JSP的表达式<%=  %>,或者EL表达式${}。
语法 <c:out value=“value” [default=“default value”] [escapeXml=“true|false”] /> <c:out value=“value”  [escapeXml=“true|false”] >   default value </c:out>
<c:set>标签
<c:set>标签用于设置JSP页面的各种域范围中的变量,或者设置java.util.Map对象或JavaBean对象的属性。
语法
<c:set value=“value” var=“name” [scope=“范围”]/>将value的值保存到名为name的变量中,同时name变量保存到选定的作用范围中。例如, <c:set value=“sunwk” name=“username” scope=“session”/>
<c:set var=“name” [scope=“范围”] >  value </c:set> 将标签体中的内容保存到名为name的变量中,同时name变量保存到选定的作用范围中。例如, <c:set var=“username” scope=“session”>     sunwk </c:set>
<c:set value=“value” target=“target” property=“propertyName” />将value的值保存到target对象的propertyName属性中。

<c:set target=“target” property=“propertyName”>  value </c:set> 将标签体的内容保存到target对象的propertyName属性中。

例:

<c:out value="${psw }" escapeXml="${user!=null }" >cccccccccccccc</c:out>

<c:remove>标签
<c:remove>标签用于移除JSP页面中指定域范围中的变量。
语法 <c:remove var=“name” [scope=“范围”]/>
<c:catch>标签
<c:catch>标签用于捕获嵌套在标签体内的内容抛出的异常对象,并将异常信息保存到变量中。
语法 <c:catch [var=“name”]>   body content </c:catch> 将可能发生异常的代码放到该标签中,如果发生异常,异常信息保存到name变量中。

例:

<c:set var="user" value="Tom" scope="page" />

<c:out value="${user }"></c:out>

  

<%

Map map = new HashMap();

request.setAttribute("map",map);  

%>

<c:set property="city" value="baoding" target="${map }"/>

<br/> 

<c:out value="${map.city }"></c:out>  

<br/>

<%

Person p = new Person();

request.setAttribute("person",p);

%> 

<c:set property="name" value="Susan" target="${person }" /> 

<c:out value="${person.name }" />

<%

session.setAttribute("date","2011");

%>

${date}

<c:remove var="date" scope="session"/>

<c:out value="${date }">date被删除了</c:out>

<c:catch var="myexception">

<%int i= 3/0; %>

</c:catch>

输出异常

<c:out value="${myexception }"></c:out>

<br/>

异常:

<c:out value="${myexception.message }" /><br/>

堆栈轨迹

<c:out value="${myexception.stackTrace }" /><br/>

条件标签

<c:if>标签
<c:if>标签用来做条件判断,功能类似于JSP中的<%if(boolean){}%>。
<c:choose>、<c:when>、<c:otherwise>标签
<c:choose>标签用于提供条件选择的上下文,它必须与<c:when>和<c:otherwise>标签一起使用。
<c:when>作为<c:choose>的子标签,<c:when>有一个test属性,该属性的值为布尔型,如果test的值为true,则执行<c:when>标签体的内容。
<c:otherwise>标签没有属性,它必须作为<c:choose>标签的最后分支出现。

例:

<c:if test="${date == null }" var="result" scope="page">

${result }表达式成立

</c:if>

迭代标签

<c:forEach>标签
<c:forEach>标签用于对包含了多个对象的集合进行迭代,重复执行它的标签体,或者重复迭代固定的次数。

注意:
items属性并不是一定要有的属性,但是当没有使用items属性时,就一定要使用begin和end属性。
varStatus:用来保存现有遍历计数相关的信息。例如,如果varStatus=“i”,那么会将相应信息放到名称为i的变量中,i变量有四个属性值,index、count、first和last。

<c:forEach items=“${names}” var=“name” varStatus=“i”>
 ${name}<br>
 index:${i.index} <br> count:${i.count} <br>
 first:${i.first} <br>  last:${i.last}<br>
</c:forEach>

例:

<c:forEach var="i" begin="1" end="9" varStatus="status">
   <tr class="${status.count%2==0?'odd':'even'}">
   <c:forEach var="j" begin="1" end="${i}" varStatus="status">
    <td>
    <c:out value="${j}*${i}=${i*j}"></c:out>
    </td>
    </c:forEach>
   </tr>
   </c:forEach>

<c:forTokens>标签
<c:forTokens>标签用来浏览一字符串中所有的成员,其成员是由定义符号(Delimiters)所分隔的。
<c:forTokens items=“a:b:c:d” delims=“:” var=“token”>
  <c:out value=“${token}” /> <br>
</c:forTokens>
例:

<c:forTokens items="abc efg,xy|333" delims=" ,y|" var="item">

<c:out value="${item }"/><br/>

</c:forTokens>

原创粉丝点击