• jstl c tag (2)


    9. <c:forEach>
    库 :Core(核心库)

    URI : http://java.sun.com/jsp/jstl/core

    前缀 : c  

    描述 : <c:forEach>动作将其体反复计算固定次数,或者针对一个集合中的每个元素分别计算一次体。当前元素(如果未指定集合则为当前索引)和迭代状态可以通过嵌套变量提供给体中的动作元素。  
    此动作接受属性表中所列的类型集合。当前元素的类型即为底层集合的类型,仅有两个例外。对于一个基本类型的数组,当前元素将作为相应包装类(Integer、Float等等)的一个实例提供。对于一个java.util.Map,当前元素则作为一个java.util.Map.Entry提供。

    语法 :
    语法1:基于集合元素进行迭代   
    <c:forEach items="collection" [var="var"] [varStatus="varStatus"]  
    [begin="startIndex"] [end="stopIndex"] [step="increment"]>  
    JSP elements  
    </c:forEach>  
    语法2:迭代固定次数  
    <c:forEach [var="var"] [varStatus="varStatus"]  
    begin="startIndex" end="stopIndex" [step="increment"]>  
    JSP elements  
    </c:forEach>  












    属性 :

    属性名
     描述
     类型
     是否接受动态值
     是否支持 EL
     是否
    必须
     默认值
     说明
     
    begin  
     开始位置
     int  
     Y
     Y
     否
     0
     结合集合使用时的开始索引,从0计起。对于集合来说默认为0  
     
    end  
     结束位置
     int  
     Y
     Y
     否
     最后一个成员
     结合集合使用时的结束索引(元素引要小于等于此结束索引),从0计起。默认为集合的最后一个元素。如果end小于begin,则根本不计算体集合,迭代即要针对此集合进行。
     
    items  
     被迭代的集合对象
     Collection,  
    Iterator, Enumeration,  
    Map,  
    数组
     Y
     Y
     否
     无

     集合,迭代即要针对此集合进行。
     
    step  
     步长
     int  
     Y
     Y
     
     1
     每次迭代时索引的递增值。默认为1。
     
    var
     当前项目
     String  
     N
     N
     否
     无
     保存当前元素的嵌套变量的名字。
     
    varStatus  
     循环状态
     String  
     N
     N
     否
     无
     保存LoopTagStatus对象的嵌套变量的名字。
     


    Null 和 错误处理
    .假若items为null时,则表示为一空的集合对象
    .假若begin大于或等于items时,则迭代不运算
    注意:
    varName的范围只存在<c:forEach>的本体中,如果超出了本题,则不能取得varName的值。如:
    <c:forEach items="${atts}" var="item">
    </c:forEach>
    ${item}</br>
    ${item}则不会显示item的内容。<c:forEach>除了支持数组之外,还有标准的J2SE的结合类型,例如:
    ArrayList,List,LinkedList,Vector,Stack和Set等等;另外包括java.util.Map类的对象,例如:
    HashMap,Hashtable,Properties,Provider和Attributes。
    另外<c:forEach>还提供了varStatus属性,主要用来存放现在指到成员的相关信息。例如:我们写成
    varStatus="s",那么就会把信息存放到名称为s的属性当中。varStatus属性还提供另外四个属性:index,
    count,fist和last,它们个自的意义如下:

    属性                   类型                                  意义
      index                  number                    现在指到成员的索引
      count                  number                    总共指到成员的总和
      first                   boolean                    现在指到成员是否为第一个
      last                    boolean                   现在指到成员是否为最后一个

     


    实例 :
    ----------------------------------------------------------------------------------------------------------------------------------------
    Example1
    < %@page  contentType="text/html;charset=gb2312"%>
    < %@taglib  prefix="c" uri=" http://java.sun.com/jsp/jstl/core"% >
    <%
     String atts[] = new String[5];
     atts[0]="hello";
     atts[1]="this";
     atts[2]="is";
     atts[3]="a";
     atts[4]="girl";
     request.setAttritue("atts",atts);
    %>
    <c:forEach items="${atts}" var="item" varStatus="s">
    <h2><c:out value="${item}"/>的四种属性></h2>
     index: ${s.index}</br>
     count: ${s.count}</br>
     first: ${s.first}</br>
     last: ${s.last}</br>  
    </c:forEach>
    ----------------------------------------------------------------------------------------------------------------------------------------
    Example2
    综合实例
    < select >         
       < c:forEach  items = " ${model.options} "   var = "forum" >
          < c:choose >
             < c:when  test = " ${forum.id == model.forumId} " >
               < option  value = " ${forum.id} "   elected > ${forum.name} </ option >
              </ c:when >
           < c:otherwise >
              < option  value = " ${forum.id} " > ${forum.name} </ option >
           </ c:otherwise >
         </ c:choose >
       </ c:forEach >   
    </ select >
     


    Example3
    奇偶行样式
    <c:forEach items="${model.page.list}" var="observer" varStatus="loop">  
      < tr class="row$(loop.count%2)">
        <td>迭代observer</td>
        <td>迭代observer</td>
        ...
      </tr>
    </c:forEach>
     


    Example4
    分页条1
    < c:set  var = "page"  value = " ${model.page} " ></ c:set >
    < table  width = "800"  align = "center"  cellpadding = "0"  cellspacing = "0" >   
       < tr  class = "even" >
         < td  height = "20"  align = "center"  colspan = "3"  valign = "top" >                  
           < a  href = "javascript:page(1)"  class = "gr_pages" > 首页 </ a >     
        < c:if  test = " ${page.currentPage > 1} " >
          < a  href = " javascript:page( < c:out   value = " ${page.currentPage -1 } "   /> ) "   class = "gr_pages" > 上页 </ a >
        </ c:if >                    
        < c:if  test = " ${page.currentPage < page.totalPage} " >
        < a    href = " javascript:page( < c:out   value = " ${page.currentPage +1 } "   /> ) "   class = "gr_pages" > 下页 </ a >
        </ c:if >   
        < a  href = " javascript:page( < c:out   value = " ${page.totalPage} "   default = "1"   /> ) "   class = "gr_pages" > 末页 </ a >
        当前第 < c:out  value = " ${page.currentPage} "   /> / < c:out  value = " ${page.totalPage} "   /> 页      
         </ td >
       </ tr >
    </ table >
     


    Example5
    分页条2
    < div  align = "center" >< span  class = "all_font12" >   < a
          href = " jsp/vote/voteAreaService.do?method=listVote¤tPage=1&subareaCode= ${param.subareaCode} "   class = "gr_pages" >  首页  </ a >     < c:if
          test = " ${page.currentPage > 1 } " >
          < a
            href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage - 1} &subareaCode= ${param.subareaCode} "
            class = "gr_pages" >  前页  </ a >   
             </ c:if >   < a
          href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage} &subareaCode= ${param.subareaCode} " >
          < c:out  value = " ${page.currentPage} "   /></ a >     
          < c:if
          test = " ${page.currentPage + 1 <= page.totalPage} " >
          < a
            href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage + 1} &subareaCode= ${param.subareaCode} " >< c:out
            value = " ${page.currentPage + 1} "   /></ a >   
             </ c:if >   < c:if  test = " ${page.currentPage + 2 <= page.totalPage} " >
          < a
            href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage + 2} &subareaCode= ${param.subareaCode} " >< c:out
            value = " ${page.currentPage + 2} "   /></ a >   
             </ c:if >   < c:if  test = " ${page.currentPage + 3 <= page.totalPage} " >
          < a
            href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage + 3} &subareaCode= ${param.subareaCode} " >< c:out
            value = " ${page.currentPage + 3} "   /></ a >   
             </ c:if >   < c:if  test = " ${page.currentPage <page.totalPage} " >
          < a
            href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.currentPage + 1} &subareaCode= ${param.subareaCode} "
            class = "gr_pages" > 后页 </ a >   
             </ c:if >   < a
          href = " jsp/vote/voteAreaService.do?method=listVote¤tPage= ${page.totalPage} &subareaCode= ${param.subareaCode} "
          class = "gr_pages" > 末页 </ a >   < a > 当前第 < c:out
          value = " ${page.currentPage} "   /> / < c:out
          value = " ${page.totalPage} "   /> 页 </ a ></ span ></ div >
     


    Example6
    综合实例
    <%@  page  import="java.util.Map"  %>  
    <%@  page  import="java.util.HashMap"  %>  
    <%@  taglib  prefix="c"  uri="http://java.sun.com/jsp/jstl/core"  %>  

    <%  
      Map  map  =  new  HashMap();  
      map.put("a",  "12345");  
      map.put("b",  "abcde");  
      out.println(map.get("a"));  
      request.setAttribute("map",map);  
    %>  
    <!--  完全迭代  -->
    <c:forEach  items="${map}"  var="mymap"  >  
        <c:out  value="${mymap.key}"  />  
        <c:out  value="${mymap.value}"  />  
    </c:forEach>  
    <!-- 根据map的key来找到特定的值 -->
    <c:forEach    items="${map}"    var="mymap">   
          <c:if    test="${mymap.key=='a'}">   
              <c:out    value="${mymap.value}"/>   
          </c:if>   
    </c:forEach>      

     






























    10. <c:forTokens>
    库 :Core(核心库)

    URI : http://java.sun.com/jsp/jstl/core

    前缀 : c  

    描述 : 标签可以根据某个分隔符分隔指定字符串,相当于 java.util.StringTokenizer  类。

    语法 :
    <c:forTokens items="stringFoTokens" delims="delimmmmiters" [var="varName"]
                [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
     ...body内容....
    </c:forTokens>

    属性 :

    属性名
     描述
     类型
     是否接受动态值
     是否支持 EL
     是否
    必须
     默认值
     说明
     
    var
     变量名
     String  
     false
     Y
     否
     无
     用来存放现在指到的成员
     
    items
     被迭代的字符串
     String  
     true
     Y
     是
     无
     被迭代的字符串

     
    delims
     分隔符
     String  
     true
     N
     是
     无
     定义用来分割字符串的字符
     
    varStatus
     循环状态变量
     String  
     false
     N

     否

     无
     用来存放现在指到的相关成员信息
     
    begin
     开始条件
     int
     true
     Y
     否
     0
     开始的位置
     
    end

     结束条件
     int
     true
     Y
     否
     最后一个成员

     结束的位置
     
    step
     步长
     int
     true
     Y
     否
     1

     每次迭代步长
     


    限制:
    .假若有begin属性时,begin必须大于等于0
    .假若有end属性时,必须大于begin
    .假若有step属性时,step必须大于等于1
    Null 和 错误处理
    .假如itmes为null时,则表示为有空的集合对象
    .假若begin大于等于items的大小时,则迭代不运算

    实例 :

    <c:forToken items="A,B,C,D,E,F,G" delims="," var="item>
    ${item}
    </c:forToken>
    items属性也可以用EL,例如:
    <%
     String phonenumber="123-456-7899";
     request.setAttribute("userPhone",phonenumber);
    %>
    <c:forTokens items="${userPhone}" delims="-" var="item">
    ${item}
    </c:forTokens>

    11. <c:import>
    库 :Core(核心库)

    URI : http://java.sun.com/jsp/jstl/core

    前缀 : c  

    描述 : 标签允许包含另一个 JSP  页面到本页面来。jsp有两种内置机制可以将来自不同 URL 的内容合并到一个 JSP 页面:include 伪指令和 <jsp:include> 操作。不过,不管是哪种机制,要包含的内容都必须属于与页面本身相同的 Web 应用程序(或 servlet 上下文)。两个标记之间的主要区别在于: include 伪指令在页面编译期间合并被包含的内容,而 <jsp:include> 操作却在请求处理 JSP 页面时进行。  
    core 库的 <c:import>和 <jsp:include> 一样, <c:import> 也是一种请求时操作,它的基本任务就是将其它一些 Web 资源的内容插入 JSP 页面中。 通过 url 属性指定将要导入内容的 URL,这个属性是 <c:import> 的唯一一个必选属性。这里允许使用相对 URL,并且根据当前页面的 URL 来解析这个相对 URL。但是,如果 url 属性的值以斜杠开始,那么它就被解释成本地 JSP 容器内的绝对 URL。如果没有为 context 属性指定值,那么就认为这样的绝对 URL 引用当前 servlet 上下文内的资源。如果通过 context 属性显式地指定了上下文,那么就根据指定的 servlet 上下文解析绝对(本地)URL。 但 <c:import> 操作并不仅仅限于访问本地内容。也可以将包含协议和主机名的完整 URI 指定为 url 属性的值。实际上,协议甚至不仅局限于 HTTP。 <c:import> 的 url 属性值可以使用 java.net.URL 类所支持的任何协议。

    语法 :
    语法1:资源的内容使用String对象向外暴露  
    <c:import url="url" [context="context"]  
    [var="varName"] [scope="{page|request|session|application}"] [charEncoding="charEncoding"]>  
    内容  
    </c:import>  
    语法2:资源的内容使用Reader对象向外暴露。  
    <c:import url="url" [context="context"]  
    varReader="varReaderName" [charEncoding="charEncoding"]>  
    内容  
    </c:import>  

    属性 :
    属性名
     描述
     类型
     是否接受动态值
     是否支持 EL
     是否
    必须
     默认值
     说明
     
    url
     统一资源定位器
     String
     true
     Y
     是
     无
     待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源  
     
    context  
     上下文
     String
     true
     Y
     否
     无
     当使用相对路径访问外部context资源时,context指定了这个资源的名字。
     
    var   
     变量
     String
     false
     N
     否
     无
     参数的名字。
     
    scope  
     范围
     String
     false
     N
     否
     page
     var参数的作用范围。
     
    cahrEncoding
     字符编码
     String
     true
     Y  
     否
     无
     输入资源的字符编码。
     
    varReader
     资源 阅读器
     String
     false
     N
     否
     无
      这个参数的类型是Reader,用于读取资源。
     


    说明  
    <c:import>中必须要有 url 属性,它是用来设定被包含网页的地址。它可以为绝对地址或是相对地址.  
    <c:import>也支持FTP协议,假设现在有一个 FTP站台,地址为 ftp.javaworld.com.tw,它里面有一个文件data.txt,那么可以写成如下方式将其内容显示出来:  
    <c:import url="ftp://ftp.cse.yzu.edu.tw/data.txt" />  
    另外,可以在<c:import>的本体内容中使用<c:param>,它的功用主要是:可以将参数传递给被包含的文件,它有两个属性name和value.如:  
    <c:import url="http://java.sun.com" >  
    <c:param name="test" value="1234" />  
    </c:import>  
    这样的做法等于是包含一个文件,并且所指定的网址会变成如下:  
    http://java.sun.com?test=1234  

    实例 :
    ----------------------------------------------------------------------------------------------------------------------------------------
    Example1
    <c:catch var="exception">
      <c:import url="ftp://ftp.example.com/package/README"/>
    </c:catch>
    <c:if test="${not empty exception}">
      Sorry, the remote content is not currently available.
    </c:if>
    <c:import> 操作用来包含通过 FTP 协议访问的文档内容。此外,还使用了 <c:catch> 操作,以便在本地处理 FTP 文件传送期间可能发生的任何错误。错误处理是这样实现的:使用 <c:catch> 的 var 属性为异常指定一个限定了作用域的变量,然后使用 <c:if> 检查其值。如果产生了异常,那么就会对那个限定了作用域的变量进行赋值:如清单 18 中的 EL 表达式所显示的那样,该变量的值将 不会为空。由于 FTP 文档的检索将会失败,因此会显示有关这种情况的错误消息。<c:import> 操作的最后两个(可选的)属性是 var 和 scope 。 var 属性会导致从指定 URL 获取的内容(作为 String 值)被存储在一个限定了作用域的变量中,而不是包含在当前 JSP 页面中。 scope 属性控制该变量的作用域,缺省情况下是页面作用域。如同我们在今后的文章中将要看到的那样,JSTL xml 库中的标记利用了 <c:import> 这种能力,即将整个文档存储在一个限定了作用域的变量中。  

    还要注意的是,可以使用(可选的)嵌套的 <c:param> 标记来为正在导入的 URL 指定请求参数。与在 <c:url> 中嵌套 <c:param> 标记一样,必要时也要对参数名称和参数值进行 URL 编码。
    ----------------------------------------------------------------------------------------------------------------------------------------
    Example2
    <c:import url="/MyHtml.html" var="thisPage" />   
    <c:import url="/MyHtml.html" context=”/sample2” var="thisPage"/>   
    <c:import url="www.sample.com/MyHtml.html" var="thisPage"/>   
    该示例演示了三种不同的导入方法,第一种是在同一 Context 下的导入,第二种是在不同的 Context 下导入,第三种是导入任意一个 URL 。
    ---------------------------------------------------------------------------------------------------------------------------------------

    12. <c:url>
    库 :Core(核心库)

    URI : http://java.sun.com/jsp/jstl/core

    前缀 : c  

    描述 : 主要用来产生一个URL。

    语法 :
    语法1:没有本体内容  
    <c:url value="value" [context="context"] [var="varName"]  
    [scope="{page|request|session|application}"] />  
    语法2:本体内容代表查询字符串(Query String)参数  
    <c:url value="value" [context="context"] [var="varName"]  
    [scope="{page|request|session|application}"] >  
    <c:param> 标签  
    </c:url>  

    属性 :
    属性名
     描述
     类型
     是否接受动态值
     是否支持 EL
     是否
    必须
     默认值
     说明
     
    value  
     
     String  
     true
     Y
     是
     无
     执行的URL  
     
    context  
     
     String  
     true
     Y
     否
     无
     相同Container下,其他web站台必须以“/”开头
     
    var  
     
     String  
     false
     N  
     否
     无
     储存被包含文件的内容(以String 类型存入)  
     
    scope  
     
     String  
     false
     N  
     否
     page
     var变量的JSP范围
     



    实例 :
    <c:url value="http://www.javafan.net " >  
    <c:param name="param" value="value"/>  
    </c:url>  
    上面执行结果将会产生一个网址为http://www.javafan.net?param=value,我们更可以搭配 HTML 的<a>使用,如下:  
    <a href="  
    <c:url value="http://www.javafan.net " >  
    <c:param name="param" value="value"/>  
    </c:url>">Java爱好者</a>  
    如果<c:url>有 var属性时,则网址会被存到 varName中,而不会直接输出网址。  

    13. <c:redirect>
    库 :Core(核心库)

    URI : http://java.sun.com/jsp/jstl/core

    前缀 : c  

    描述 : 可以将客户端的请求从一个 JSP 网页导向到其他文件。

    语法 :
    语法1:没有本体内容  
    <c:redirect url="url" [context="context"] />  
    语法2:本体内容代表查询字符串(Query String)参数  
    <c:redirect url="url" [context="context"] >  
    <c:param>  
    </c:redirect >  

    属性 :
    属性名
     描述
     类型
     是否接受动态值
     是否支持 EL
     是否
    必须
     默认值
     说明
     
    url
     统一资源定位器
     String  

     true
     Y
     是
     无
     导向的目标地址,它可以是相对或绝对地址。

     
    context  
     上下文
     String  
     true
     Y
     否
     无
     相同Container下,其他web站台必须以“/”开头
     


    实例 :
    <c:redirect> 的功能不止可以导向网页,同样它还可以传递参数给目标文件。如:  
    <c:redirect url="http://java.sun.com">  
    <c:param name="param" value="value"/>  
    </c:redirect>  

    14. <c:param>
    库 :Core(核心库)

    URI : http://java.sun.com/jsp/jstl/core

    前缀 : c  

    描述 :用于传递参数,用来为包含或重定向的页面传递参数。

    语法 :

    属性 :
    属性名
     描述
     类型
     是否接受动态值
     是否支持 EL
     是否
    必须
     默认值
     说明
     
    name
     参数名
     String  

     true
     Y
     是
     无
     传递的参数名

     
    value
     参数值
     String  
     true
     Y
     否
     无
     传递的参数值(可选)
     



    实例 :
    <c:redirect url="/MyHtml.jsp">
    <c:param name="userName" value=”RW” />
    </c:redirect>
    该示例将为重定向的“MyHtml.jsp”传递指定参数“userName=’RW’”。

  • 相关阅读:
    UPNP报文示例
    ceph旧版客户端挂载新版ceph报错
    VUE——配置本地运行指定不同环境
    springBoot——Web开发简介【七】
    C++ 浮点数的存储与精度
    端口复用与惊群效应
    MySQL5.5读写分离之mysql-proxy
    Mysql读写分离--mysql-proxy
    mysql主从之keepalive+MySQL高可用
    如何在CentOS 7上安装Htop
  • 原文地址:https://www.cnblogs.com/greencolor/p/2332145.html
Copyright © 2020-2023  润新知