国内精品久久久久久久星辰影视-亚洲天堂久久精品成人-亚洲国产成人综合青青-91精品啪在线看国产网站-日韩一区二区在线观看

?
    開(kāi)發(fā)技術(shù) / Technology

    JSTL 核心標簽庫 使用

    日期:2015年2月3日  作者:zhjw  來(lái)源:互聯(lián)網(wǎng)    點(diǎn)擊:686

    JSTL 核心標簽庫 使用

     

    JSTL 核心標簽庫標簽共有13個(gè),功能上分為4類(lèi):

    1.表達式控制標簽:out、set、remove、catch

    2.流程控制標簽:if、choose、when、otherwise

    3.循環(huán)標簽:forEach、forTokens

    4.URL操作標簽:import、url、redirect

    使用標簽時(shí),一定要在jsp文件頭加入以下代碼:

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

     

    下面分別對這些標簽進(jìn)行說(shuō)明:

    1. <c:out> 用來(lái)顯示數據對象(字符串、表達式)的內容或結果

    使用Java腳本的方式為:<% out.println("hello") %>  <% =表達式 %>

    使用JSTL標簽:<c:out value="字符串">,例如:

    <body>
      <c:out value="&lt要顯示的數據對象(未使用轉義字符)&gt" escapeXml="true" default="默認值"></c:out><br/>
      <c:out value="&lt要顯示的數據對象(使用轉義字符)&gt" escapeXml="false" default="默認值"></c:out><br/>
      <c:out value="${null}" escapeXml="false">使用的表達式結果為null,則輸出該默認值</c:out><br/>
    </body>

    那么網(wǎng)頁(yè)顯示效果為:

    2. <c:set> 用于將變量存取于 JSP 范圍中或 JavaBean 屬性中。下面的例子中假設已經(jīng)有 Person.java 這個(gè)類(lèi)文件。

     

    復制代碼
    <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
    <%@page contentType="text/html; charset=utf-8" %>
    
    <jsp:useBean id="person" class="lihui.Person"></jsp:useBean>
    
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>JSTL測試</title>
      </head>
      
      <body>
      <c:set value="張三" var="name1" scope="session"></c:set>
      <c:set var="name2" scope="session">李四</c:set>
      <c:set value="趙五" target="${person}" property="name"></c:set>
      <c:set target="${person}" property="age">19</c:set>
      <li>從session中得到的值:${sessionScope.name1}</li>
      <li>從session中得到的值:${sessionScope.name2}</li>
      <li>從Bean中獲取對象person的name值:<c:out value="${person.name}"></c:out></li>
      <li>從Bean中獲取對象person的age值:<c:out value="${person.age}"></c:out></li>
      </body>
    </html>
    復制代碼

    一共有四種語(yǔ)法格式,前兩種是給jsp的范圍變量賦值,后兩個(gè)是給 javabean 變量賦值

    效果如下:

     

    3.<c:remove> 主要用來(lái)從指定的 jsp 范圍內移除指定的變量。使用類(lèi)似,下面只給出語(yǔ)法:

    <c:remove var="變量名" [scope="page|request|session|application"]></c:remove>


    4.<c:catch> 用來(lái)處理 JSP 頁(yè)面中產(chǎn)生的異常,并存儲異常信息

    <c:catch var="name1">

          容易產(chǎn)生異常的代碼

    </c:catch>

    如果拋異常,則異常信息保存在變量 name1 中。

    5.<c:if>

    <c:if test="條件1" var="name" [scope="page|request|session|application"]></c:remove>

    例:

    復制代碼
      <body>
      <c:set value="趙五" target="${person}" property="name"></c:set>
      <c:set target="${person}" property="age">19</c:set>
      <c:if test="${person.name == '趙武'}" var="name1"></c:if>
      <c:out value="name1的值:${name1}"></c:out><br/>
      <c:if test="${person.name == '趙五'}" var="name2"></c:if>
      <c:out value="name2的值:${name2}"></c:out>
      </body>
    復制代碼

    效果:

    6. <c:choose> <c:when> <c:otherwise> 三個(gè)標簽通常嵌套使用,第一個(gè)標簽在最外層,最后一個(gè)標簽在嵌套中只能使用一次

    例:

    復制代碼
        <c:set var="score">85</c:set>
        <c:choose>
        <c:when test="${score>=90}">
        你的成績(jì)?yōu)閮?yōu)秀!
        </c:when>
        <c:when test="${score>=70&&score<90}">
        您的成績(jì)?yōu)榱己?
        </c:when>
        <c:when test="${score>60&&score<70}">
        您的成績(jì)?yōu)榧案?
        </c:when>
        <c:otherwise>
        對不起,您沒(méi)有通過(guò)考試!
        </c:otherwise>
        </c:choose>
    復制代碼

    7.<c:forEach>

    語(yǔ)法:<c:forEach var="name" items="Collection" varStatus="statusName" begin="begin" end="end" step="step"></c:forEach>

    該標簽根據循環(huán)條件遍歷集合 Collection 中的元素。 var 用于存儲從集合中取出的元素;items 指定要遍歷的集合;varStatus 用于存放集合中元素的信息。varStatus 一共有4種狀態(tài)屬性,下面例子中說(shuō)明:

    復制代碼
     1 <%@ page contentType="text/html;charset=GBK" %>
     2 <%@page import="java.util.List"%>
     3 <%@page import="java.util.ArrayList"%>
     4 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     5 <html>
     6 <head>
     7     <title>JSTL: -- forEach標簽實(shí)例</title>
     8 </head>
     9 <body>
    10 <h4><c:out value="forEach實(shí)例"/></h4>
    11 <hr>
    12     <% 
    13         List a=new ArrayList();
    14         a.add("貝貝");
    15         a.add("晶晶");
    16         a.add("歡歡");
    17         a.add("瑩瑩");
    18         a.add("妮妮");
    19     request.setAttribute("a",a);
    20 %>
    21     <B><c:out value="不指定begin和end的迭代:" /></B><br>
    22     <c:forEach var="fuwa" items="${a}">
    23     &nbsp;<c:out value="${fuwa}"/><br>
    24     </c:forEach>
    25     <B><c:out value="指定begin和end的迭代:" /></B><br>
    26     <c:forEach var="fuwa" items="${a}" begin="1" end="3" step="2">
    27     &nbsp;<c:out value="${fuwa}" /><br>
    28     </c:forEach>
    29     <B><c:out value="輸出整個(gè)迭代的信息:" /></B><br>
    30     <c:forEach var="fuwa" items="${a}" begin="3" end="4" step="1" varStatus="s">
    31     &nbsp;<c:out value="${fuwa}" />的四種屬性:<br>
    32     &nbsp;&nbsp;所在位置,即索引:<c:out value="${s.index}" /><br>
    33     &nbsp;&nbsp;總共已迭代的次數:<c:out value="${s.count}" /><br>
    34     &nbsp;&nbsp;是否為第一個(gè)位置:<c:out value="${s.first}" /><br>
    35     &nbsp;&nbsp;是否為最后一個(gè)位置:<c:out value="${s.last}" /><br>
    36     </c:forEach>
    37 </body>
    38 </html>
    復制代碼

    顯示效果:

    8.<c:forTokens> 用于瀏覽字符串,并根據指定的字符串截取字符串
    語(yǔ)法:<c:forTokens items="stringOfTokens" delims="delimiters" [var="name" begin="begin" end="end" step="len" varStatus="statusName"]></c:forTokens>

    還是看個(gè)例子吧:

    復制代碼
     1 <%@ page contentType="text/html;charset=GBK"%>
     2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
     3 <html>
     4     <head>
     5         <title>JSTL: -- forTokens標簽實(shí)例</title>
     6     </head>
     7     <body>
     8         <h4>
     9             <c:out value="forToken實(shí)例" />
    10         </h4>
    11         <hr>
    12         <c:forTokens items="北、京、歡、迎、您" delims="、" var="c1">
    13             <c:out value="${c1}"></c:out>
    14         </c:forTokens>
    15         <br>
    16         <c:forTokens items="123-4567-8854" delims="-" var="t">
    17             <c:out value="${t}"></c:out>
    18         </c:forTokens>
    19         <br>
    20         <c:forTokens items="1*2*3*4*5*6*7" delims="*" begin="1" end="3"
    21             var="n" varStatus="s">
    22     &nbsp;<c:out value="${n}" />的四種屬性:<br>
    23         &nbsp;&nbsp;所在位置,即索引:<c:out value="${s.index}" />
    24             <br>
    25         &nbsp;&nbsp;總共已迭代的次數:<c:out value="${s.count}" />
    26             <br>
    27         &nbsp;&nbsp;是否為第一個(gè)位置:<c:out value="${s.first}" />
    28             <br>
    29         &nbsp;&nbsp;是否為最后一個(gè)位置:<c:out value="${s.last}" />
    30             <br>
    31         </c:forTokens>
    32     </body>
    33 </html>
    復制代碼

    顯示結果:

     9.URL 操作標簽

    (1)<c:import> 把其他靜態(tài)或動(dòng)態(tài)文件包含到 JSP 頁(yè)面。與<jsp:include>的區別是后者只能包含同一個(gè)web應用中的文件,前者可以包含其他web應用中的文件,甚至是網(wǎng)絡(luò )上的資源。

    語(yǔ)法:<c:import url="url" [context="context"] [value="value"] [scope="..."] [charEncoding="encoding"]></c:import>

            <c:import url="url"  varReader="name" [context="context"][charEncoding="encoding"]></c:import>

     看個(gè)例子:

    復制代碼
     1 <%@ page contentType="text/html;charset=GBK"%>
     2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
     3 <html>
     4     <head>
     5         <title>JSTL: -- import標簽實(shí)例</title>
     6     </head>
     7     <body>
     8         <h4>
     9             <c:out value="import實(shí)例" />
    10         </h4>
    11         <hr>
    12         <h4>
    13             <c:out value="絕對路徑引用的實(shí)例" />
    14         </h4>
    15         <c:catch var="error1">
    16             <c:import url="http://www.baidu.com" />
    17         </c:catch>
    18         <c:out value="${error1}"></c:out>
    19         <hr>
    20         <h4>
    21             <c:out value="相對路徑引用的實(shí)例,引用本應用中的文件" />
    22         </h4>
    23         <c:catch>
    24             <c:import url="a1.txt" charEncoding="gbk" />
    25         </c:catch>
    26         <hr>
    27         <h4>
    28             <c:out value="使用字符串輸出、相對路徑引用的實(shí)例,并保存在session范圍內" />
    29         </h4>
    30         <c:catch var="error3">
    31             <c:import var="myurl" url="a1.txt" scope="session" charEncoding="gbk"></c:import>
    32             <c:out value="${myurl}"></c:out>
    33             <c:out value="${myurl}" />
    34         </c:catch>
    35         <c:out value="${error3}"></c:out>
    36     </body>
    37 </html>
    復制代碼

    顯示結果:

     

    URL路徑有個(gè)絕對路徑和相對路徑。相對路徑:<c:import url="a.txt"/>那么,a.txt必須與當前文件放在同一個(gè)文件目錄下。如果以"/"開(kāi)頭,表示存放在應用程序的根目錄下,如Tomcat應用程序的根目錄文件夾為 webapps。導入該文件夾下的 b.txt 的編寫(xiě)方式: <c:import url="/b.txt">。如果要訪(fǎng)問(wèn)webapps管理文件夾中的其他Web應用,就要用context屬性。例如訪(fǎng)問(wèn)demoProj下的index.jsp,則:<c:import url="/index.jsp" context="/demoProj"/>.

    (2)<c:redirect> 該標簽用來(lái)實(shí)現請求的重定向。例如,對用戶(hù)輸入的用戶(hù)名和密碼進(jìn)行驗證,不成功則重定向到登錄頁(yè)面?;蛘邔?shí)現Web應用不同模塊之間的銜接

    語(yǔ)法:<c:redirect url="url" [context="context"]/>

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

                <c:param name="name1" value="value1">

           </c:redirect>

    看個(gè)例子:

    1 <%@ page contentType="text/html;charset=GBK"%>
    2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    3 <c:redirect