zoukankan      html  css  js  c++  java
  • JSTL

    一.简介

    JSTL:JSP 标准标签函数库

    JSTL所提供的标签函数库主要分为五大类:
    (1)核心标签库 (Core tag library)                                             c               http://java.sun.com/jsp/jstl/core          eg.<c:out>
    (2)I18N 格式标签库 (I18N-capable formatting tag library)         fmt             http://java.sun.com/jsp/jstl/fmt           eg.<fmt:formatDate>
    (3)SQL 标签库 (SQL tag library)                                            sql              http://java.sun.com/jsp/jstl/sql            eg.<sql:query>
    (4)XML 标签库 (XML tag library)                                            xml             http://java.sun.com/jsp/jstl/xml           eg.<x:forBach>
    (5)函数标签库 (Functions tag library)                                      fn               http://java.sun.com/jsp/jstl/functions    定义了一些操作字符串的函数

    二.使用JSTL

      (1)将 jstl.jar、standard.jar 复制到Tomcat的WEB-INFlib

      (2)在JSP 网页中声明

          eg.< %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

          注:http://java.sun.com/jsp/jstl/core是JSTL1.1的默认uri,若想自定义taglib的uri 时,那就必须在web.xml 中加入设定值:

    <web-app>
    ... ...
      <jsp-config>
        <taglib>
          <taglib-uri>http://www.milan.com.tw/jstl/core</taglib-uri>
          <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
        </taglib>
      </jsp-config>
    ... ...
    </web-app>

    三.核心标签库介绍

    常用标签按功能分类如下:

        (1)表达式操作

            a.<c:out>  显示数据

               语法:<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] />

                       或<c:out value="value" [escapeXml="{true|false}"]>default value</c:out>

               分析:value:显示的数据

                       default:value=null时,显示该默认值,若不设置,当value=null时,显示空字符串

                       escapeXml:是否转换特殊字符,<c:out>默认会将 <、>、’、” 和 & 转换为 &lt;、&gt等,可以设置false,不转换

                                        所以<c:out value="<p>测试</p>"/>若不设置escapeXml=false,则输出 <p>测试</p>

          b.<c:set>  将变量储存至JSP 范围中或是JavaBean 的属性中

                语法:<c:set value="value" var="varName" [scope="{ page|request|session|application }"]/>

                        或<c:set var="varName" [scope="{ page|request|session|application }"]>内容</c:set>

                          表示将value存到scope指定范围的varName变量中,scope默认为page

                          注:若value=null,若scope确定,则PageContext.removeAttribute(varName, scope),若scope不确定,PageContext.removeAttribute(varName)

                      < c:set value="value" target="target" property="propertyName" />

                     或<c:set target="target" property="propertyName">内容</c:set>

                         表示将value 的值储存至 target 对象的propertyName属性中

                       注:target为map或javabean,否则抛异常,target=null也会抛异常

                            value=null时,若target=map,则target.remove(propertyName);若target=javabean则target.propertyName=null

            c.<c:remove>移除变量

                  语法:<c:remove var="varName" [scope="{ page|request|session|application }"] />

                          若不设定scope,则<c:remove>将会从Page、Request、Session 及Application 中顺序寻找变量,若能找到时,则将它移除掉,反之则不做任何的事情

           d.<c:catch>处理产生错误的异常状况,并且将错误信息储存起来

                 语法:<c:catch [var="varName"] >欲抓取错误的部分</c:catch>

                 注:当错误发生在<c:catch>和</c:catch>之间时,则只有<c:catch>和</c:catch>之间的程序会被中止忽略,但整个网页不会被中止

      (2)流程控制

           a.<c:if>

                语法:       <c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]/>

                             或<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>内容</c:if>

                说明:test:表达式值为true时执行,false不执行

                         var:存储test结果true|false

          b.<c:choose>、<c:when> 和 <c:otherwise>

             语法:

          <c:choose>

              <c:when test="testCondition" >            

                 内容          

              </c:when>

              ... ...

              <c:otherwise>           

                 内容         

             </c:otherwise>       

          </c:choose>

             说明:当test=true时,执行<c:when>中内容,若同一个<c:choose>中所有<c:when>的test都为false才执行<c:otherwise>中内容

             注意:<c:when> 和 <c:otherwise>一定被<c:choose>包围;

                     在同一个 <c:choose> 中时,<c:when>必须在<c:otherwise>之前,<c:otherwise> 必须为最后一个标签;

                     在同一个<c:choose>下,当有好几个<c:when>都符合条件时,只能有一个<c:when>成立

       (3)迭代操作

          a.<c:forEach>重复执行本体内容,遍历

             语法: <!-- 遍历array,list,map等 -->

             <c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>       

                本体内容    

            < /c:forEach> 

           <!-- 遍历指定次数-->

            <c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>   

                本体内容

            </c:forEach>

            说明:var:存放到指定变量

                  varStatus:存放现在指到的相关成员信息,它有index(现在指到的成员的索引)、count(指到的成员总数)、

                                   first(是否为第一个) 和last(是否为最后一个)四个属性

                  step:迭代间隔数

                  items:items被迭代的集合对象,若不设置items属性,那么begin和end一定要有

       b.<c:forTokens>  浏览一字符串中所有的成员,其成员是由定义符号(delimiters)所分隔

             语法:

                <c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"]         

            [begin="begin"] [end="end"] [step="step"]>        

           本体内容     

        </c:forTokens>

      (4)URL 操作

          a.<c:import> 把其他静态或动态文件包含至本身JSP 网页

              语法:

                   <c:import url="url" [context="context"] [var="varName"] [scope="{page|request|session|application}"] [charEncoding="charEncoding"]>

             本体内容

         </c:import>

         或<c:import url="url" [context="context"] varReader="varReaderName" [charEncoding="charEncoding"]> 本体内容 </c:import>

             说明:var:储存被包含的文件的内容(以String类型存入)

                      scope:var变量的JSP 范围

                      varReader:储存被包含的文件的内容(以Reader类型存入)

                      content:引入同一服务器下不同站点的jsp时,要设置该值,为"/站点名"

            注意:url=null,抛异常,url="绝对地址|相对地址"

                        绝对地址:eg <c:import url="http://www.baidu.com"/>

                        相对地址:eg <c:import url="hello.jsp"/>, 表示引入文件在同一个webapps的文件夹下的hello.jsp,若用/表示站点根目录下的hello.jsp

                    <c:import>的本体内容中使用<c:param name="paramName" value="paramValue"/>传参给被包含文件

            与<jsp:include page=""/>的区别:<jsp:include>只能包含和自己同一个web application下的文件,而<c:import>可包含不同web application下的文件

                                                          和其他网站的文件

        

       b.<c:url> 生成url

             语法: 

           <c:url value="value" [context="context"] [var="varName"] [scope="{page|request|session|application}"] />

                     或<c:url value="value" [context="context"] [var="varName"] [scope="{page|request|session|application}"] >

               <c:param> 标签传参

           </c:url>

            说明:content:同一服务器下不同站点时,要设置该值,为"/站点名"

       c.<c:redirect> 将客户端的请求从一个JSP 网页重定向到指定url

           语法:<c:redirect url="url" [context="context"] />

         或 <c:redirect url="url" [context="context"] > <c:param> </c:redirect >

  • 相关阅读:
    预处理命令
    函数
    结构体
    字符数组
    数组
    文件
    用 typedef 定义类型
    枚举类型
    联合
    位运算
  • 原文地址:https://www.cnblogs.com/javamilan/p/4262046.html
Copyright © 2011-2022 走看看