Jstl標籤彙總

JSTL的核心標籤庫標籤共13個,使用這些標籤可以完成JSP頁面的基本功能,減小編碼工做。
html

  從功能上能夠分爲4類:表達式控制標籤、流程控制標籤、循環標籤、URL操做標籤。
    (1)表達式控制標籤out標籤、set標籤、remove標籤、catch標籤
    (2)流程控制標籤if標籤、choose標籤、when標籤、otherwise標籤
    (3)循環標籤forEach標籤、forTokens標籤
    (4)URL操做標籤import標籤、url標籤、redirect標籤、param標籤 java

在JSP頁面引入核心標籤庫的代碼爲: 服務器

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

或者 app

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

如下將對幾個主要的經常使用的標籤用法做一個彙總:參考網友的一些文章 函數

out標籤、set標籤、remove標籤、catch標籤。
if標籤、choose標籤、when標籤、 post

forEach標籤、 ui

其餘的標籤不做彙總! 編碼

 

表達式控制標籤——out標籤使用總結

<c:out>標籤

<c:out>標籤主要是用來輸出數據對象(字符串、表達式)的內容或結果

使用Java腳本輸出時常使用的方式爲: <% out.println(「字符串」)%> 或者 <%=表達式%> ,

爲了不暴露邏輯代碼會盡可能減小頁面中的Java腳本,使用<c:out>標籤就能夠實現以上功能。

1 <c:out value=」字符串」>

2 <c:out value=」EL表達式」>

JSTL的使用是和EL表達式分不開的,EL表達式雖然能夠直接將結果返回給頁面,但有時獲得的結果爲空,<c:out>有特定的結果處理功能,EL的單獨使用會下降程序的易讀性,建議把EL的結果輸入放入<c:out>標籤中。

<c:out>標籤的語法

<c:out>標籤的使用有兩種語法格式:
  【語法1】:<c:out value=」要顯示的數據對象」 [escapeXml=」true|false」] [default=」默認值」]/>
  【語法2】:<c:out value=」要顯示的數據對象」 [escapeXml=」true|false」]>默認值</c:out>
  這兩種方式沒有本質的區別,只是格式上的差異。[escapeXml=」true|false」] [default=」默認值」]

這些使用[]屬性表示是否是必須的。

<c:out>標籤的屬性

 

 

<c:out>標籤的使用範例

首先在頁面頭引入

<%--引入JSTL核心標籤庫 --%>

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

如今要改引用,能打印出空值,不然${null}報錯

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

 

<!--引入fn函數庫-->

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

<%@ page language="java"  import="java.util.*"%>

 

代碼:

 

    <ul>

<%-- 直接輸出一個字符--%>

<li>(1)<c:out value="jstl的out標籤的使用"/></li>

<li>(2)<c:out value="<a href='http://www.cnblogs.com/'>點擊</a>"></c:out></li>

<%--escapeXml="false"表示value值中的html標籤不進行轉義,而是直接輸出 --%>

<li>(3)

<c:out value="<a href='http://www.cnblogs.com/'>點擊</a>"  escapeXml="false"/>

</li>

<%--(4)字符串中有轉義字符,但在默認狀況下沒有轉換。 --%>

<li>(4)<c:out value="<未使用字符轉義>" /></li>

<%--(5)使用了轉義字符<和>分別轉換成<和>符號。 --%>

<li>(5)<c:out value="<使用字符轉義>" escapeXml="false"></c:out></li>

<%--(6)設定了默認值,從EL表達式${null}獲得空值,因此直接輸出設定的默認值。 --%>

<li>(6)<c:out value="${data}">使用了默認值</c:out></li>

<%--(7)未設定默認值,輸出結果爲空。 --%>

<li>(7)<c:out value="${null}"></c:out></li>

<%--(8)設定了默認值,從EL表達式${null}獲得空值,因此直接輸出設定的默認值。 --%>

<li>(8)<c:out value="${null}" default="默認值"/></li>

<%--(9)未設定默認值,輸出結果爲空。 --%>

<li>(9)<c:out value="${null}"/></li>

</ul>

 

 

表達式控制標籤——set標籤使用總結

<c:set>標籤的功能

<c:set>標籤用於把某一個對象存在指定的域範圍內,或者將某一個對象存儲到Map或者JavaBean對象中。

<c:set>標籤的語法

 

<c:set>標籤的編寫共有4種語法格式。
  語法1:存值,把一個值放在指定的域範圍內。
   <c:set value=」值1」 var=」name1」 [scope=」page|request|session|application」]/>
    含義:把一個變量名爲name1值爲「值1」的變量存儲在指定的scope範圍內。
  語法2:
    <c:set var=」name2」 [scope=」page|request|session|application」]>
      值2
    </c:set>
    含義:把一個變量名爲name2,值爲值2的變量存儲在指定的scope範圍內。
  語法3:
    <c:set value=」值3」 target=」JavaBean對象」 property=」屬性名」/>
    含義:把一個值爲「值3」賦值給指定的JavaBean的屬性名。至關與setter()方法。
  語法4:
    <c:set target=」JavaBean對象」 property=」屬性名」>
      值4
    </c:set>
    含義:把一個值4賦值給指定的JavaBean的屬性名。
  從功能上分語法1和語法二、語法3和語法4的效果是同樣的,只是把value值放置的位置不一樣,至於使用那個根據我的的喜好,語法1和語法2是向scope範圍內存儲一個值,語法3和語法4是給指定的JavaBean賦值。

 

<c:set>標籤的屬性

 

 

<c:set>標籤的使用範例

 

要引入javaBean 包中的類 元素

<%@ page import="com.dd.Person.*%>

而後實例化

<% Person person=new Person();>

//經過jsp:標籤實體化 javaBean

<jsp:useBean id="person" class="com.dd.Person" />

<c:set target="${person}" property="user" value="pp" />

以上二句,配套

 

代碼:

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>JSTL: --表達式控制標籤「set」標籤的使用</title>

</head>

 

<body>

<h3>代碼給出了給指定scope範圍賦值的示例。</h3>

<ul>

<%--經過<c:set>標籤將data1的值放入page範圍中。--%>

<li>把一個值放入page域中:

<c:set var="data1" value="xdp" scope="page" />

</li>

<%--使用EL表達式從pageScope獲得data1的值。--%>

<li>從page域中獲得值:${pageScope.data1}</li>

<%--經過<c:set>標籤將data2的值放入request範圍中。--%>

<li>把一個值放入request域中:

<c:set var="data2" value="getreq" scope="request" />

</li>

<%--使用EL表達式從request獲得data2的值。--%>

<li>從request域中獲得值:${requestScope.data2}</li>

 

<%--經過<c:set>標籤將data2的值放入session範圍中。--%>

<li>把一個值放入session域中:

<c:set var="data3" value="getreq" scope="session" />

</li>

<%--使用EL表達式從session獲得data3的值。--%>

<li>從request域中獲得值:${sessionScope.data3}</li>

<%--不指定範圍使用EL自動查找獲得值 --%>

<li>未指定scope的範圍,會從不一樣的範圍內查找獲得相應的值: ${data1},${data2},${data3}

</li>

</ul>

 

<hr/>

<h3>使用Java腳本實現以上功能</h3>

<ul>

<li>把一個值放入page域中。

<%pageContext.setAttribute("data3","xdp");%>

</li>

<li>從page域中獲得值:

<%out.println(pageContext.getAttribute("data3"));%>

</li>

<li>把一個值放入request域中。

<%request.setAttribute("data2","gacl");%>

</li>

<li>從request域中獲得值:

<%out.println(request.getAttribute("data2"));%>

</li>

<li>把一個值放入session域中。

<%session.setAttribute("name1","uy");%>

</li>

<li>從session中域獲得值:

<%out.println(session.getAttribute("name1"));%>

</li>

<%--out.println()方法與<%=%>表達式輸出功能同樣 --%>

<%-- 但使用表達式輸出(<%=%>)明顯要比使用out.println()輸出更好。 --%>

<li>

<%=session.getAttribute("name1"%>

</li>

<li>未指定scope的範圍,會從不一樣的範圍內查找獲得相應的值:

<%=pageContext.findAttribute("data1")%>

<%=pageContext.findAttribute("data2")%>

<%=pageContext.findAttribute("name1")%>

<%=pageContext.findAttribute("name2")%>

</li>

 

</ul>

 

<hr/>

<h3>操做JavaBean,設置JavaBean的屬性值</h3>

<%--設置JavaBean的屬性值,等同與setter方法,Target指向實例化後的對象,property指向要插入值的參數名。

     注意:使用target時必定要指向實例化後的JavaBean對象,也就是要跟配套使用,

     也能夠java腳本實例化,但這就失去了是用標籤的本質意義。

     使用Java腳本實例化:--%>

<jsp:useBean id="person" class="com.dd.Person" />

<%--@page import="com.dd.Person.*" --%>

<%-- Person person=new Person();--%>

<c:set target="${person}" property="user" value="pp" />

 

<h4>從Bean中得到的name值爲:<c:out value="${person.user}"></c:out></h4>

 

<h3>操做Map</h3>

<%

      Map map = new HashMap();

      request.setAttribute("map",map);

      %>

<%--將data對象的值存儲到map集合中 --%>

<c:set property="data" value="gacl" target="${map}" /> ${map.data}

</body>

 

表達式控制標籤——remove標籤使用總結

<c:remove>標籤的功能

<c:remove>標籤主要用來從指定的JSP範圍內移除指定的變量。

<c:remove>標籤的語法

<c:remove var=」變量名」 [scope=」page|request|session|application」]/>
  其中var屬性是必須的,scope能夠以省略。

 

<c:remove>標籤的使用範例

<c:set var="name" scope="session">fdas</c:set>

<%--使用remove標籤移除age變量 --%>

<c:remove var="name"/>

<c:out value="${sessionScope.name}"/>

 

表達式控制標籤——catch標籤使用總結

<c:catch>標籤用於捕獲嵌套在標籤體中的內容拋出的異常。

 

<c:catch>標籤的語法

 其語法格式以下:<c:catch [var="varName"]>容易產生異常的代碼</c:catch>
 var屬性用於標識<c:catch>標籤捕獲的異常對象,它將保存在page這個Web域中。

 

<c:catch>標籤的使用範例

<%--把容易產生異常的代碼放在<c:catch></c:catch>中,

自定義一個變量error1用於存儲異常信息 --%>

<c:catch var="error1">

  <%--實現了一段異常代碼,向一個不存在的JavaBean中插入一個值--%>

  <c:set target="person" property="hao"></c:set>

</c:catch>

<%--用EL表達式獲得error1的值,並使用<c:out>標籤輸出 --%>

異常:<c:out value="${error1}" /><br />

異常 errorInfo.getMessage:<c:out value="${error1.message}" /><br />

 

流程控制標籤——if標籤使用總結

<c:if>標籤的功能

<c:if>標籤和程序中的if語句做用相同,用來實現條件控制。

<c:if>標籤的語法

語法1】:沒有標籤體內容(body)

<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>
語法2】:有標籤體內容

<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
          標籤體內容
   </c:if>

【參數說明】:
    (1)test屬性用於存放判斷的條件,通常使用EL表達式來編寫。
    (2)var屬性用來存放判斷的結果,類型爲true或false。
    (3)scopes屬性用來指定var屬性存放的範圍。

 

<c:if>標籤的屬性

 

 

 

 

<c:if>標籤的使用範例

<hr />

 <form action="tag.jsp" method="post">

  <input type="text" name="uname" value="${param.uname}" />

  <input type="submit" value="登陸" />

 </form>

 <%--使用if標籤進行判斷並把檢驗後的結果賦給adminchock,存儲在默認的page範圍中。 --%>

  <c:if test="${param.uname=='admin'}" var="adminchock">

  <%--能夠把adminchock的屬性範圍設置爲session,這樣就能夠在其餘的頁面中獲得adminchock 的值,

   使用<c:if text=」${adminchock}」><c:if>判斷,實現不一樣的權限。

${param.uname}最後發現,須要查一下:
EL表達式中的${param.name} 等價於 request.getParamter("name"),

這兩種方法通常用於服務器從頁面或者客戶端獲取的內容

 --%>

    <c:out value="管理員歡迎您!"/>

  </c:if>

  <%--使用EL表達式獲得adminchock的值,若是輸入的用戶名爲admin將顯示true。 --%>

  ${adminchock}

 

 

流程控制標籤——choose標籤、when標籤、otherwise標籤配合使用講解

<c:choose>、<c:when>和<c:otherwise>標籤的功能

<c:choose>、<c:when>和<c:otherwise>這3個標籤一般狀況下是一塊兒使用的,<c:choose>標籤做爲<c:when>和<c:otherwise>標籤的父標籤來使用。

使用<c:choose>,<c:when>和<c:otherwise>三個標籤,能夠構造相似 「if-else if-else」 的複雜條件判斷結構。

語法

<c:choose>
         <c:when test="條件1">
      //業務邏輯1
         <c:when>
   <c:when test="條件2">
      //業務邏輯2
         <c:when>
   <c:when test="條件n">
      //業務邏輯n
         <c:when>
         <c:otherwise>
      //業務邏輯
   </c:otherwise>
 </c:choose>

 

 

使用範例

<%--經過set標籤設定score的值爲85 --%>

<c:set var="score" value="85"/>

<c:choose>

<%--使用<c:when>進行條件判斷。

若是大於等於90,輸出「您的成績爲優秀」;

若是大於等於70小於90,輸出「您的成績爲良好」;

大於等於60小於70,輸出「您的成績爲及格」;

其餘(otherwise)輸出「對不起,您沒能經過考試」。

--%>

<c:when test="${score>=90}">

你的成績爲優秀!

</c:when>

<c:when test="${score>70 && score<90}">

您的成績爲良好!

</c:when>

<c:when test="${score>60 && score<70}">

您的成績爲及格

</c:when>

<c:otherwise>

對不起,您沒有經過考試!

</c:otherwise>

</c:choose>

 

 

循環標籤——forEach標籤使用總結

<c:forEach>標籤的功能

該標籤根據循環條件遍歷集合(Collection)中的元素。

 

<c:forEach>標籤的語法

<c:forEach 
      var=」name」 
      items=」Collection」 
      varStatus=」StatusName」 
      begin=」begin」 
      end=」end」 
      step=」step」>
     本體內容
</c:forEach>

【參數解析】:
   (1)var設定變量名用於存儲從集合中取出元素。
   (2)items指定要遍歷的集合。
   (3)varStatus設定變量名,該變量用於存放集合中元素的信息。    
   (4)begin、end用於指定遍歷的起始位置和終止位置(可選)。
   (5)step指定循環的步長。

 

<c:forEach>標籤屬性

 

 

 

 

其中varStatus有4個狀態屬性,以下表所示:

 

 

<c:forEach>使用範例

要在頁面引入

<%@page import="java.util.*"%>

 

<h4/>

<c:out="foreach實例"/>

<%

List<Stringlist=new ArrayList<>();

list.add('ss');

list.add('ss');

list.add('ss');

list.add('ss');

list.add('ss');

request.setAttribute("list",list);

%>

<br/>

<c:out value="不指定begin和end的迭代:"/>

<%--不使用begin和end的迭代,從集合的第一個元素開始,遍歷到最後一個元素。 --%>

<c:forEach var="fa" items="${list}">

<c:out value="${fa}"/>

</c:forEach>

<c:out value="指定begin和end的迭代:"/>

<%--

指定begin的值爲一、end的值爲三、step的值爲2,

從第二個開始首先獲得晶晶,每兩個遍歷一次,

則下一個顯示的結果爲瑩瑩,end爲3則遍歷結束。

--%>

<c:forEach var="fa" items="${list}" begin="1" end="3" step="2">

<c:out value="${fa}"/>

</c:forEach>

<B><c:out value="輸出整個迭代的信息:" /></B><br>

<%--指定varStatus的屬性名爲s,並取出存儲的狀態信息 --%>

<c:forEach var="fa" items="${list}" begin="3" end="4"

VarStatus="s" step="1">

<c:out value="${fa}">四種屬性</c:out>

所在位置,即索引:<c:out value="${s.index}" /><br>

總共已迭代的次數:<c:out value="${s.count}" /><br>

是否爲第一個位置:<c:out value="${s.first}" /><br>

是否爲最後一個位置:<c:out value="${s.last}" /><br>  

</c:forEach>

 

 



相關文章
相關標籤/搜索