<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yxhxj2006

    常用鏈接

    統(tǒng)計

    最新評論

    JSTL 學習、應用記錄

    JSP 標準標記庫( Standard Tag Library , JSTL) 是一組以標準化格式實現(xiàn)許多通用的 Web 站點功能的定制標記。 

    JSP 技術的優(yōu)勢之一在于其定制標記庫工具。除了核心 JSP 標記,如 jsp:include 之外,定制標記庫工具使您能夠創(chuàng)建唯一的標記來描述以站點或應用程序為導向的操作。一旦您創(chuàng)建了定制標記庫 ( 簡稱 taglib) ,當您擴展項目或轉(zhuǎn)向另一個項目時您可以重復使用這些標記。您還可以將 taglib 傳遞給其它開發(fā)人員,從而他們可以在自己的網(wǎng)站上使用,或者在您 Web 應用程序的其它部分使用。 



    JSTL 的目標是為了簡化 JSP 頁面的設計。對于頁面設計人員來說,使用腳本語言(默認值是 JAVA 語言)操作動態(tài)數(shù)據(jù)是比較困難的,而采用標簽和表達式語言相對容易一些, JSTL 的使用為頁面設計人員和程序開發(fā)人員的分工協(xié)作提供了便利。 



    一. 配置 JSTL 



    包括兩個 JAR 文件, jstl.jar 和 standard.jar 。是什么沒有必要管,重在應用( 1+1 ? =2 ,我們沒有必要深究,只需要知道這么用就行。)。 



    原文引入: 
    1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>   
    2.   
    3. <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>   
    4.   
    5. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>   



    二. Core 標簽庫 



    Core 標簽庫主要包括了一般用途的標簽、條件標簽、迭代標簽和 URL 相關的標簽。在 JSP 頁面使用 Core 標簽,要使用 taglig 指令,指定引用的標簽庫,如下: 
    1. <%@ taglib rui=”http://java.sun.com/jsp/jstl/core”  prefix=”c” %>   



    一般用途的標簽有
    1. <c:out> 、 <c:set> 、 <c:remove> 、 <c:cath>   


    1.
    1. <c:out>   


    用于計算一個表達式并將結(jié)果輸出。類似于 JSP 中 <%=%> 表達式,或者是 EL 中 $ ${el-expression} 。 



    2.
    1. <c:set>  


    用于設置范圍變量的值或者 javabean 對象的屬性。 

    看個實際例子: 
    1. <c:set var=”username” value=”lisi” scope=”session”/>   

    這樣就相當于設置了 session 。 



    3.
    1. <c:remove>   


    相對
    1. <c:set>  
    其作用是移除范圍變量。比如:
    1. <c:remove var=”nusername” scope=”session”/>   




    4.
    1. <c:catch>   




    用于捕獲在其中嵌套的操作所拋出的異常對象,并將異常信息保存到變量中。 

    我們將有可能拋出異常的代碼放置到開始標簽 :<c:catch> 和結(jié)束標簽 :</c:catch> 之間。如果其中代碼出現(xiàn)異常,異常對象將被捕獲,保存在 var 聲明的變量中,該變量總是有 page 范圍。如果沒有發(fā)生異常,而 var 所標識的范圍變量將被移除。 

    如果沒有指定 var 屬性,異常只是簡單的被捕獲,異常信息并不會被保存。 

    Eg : 
    1. <c:catch var=”exception”>   
    2.   
    3. <%   
    4. <br>  
    5.        int i = 5;   
    6.   
    7.        int j = 0;   
    8.   
    9.        int k=i/j;   
    10.   
    11. %>   
    12.   
    13. </c:catch>   
    14.   
    15. <c:out value=”${exception}” />  
    16.   
    17.   
    18. <c:out value=”${exception.massage}”/>   

    后一句相當于: exception.getMessage() 



    條件標簽包括
    1. <c:if><c:choose><c:when><c:otherwise>   


    1.
    1. <c:if>   


    用于實現(xiàn) java 中的 if 語句功能。 


    1. <c:if test=”${user.visitCount==1}”>   
    2.   
    3.        This is your first visit .   
    4.   
    5. </c:if>   



    若為 true ,會打印中間部分。也可以聲明 var ,方便下一步判斷。 
    1. <c:if test=”${param.name==’admin’}” value=”result”/>   
    2.   
    3. <c:out value=”${result}” />   



    2.
    1. <c:choose>   


    <c:choose> 和 <c:when> 、 <c:otherwise> 一起實現(xiàn)互斥條件執(zhí)行,類似于 java 中的 if else. 

    <c:choose> 一般作為 <c:when> 、 <c:otherwise> 的父標簽。 

    eg : 
    1. <c:choose>   
    2.   
    3.        <c:when test="${row.v_money<10000}">   
    4.   
    5.               初學下海   
    6.   
    7.        </c:when>   
    8.   
    9.        <c:when test="${row.v_money>=10000&&row.v_money<20000}">   
    10.   
    11.               身手小試   
    12.   
    13.        </c:when>   
    14.   
    15.        <c:otherwise>   
    16.   
    17.               商業(yè)能手   
    18.   
    19.        </c:otherwise>   
    20.   
    21. </c:choose>   



    迭代標簽 迭代標簽有 <c:forEach> 和 </c:forEach> 



    // 遍歷記錄集 
    1. <c:forEach items="${finalResult.rows}" var="row">          
    2.   
    3. <tr class="<%=tdClass[(rank+1)%2]%>">   
    4.   
    5. <td align="center"><span><%=rank%> </span></td>   
    6.   
    7. <td align="center"><span ><c:out value="${row.player_name}"/></span> </td>   
    8.   
    9. <td align="center"><span > ¥ <c:out value="${row.money}"/></span></td>   
    10.   
    11. </tr>   
    12.   
    13. <%rank++;%>        
    14.   
    15. </c:forEach>    



    也可以設定固定次數(shù)。 
    1. <c:forEach var =”i” begin=”100 “ end= “110”>   
    2.   
    3.        ${i}   
    4.   
    5. </c:forEach>   

    如果再加個 step= “ 2 ”那么每次增長為 2 。 



    三. sql 標簽 



    設置數(shù)據(jù)源: 
    1. <sql:setDataSource dataSource="proxool.breadTycoon" />   

    // 將數(shù)據(jù)庫某查詢的結(jié)果聲明為一個變量 
    1. <sql:query var="finalResult" >   
    2.   
    3.     select player_name,money from tb_player order by money DESC LIMIT 10      
    4.   
    5. </sql:query>   

    然后可以: 
    1. <c:forEach items="${ finalResult.rows}" var="row" varStatus="s">   
    2.   
    3.       advCosts[${s.index}]=${row.adv_cost};   
    4.   
    5. </c:forEach>   

    數(shù)據(jù)更新標簽: 
    1. <sql:update>     
    2.   
    3.                 call proc_set_role_salespro(?,?,?,?,?);   
    4.   
    5.                 <sql:param value="30"/>   
    6.   
    7.                 <sql:param value="39"/>   
    8.   
    9.                 <sql:param value="<%=spID%>"/>   
    10.   
    11.                 <sql:param value="<%=productID%>"/>   
    12.   
    13.                 <sql:param value="1"/>                  
    14.   
    15.             </sql:update>   
    16.   
    17.     
    18.   
    19. <sql:query var="queryAllChannelCount">   
    20.   
    21. SELECT COUNT(*) as total FROM tb_channel WHERE game_id=? AND begin_round<func_cur_round(?) AND player_id=? AND channel_flag=0   
    22. >  
    23.   
    24. <sql:param value="${gameID}"/>   
    25.   
    26. <sql:param value="${gameID}"/>   
    27.   
    28. <sql:param value="${playerID}"/>   
    29.   
    30. </sql:query>   
    31.   
    32. <c:forEach items="${queryAllChannelCount.rowsByIndex}" var="channelCN">   
    33.   
    34.        <c:set value="${channelCN[0]}" var="channelTotal"/>   
    35.   
    36. </c:forEach>   
    37.   
    38.     


    調(diào)用存儲過程更新數(shù)據(jù)庫: 


    1. <c:if test="${param.changsubmit!=null}" >   
    2.   
    3. <c:forEach items="${paramValues.pro_id}" var="getpro_id" varStatus="getparamsta">   
    4.   
    5. <sql:update>   
    6.   
    7.     
    8.   
    9. call proc_set_role_product(?,?,?,?,?,?,?,?);   
    10.   
    11.     
    12.   
    13. <sql:param value="${gameID}"/>   
    14.   
    15. <sql:param value="${playerID}"/>   
    16.   
    17. <sql:param value="${getpro_id}"/>   
    18.   
    19. <sql:param value="${getpro_id}"/>   
    20.   
    21. <sql:param value="${paramValues.pro_sort[getparamsta.index]}"/>   
    22.   
    23. <sql:param value="${paramValues.price[getparamsta.index]}"/>   
    24.   
    25. <sql:param value="${paramValues.output[getparamsta.index]}"/>   
    26.   
    27. <sql:param value="0"/>   
    28.   
    29. </sql:update>   
    30.   
    31. </c:forEach>   
    32.   
    33. </c:if>   

    四. 格式化標簽 


    1. <fmt: formatNumber value =”12.3” pattern=”.000”/>   

    將輸出 12.300. 應用樣式 ”.000”, 將使格式化后的小數(shù)部分有 3 位。不足 3 位將以 0 補齊。 


    1. <fmt:formatDate value=”<%=new java.util.Date() %>” type=”date” />   

    格式化的結(jié)果是: 2007-5-27 . 
    1. <fmt:formatDate value=”<%=new java.util.Date() %>” type=”time” />   

    格式化的結(jié)果是: 9:25:11 
    1. <fmt:formatDate value=”<%=new java.util.Date() %>” type=”both” />   

    格式化的結(jié)果是: 2007-5-27 9:25:11 







    補充知識點: 



    1. 替換 request.getParameter("test"): 
    1. <c:if test="${param.test!=null}" >   
    2.   
    3. <c:out value="${param.test}" />   
    4.   
    5. </c:if>   



    2.
    1. <c:redirect url="a.jsp">   




    3.
    1. <c:redirect url="/max.jsp" context="/ch16">   
    2.   
    3. <c:param name="name1" value="665"/>   
    4.   
    5. <c:param name="name3" value=" 斯蒂芬 "/>   
    6.   
    7. </c:redirect>   



    4.
    1. <c:forTokens items="zhangsan:lisi:as" delims=":" var="name">   
    2.   
    3. ${name}   
    4.   
    5. </c:forTokens>  

    posted on 2012-09-20 00:53 奮斗成就男人 閱讀(280) 評論(0)  編輯  收藏 所屬分類: J2EE

    主站蜘蛛池模板: 4399好看日本在线电影免费| 亚洲国产成人精品电影| 久久久久亚洲AV成人片| 丁香亚洲综合五月天婷婷| 久久亚洲精品高潮综合色a片| 免费萌白酱国产一区二区| 成人免费ā片在线观看| 亚洲av乱码中文一区二区三区| 亚洲日韩国产精品无码av| 一个人看的www免费高清| 亚洲乱人伦中文字幕无码| 亚洲国产精品午夜电影| 久久亚洲精品成人综合| 久久精品九九亚洲精品天堂| 99视频在线精品免费观看6| 亚洲一区二区三区免费观看| 国产成人精品无码免费看| 韩国免费a级作爱片无码| 免费人成大片在线观看播放电影| 国产成人精品日本亚洲语音 | 亚洲成a∧人片在线观看无码| 亚洲五月综合网色九月色| 亚洲成年人电影网站| 亚洲一区免费观看| 亚洲视频在线免费观看| 亚洲成在人天堂在线| 亚洲av无码国产精品色午夜字幕| 亚洲精品成人片在线观看| 无码不卡亚洲成?人片| 午夜亚洲国产成人不卡在线| 免费a级毛片无码av| 最近免费mv在线电影| **一级一级毛片免费观看| 99久久国产免费-99久久国产免费| 国产成人综合久久精品亚洲| 亚洲精品动漫免费二区| 人人狠狠综合久久亚洲| 无套内射无矿码免费看黄| yellow视频免费在线观看| 99精品视频在线观看免费| 羞羞视频在线观看免费|