zoukankan      html  css  js  c++  java
  • 阅读笔记—标签库

    JSP标准标签库

    JSTL核心标签库

    JSTL专为Web开发定制,可用于页面中代码的基本输入/输出、流程控制、XML文件处理及SQL处理等。JSTL由Apache的Jakarta小组开发,是开源的标准标签库。

    安装JSTL

    在使用JSTL前,首先应该获得JSTL包并安装到Web应用中。可以到Jakarta网站下载,地址为http://tomcat.apache.org/taglibs/standard/。将下载得到的taglibs-standard-impl-*.*.*.jar复制到web应用的WEB-INF/lib目录中即可。

    在jsp页面中使用JSTL,必须使用taglib指令来引用标签库。指令格式为:<%@taglib prefix=”标签库使用的前缀” uri=”标签库的URI”%>

    1.一般标签

    在JSTL中,一般标签主要用在输出、设置变量值和错误处理等,这些是JSTL中使用最多的标签

    1).<c:out value=”” escapeXml=”true|false” default=”defValue”> 计算一个表达式的值,然后把计算的结果输出到当前的JspWriter对象。调用的结果和Servlet中out.println()语句效果一样,其中value是将要输出的表达式;escapeXml表示将<、> 、&、 ‘、 “等特殊的符号转换成实体代码;default表示如果value的值为空,那么将输出这里的默认值。注意<c:out>可以有Body,这里的Body可以是HTML或者是JSP。例如:<c:out value=”${user.name}”>,(如果要使用表达式,那么这里的JSTL的版本必须是1.1以上)
     
    2).<c:set var=”” value=”” scope=”” target=”” property=””> 这个标签用于在某个范围中使用某个名字设定特定的值,或者设置某个已经存在的JavaBean对象的属性,这其实就相当于<% request.setAttribute(“name”, “value”); %>。其中var表示这个属性的名字,它相当于在标签中定义了一个变量,并且这个变量只能在标签中使用;value表示将要计算的表达式;scope表示属性的有效范围;target表示将要设置属性的对象,它必须是JavaBeans或java.util.Map对象;property表示待设置的Target对象中的属性名字,比如在JavaBean中有个name属性,提供了setUserId方法,那么这里的property就是userId。例如:a. <c:set var=”flag” value=”yes” scope=”request”/> b. <c:set var=”price” scope=”session”>body content</c:set> c. <c:set value=”liky” target=”user” property=”name”/> d. <c:set target=”user” property=”pwd” >body content</c:set>
     
    3).<c:remove var=”flag” scope=”page”> 这个标签用于删除某个变量或者属性。其中scope表示这个参数所在的范围,如果不指定范围,那么将从page,request,session,application中依次搜索这个参数,如果还是没有则不做任何动作;var表示待删除的参数的名字,这个名字可以使在<c:set/>定义,也可以是在someScope.setAttribute(“varName”, “varValue”)中定义,相当于pageContext.removeAttribute(varName, scope);
     
    4).<c:catch var=””> 这个标签用于捕获由嵌套在它里面的标签抛出的异常对象(java.lang.Throwable),相当于<% try {} catch () {} %>。其中var表示标识这个异常的名字,它是一个标签变量。例如:<c:catch var=”error”> <% Integer.parse(“abcd”)%> </c:catch>

    2.条件标签
    在JSTL中,条件标签能完成条件判断和多个条件选择等功能。
    1).<c:if test=”” var=”” scope=””> 用于进行条件判断,如果它的test属性true,那么就计算它的body。其中test表达式的条件,相当于if(test) 中的条件;var表示这个语句的名字;scope表示变量的作用范围。这个标签相当于<% if (test) {body} %>;例如:<c:if test=”8>5” var=”tif” scope=”page”>body</c:if>
    2).<c:choose>body</c:choose> 这个标签用于条件选择,它和<c:when>以及<c:otherwise>一起使用。它的条件选择是排斥的,相当于:<% swith i {case 0: break; case 1: break;},也可以完成<% if() else if {} else {} %>这样的多重条件判断语句的功能。注意这里body只能由0个或多个<c:when>子标签,<c:otherwise>标签之前出现;0个或者多个<c:otherwise>子标签。
    3).<c:otherwise > 这个标签表示<c:choose>的最后选择。相当于<% swith () {case: break; default: …}中default语句;或者是<% if() else if {} else {} %>这样的语句中的最后的else语句。例如:<c:choose><c:when test=”${count > 10}”><c:set var=”num” value=”10”/></c:when><c:otherwise><c:set var=”num” value=”20”></c:otherwise></c:choose>
     
    3.迭代标签
    在JSTL中,迭代标签支持循环提取一个集合中的数据。
    1).<c:forEach var=”” items=”” varStatus=”” begin=”” end=”” step=””></c:forEach> 这个标签是我们经常用的用于迭代一个集合的标签,功能十分强大。其中var表示迭代的参数名字,它是标签参数,在其他标签中通过它来引用这个标签中的内容;items表示要迭代的集合,注意这里的集合是指Collection、Arrays、Iterator、Map、String、和Enumeration等这样的表示集合的类;varStatus表示迭代的状态,可以访问迭代自身的信息;begin表示如果指定了items,那么就从items的index[begin]开始迭代,并且items的第一个元素的索引是0;如果没有指定items,那么就从指定的index开始迭代;end表示如果指定了items,那么就在items的index[end]结束迭代;如果没有指定items,那么就在指定的index结束迭代;step表示迭代的步长值,默认为1。相当于<% for(int i=0; i<length; i++) {body} %>语句中的for循环的功能,只是这里更容易使用。例如:<c:forEach var=”user” items=”${users}” > <c:out value=”${user.name}”/><br><c:out value=”${user.pwd}”/><br></c:forEach>
    2).<c:forTokens var=”” items=”” varStatus=”” delims=”” begin=”” end=”” step=””></c:forTokens> 这个标签专门用于处理TokenString的迭代,可以在delims中指定一个或多个分隔符(delimiters),其他和<c:forEach>是相似的。例如:<c:set var=”countries” value=”中国;美国;加拿大;英国;日本”<c:forTokens var=”nation” delims=”;” items=”${countries}”><c:out value=”${nation}”/><br></c:forTokens>
     
    4.URL标签
    URL标签是指页面导航、页面重定向、资源获得及参数传递等方面的标签。
    1).<c:import url=”” context=”” var=”” scope=”” charEncoding=”” varReader=””> 这个标签可以导入一个资源相当于<jsp:include page=””/>。当然也可以将参数传递过去。
        <c:import url="login.jsp">
                      <c:param name="name">liky</c:param>
              <c:param name="pass">redhat</c:param>
    </c:import>
    其中url待导入资源的url,可以是相对路径或者是绝对路径,并且可以导入其他主机上的资源;context表示当使用相对路径访问外部context资源时,context指定了这个资源的名字;var为参数的名字;scope为var参数的作用范围;charEncoding输入资源的字符编码;varReader这个参数的类型为Reader,用于读取资源
    <c:import url="source.txt" charEncoding="ISO8859-1" varReader="reader">
           <c:out value="${reader}"/>
    </c:import>
     
    2).<c:redirect url=”” context=””> 这个标签是用于重定向到另外一个资源。其中url表示待定向资源的URL,相对路径或者绝对路径;context当使用相对路径访问外部context资源时,context制定了这个资源的名字。相当于<% request.sendRedirect(“next.jsp”);%>或者是Servlet中的RequestDispatcher.forward()语句的功能。例如:
    <c:redirect url="login.jsp">
           <c:param name="name">liky</c:param>
           <c:param name="pass" value=”redhat”/>
    </c:redirect>
     
    3).<c:url value=”” context=”” var=”” scope=””> 这个标签用于构造URL,主要是重写URL地址。其中value表示URL的值;context表示当使用相对路径访问外部context资源时,context指定了这个资源的名字;var表示标识这个URL的变量;scope表示这个变量作用范围。例如:<c:url var=”footer” value=”footer.jsp” scope=”page”>
     
    4).<c:param name=”” value=””> 这个标签用于在<c:import>、<c:url>、<c:redirect>中添加请求的参数。它和一般的参数标签没有什么区别。其中name表示参数的名字;value参数的值。要注意的是参数的值既可以用value指出,也可以在标签体中指出。例如:同上。
     

  • 相关阅读:
    24-反转链表
    23-链表中环的入口节点
    22-链表中倒数第k个节点
    21-调整数组顺序使奇数位于偶数前面
    18-删除链表的节点
    17-打印从1到最大的n位数
    16-数值的整数次方
    15-二进制中1的个数
    14-剪绳子
    13-机器人的运动范围
  • 原文地址:https://www.cnblogs.com/maosonglin/p/6390941.html
Copyright © 2011-2022 走看看