• <th id="kadjp"></th>

            1. ?
                開發(fā)技術(shù) / Technology

                JSTL 核心標(biāo)簽庫 使用

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

                JSTL 核心標(biāo)簽庫 使用

                 

                JSTL 核心標(biāo)簽庫標(biāo)簽共有13個,功能上分為4類:

                1.表達(dá)式控制標(biāo)簽:out、set、remove、catch

                2.流程控制標(biāo)簽:if、choose、whenotherwise

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

                4.URL操作標(biāo)簽:importurl、redirect

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

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

                 

                下面分別對這些標(biāo)簽進(jìn)行說明:

                1. <c:out> 用來顯示數(shù)據(jù)對象(字符串、表達(dá)式)的內(nèi)容或結(jié)果

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

                使用JSTL標(biāo)簽:<c:out value="字符串">,例如:

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

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

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

                 

                復(fù)制代碼
                <%@ 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>
                復(fù)制代碼

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

                效果如下:

                 

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

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


                4.<c:catch> 用來處理 JSP 頁面中產(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>

                例:

                復(fù)制代碼
                  <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>
                復(fù)制代碼

                效果:

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

                例:

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

                7.<c:forEach>

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

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

                復(fù)制代碼
                 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標(biāo)簽實(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="輸出整個迭代的信息:" /></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;總共已迭代的次數(shù):<c:out value="${s.count}" /><br>
                34     &nbsp;&nbsp;是否為第一個位置:<c:out value="${s.first}" /><br>
                35     &nbsp;&nbsp;是否為最后一個位置:<c:out value="${s.last}" /><br>
                36     </c:forEach>
                37 </body>
                38 </html>
                復(fù)制代碼

                顯示效果:

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

                還是看個例子吧:

                復(fù)制代碼
                 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標(biāo)簽實(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;總共已迭代的次數(shù):<c:out value="${s.count}" />
                26             <br>
                27         &nbsp;&nbsp;是否為第一個位置:<c:out value="${s.first}" />
                28             <br>
                29         &nbsp;&nbsp;是否為最后一個位置:<c:out value="${s.last}" />
                30             <br>
                31         </c:forTokens>
                32     </body>
                33 </html>
                復(fù)制代碼

                顯示結(jié)果:

                 9.URL 操作標(biāo)簽

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

                語法:<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>

                 看個例子:

                復(fù)制代碼
                 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標(biāo)簽實(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í)例,引用本應(yīng)用中的文件" />
                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范圍內(nèi)" />
                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>
                復(fù)制代碼

                顯示結(jié)果:

                 

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

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

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

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

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

                       </c:redirect>

                看個例子:

                1 <%@ page contentType="text/html;charset=GBK"%>
                2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
                3 <c:redirect
                    
                国产欧美在线观看,国产精品白浆冒出视频,91精品国产91热久久久福利,大伊香蕉在线精品视频97 国产精品美女久久福利 国产精品黄的免费观看
                <th id="kadjp"></th>