17.4JSTL標(biāo)簽庫(kù)之核心標(biāo)簽

一、JSTL標(biāo)簽庫(kù)介紹

JSTL標(biāo)簽庫(kù)的使用是為彌補(bǔ)html標(biāo)簽的不足,規(guī)范自定義標(biāo)簽的使用而誕生的。使用JSLT標(biāo)簽的目的就是不希望在jsp頁(yè)面中出現(xiàn)java邏輯代碼

二臀蛛、JSTL標(biāo)簽庫(kù)的分類(lèi)

  • 核心標(biāo)簽(用得最多)
  • 國(guó)際化標(biāo)簽(I18N格式化標(biāo)簽)
  • 數(shù)據(jù)庫(kù)標(biāo)簽(SQL標(biāo)簽,很少使用)
  • XML標(biāo)簽(幾乎不用)
  • JSTL函數(shù)(EL函數(shù))

三崖蜜、核心標(biāo)簽庫(kù)使用說(shuō)明

JSTL的核心標(biāo)簽庫(kù)標(biāo)簽共13個(gè)浊仆,使用這些標(biāo)簽?zāi)軌蛲瓿蒍SP頁(yè)面的基本功能,減少編碼工作纳猪。

從功能上可以分為4類(lèi):表達(dá)式控制標(biāo)簽氧卧、流程控制標(biāo)簽、循環(huán)標(biāo)簽氏堤、URL操作標(biāo)簽沙绝。

  • 1、表達(dá)式控制標(biāo)簽:out標(biāo)簽鼠锈、set標(biāo)簽闪檬、remove標(biāo)簽、catch標(biāo)簽购笆。
  • 2粗悯、流程控制標(biāo)簽:if標(biāo)簽、choose標(biāo)簽同欠、when標(biāo)簽样傍、otherwise標(biāo)簽。
  • 3铺遂、循環(huán)標(biāo)簽:forEach標(biāo)簽衫哥、forTokens標(biāo)簽。
  • 4襟锐、URL操作標(biāo)簽:import標(biāo)簽撤逢、url標(biāo)簽、redirect標(biāo)簽、param標(biāo)簽蚊荣。

在JSP頁(yè)面引入核心標(biāo)簽庫(kù)的代碼為:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

下面介紹用的最多也最核心的流程控制和循環(huán)標(biāo)簽初狰,其余標(biāo)簽用法可以參照:
javaWeb學(xué)習(xí)總結(jié)(9)- JSTL標(biāo)簽庫(kù)之核心標(biāo)簽

3.1、表達(dá)式控制標(biāo)簽——if標(biāo)簽使用總結(jié)

<c:if>標(biāo)簽的功能互例,<c:if>標(biāo)簽和程序中的if語(yǔ)句作用相同奢入,用來(lái)實(shí)現(xiàn)條件控制。

<c:if>標(biāo)簽的語(yǔ)法

【語(yǔ)法1】:沒(méi)有標(biāo)簽體內(nèi)容(body)
<c:if test="testCondition" var="varName" [scope="page|request|session|application}"]/>
【語(yǔ)法2】:有標(biāo)簽體內(nèi)容
<c:if test="testCondition" [var="varName"] [scope="page|request|session|application}"]>
標(biāo)簽體內(nèi)容
</c:if>

參數(shù)說(shuō)明】:

  • (1)test屬性用于存放判斷的條件媳叨,一般使用EL表達(dá)式來(lái)編寫(xiě)俊马。
  • (2)var屬性用來(lái)存放判斷的結(jié)果,類(lèi)型為true或false肩杈。
  • (3)scopes屬性用來(lái)指定var屬性存放的范圍。

<c:if>標(biāo)簽的使用范例

cif.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%--引入JSTL核心標(biāo)簽庫(kù) --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML>
<html>
<head>
    <title>JSTL: --流程控制標(biāo)簽 if標(biāo)簽示例</title>
</head>

<body>
    <h4>if標(biāo)簽示例</h4>
    <hr>
    <form action="JSTL_if_tag.jsp" method="post">
        <input type="text" name="uname" value="${param.uname}"> 
        <input type="submit" value="登錄">
    </form>
    <%--使用if標(biāo)簽進(jìn)行判斷并把檢驗(yàn)后的結(jié)果賦給adminchock解寝,存儲(chǔ)在默認(rèn)的page范圍中扩然。 --%>
    <c:if test="${param.uname=='admin'}" var="adminchock">
    <%--可以把a(bǔ)dminchock的屬性范圍設(shè)置為session,這樣就可以在其他的頁(yè)面中得到adminchock的值聋伦,
    使用<c:if text=”${adminchock}”><c:if>判斷夫偶,實(shí)現(xiàn)不同的權(quán)限。 --%>
        <c:out value="管理員歡迎您觉增!"/>
    </c:if>
    <%--使用EL表達(dá)式得到adminchock的值兵拢,如果輸入的用戶(hù)名為admin將顯示true。 --%>
    ${adminchock}
</body>
</html>

3.2逾礁、流程控制標(biāo)簽——choose標(biāo)簽说铃、when標(biāo)簽、otherwise標(biāo)簽配合使用講解

<c:choose>嘹履、<c:when>和<c:otherwise>標(biāo)簽的功能
<c:choose>腻扇、<c:when> 和<c:otherwise>這3個(gè)標(biāo)簽通常情況下是一起使用的,<c:choose>標(biāo)簽作為<c:when> 和<c:otherwise>標(biāo)簽的父標(biāo)簽來(lái)使用砾嫉。
使用<c:choose>幼苛,<c:when>和<c:otherwise>三個(gè)標(biāo)簽,可以構(gòu)造類(lèi)似 “if-else if-else” 的復(fù)雜條件判斷結(jié)構(gòu)焕刮。

語(yǔ)法

 <c:choose>
         <c:when test="條件1">
      //業(yè)務(wù)邏輯1
         <c:when>
   <c:when test="條件2">
      //業(yè)務(wù)邏輯2
         <c:when>
   <c:when test="條件n">
      //業(yè)務(wù)邏輯n
         <c:when>
         <c:otherwise>
      //業(yè)務(wù)邏輯
   </c:otherwise>
 </c:choose>

使用范例

cchoose.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%--引入JSTL核心標(biāo)簽庫(kù) --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML>
<html>
  <head>
    <title>JSTL: -- choose及其嵌套標(biāo)簽標(biāo)簽示例</title>
  </head>
  
  <body>
    <h4>choose及其嵌套標(biāo)簽示例</h4>
    <hr/>
    <%--通過(guò)set標(biāo)簽設(shè)定score的值為85 --%>
    <c:set var="score" value="85"/>
    <c:choose>
    <%--使用<c:when>進(jìn)行條件判斷舶沿。
        如果大于等于90,輸出“您的成績(jī)?yōu)閮?yōu)秀”配并;
        如果大于等于70小于90括荡,輸出“您的成績(jī)?yōu)榱己谩保?        大于等于60小于70,輸出“您的成績(jī)?yōu)榧案瘛保?        其他(otherwise)輸出“對(duì)不起荐绝,您沒(méi)能通過(guò)考試”一汽。
     --%>
        <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>
            對(duì)不起,您沒(méi)有通過(guò)考試召夹!
        </c:otherwise>
    </c:choose>
  </body>
</html>

3.3循環(huán)標(biāo)簽——forEach標(biāo)簽使用總結(jié)

<c:forEach>標(biāo)簽的功能

該標(biāo)簽根據(jù)循環(huán)條件遍歷集合(Collection)中的元素岩喷。

<c:forEach>標(biāo)簽的語(yǔ)法

<c:forEach 
      var=”name” 
      items=”Collection” 
      varStatus=”StatusName” 
      begin=”begin” 
      end=”end” 
      step=”step”>
    本體內(nèi)容
</c:forEach>

【參數(shù)解析】:

  • (1)var設(shè)定變量名用于存儲(chǔ)從集合中取出元素。
  • (2)items指定要遍歷的集合监憎。
  • (3)varStatus設(shè)定變量名纱意,該變量用于存放集合中元素的信息。
  • (4)begin鲸阔、end用于指定遍歷的起始位置和終止位置(可選)偷霉。
  • (5)step指定循環(huán)的步長(zhǎng)。

<c:forEach>使用范例

cforeach.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%--引入JSTL核心標(biāo)簽庫(kù) --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page import="java.util.ArrayList"%>
<!DOCTYPE HTML>
<html>
  <head>
    <title>JSTL: -- forEach標(biāo)簽實(shí)例</title>
  </head>
  
  <body>
   <h4><c:out value="forEach實(shí)例"/></h4>
   <% 
           List<String>list = new ArrayList<String>(); 
           list.add(0, "貝貝"); 
           list.add(1, "晶晶"); 
           list.add(2, "歡歡"); 
           list.add(3, "瑩瑩"); 
           list.add(4, "妮妮"); 
           request.setAttribute("list", list); 
    %>
    <B><c:out value="不指定begin和end的迭代:" /></B><br>
    <%--不使用begin和end的迭代褐筛,從集合的第一個(gè)元素開(kāi)始类少,遍歷到最后一個(gè)元素。 --%>
    <c:forEach var="fuwa" items="${list}">
         <c:out value="${fuwa}"/><br/>
    </c:forEach>
    
    <B><c:out value="指定begin和end的迭代:" /></B><br>
    <%--指定begin的值為1渔扎、end的值為3硫狞、step的值為2,
        從第二個(gè)開(kāi)始首先得到晶晶晃痴,每?jī)蓚€(gè)遍歷一次残吩,
        則下一個(gè)顯示的結(jié)果為瑩瑩,end為3則遍歷結(jié)束倘核。 --%>
    <c:forEach var="fuwa" items="${list}" begin="1" end="3" step="2">
         <c:out value="${fuwa}"/><br/>
    </c:forEach>
    
    <B><c:out value="輸出整個(gè)迭代的信息:" /></B><br>
    <%--指定varStatus的屬性名為s泣侮,并取出存儲(chǔ)的狀態(tài)信息 --%>
    <c:forEach var="fuwa" 
               items="${list}" 
               begin="3" 
               end="4" 
               varStatus="s" 
               step="1">
          <c:out value="${fuwa}" />的四種屬性:<br>
             所在位置,即索引:<c:out value="${s.index}" /><br>
             總共已迭代的次數(shù):<c:out value="${s.count}" /><br>
             是否為第一個(gè)位置:<c:out value="${s.first}" /><br>
             是否為最后一個(gè)位置:<c:out value="${s.last}" /><br>  
    </c:forEach>
  </body>
</html>

JSTLjar包依賴(lài)

 <dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>javax.servlet-api</artifactId>
     <version>3.1.0</version>
</dependency>
<dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>jsp-api</artifactId>
     <version>2.0</version>
     <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
     <artifactId>jstl</artifactId>
     <version>1.2</version>
</dependency>

前兩個(gè)是servlet依賴(lài)紧唱,第三個(gè)是jstl的jar活尊,版本為1.2

在實(shí)際開(kāi)發(fā)中,判斷標(biāo)簽和循環(huán)標(biāo)簽用的最多琼蚯,這兩個(gè)務(wù)必要認(rèn)真掌握酬凳,才能在實(shí)際開(kāi)發(fā)中游刃有余。

源碼下載

本例子詳細(xì)源碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末遭庶,一起剝皮案震驚了整個(gè)濱河市宁仔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌峦睡,老刑警劉巖翎苫,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異榨了,居然都是意外死亡煎谍,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)龙屉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)呐粘,“玉大人满俗,你說(shuō)我怎么就攤上這事∽麽” “怎么了唆垃?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)痘儡。 經(jīng)常有香客問(wèn)我辕万,道長(zhǎng),這世上最難降的妖魔是什么沉删? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任渐尿,我火速辦了婚禮,結(jié)果婚禮上矾瑰,老公的妹妹穿的比我還像新娘砖茸。我一直安慰自己,他們只是感情好殴穴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布渔彰。 她就那樣靜靜地躺著,像睡著了一般推正。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宝惰,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天植榕,我揣著相機(jī)與錄音,去河邊找鬼尼夺。 笑死尊残,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的淤堵。 我是一名探鬼主播寝衫,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拐邪!你這毒婦竟也來(lái)了慰毅?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤扎阶,失蹤者是張志新(化名)和其女友劉穎汹胃,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體东臀,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡着饥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惰赋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宰掉。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出轨奄,到底是詐尸還是另有隱情孟害,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布戚绕,位于F島的核電站纹坐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏舞丛。R本人自食惡果不足惜耘子,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望球切。 院中可真熱鬧谷誓,春花似錦、人聲如沸吨凑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鸵钝。三九已至糙臼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恩商,已是汗流浹背变逃。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怠堪,地道東北人揽乱。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像粟矿,于是被迫代替她去往敵國(guó)和親凰棉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • JSTL標(biāo)簽庫(kù)的使用是為彌補(bǔ)html標(biāo)簽的不足陌粹,規(guī)范自定義標(biāo)簽的使用而誕生的撒犀。使用JSLT標(biāo)簽的目的就是不希望在j...
    重山楊閱讀 643評(píng)論 0 3
  • 溫馨提示:本文閱讀需要8分鐘,建議收藏后閱讀掏秩! EL表達(dá)式很厲害對(duì)不對(duì) 今天我們來(lái)一個(gè)更厲害的JSTL “為什么說(shuō)...
    Java聯(lián)盟閱讀 1,261評(píng)論 0 1
  • JSP 基本結(jié)構(gòu)JSP 頁(yè)面組成:模板文本(HTML,XML,純文本)绘证,JSP 元素;JSP 元素:腳本元素哗讥,指令...
    jslancer閱讀 848評(píng)論 0 11
  • 如圖所示的多表視圖是一個(gè)很常用的東西嚷那,之前我是用UIScrollView和UITableViewControlle...
    Sheepy閱讀 4,196評(píng)論 8 40
  • 巫麒麟閱讀 248評(píng)論 0 3