10.javaweb核心標簽庫詳解


一、JSTL簡介及在項目中安裝配置

1,  簡介

 

使用JSTL標簽的目的就是不希望jsp中出現java邏輯代碼

分類

 

2,  JSTL的安裝配置

首先將jar包中的各個標簽庫配置文件拷貝到項目WEB-INF目錄下,以供使用

 

然后再將整個jar包拷貝至tomcat/lib目錄下

 

3,  JSTL簡單使用

 

為了方便使用,也可以統一在web.xml文件中配置標簽庫的映射路徑

 

此后,可以通過映射路徑名加載標簽庫

 

二、核心標簽庫

1,要求:利用核心標簽庫提供的主要標簽完成判斷、迭代、輸出等常見操作

2,主要標簽

 

3.表達式控制語句

3.1<c:out>標簽使用:代替java腳本中的<% out.println(“字符串”)%>或<%=表達式%>

 

功能:用來輸出數據對象(字符串或表達式)的內容或結果。JSTL的使用和EL表達式分不開,EL雖然可以將結果直接返回給頁面,但有時為空,<c:out>對此有特定的功能處理(默認值)

語法:

 

EscapXml表示是否將一些特殊字符進行HTML編碼后輸出,默認為true

 

使用范例

 

3.2<c:set>標簽的使用

 

功能:用於把一個對象存在指定的域范圍內,或者把一個對象存到指定的Map或JavaBean對象中

 

語法:

語法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和語法2、語法3和語法4的效果是一樣的,只是把value值放置的位置不同,至於使用那個根據個人的喜愛,語法1和語法2是向scope范圍內存儲一個值,語法3和語法4是給指定的JavaBean賦值。

 

標簽屬性:

 

使用范例

    將對象存在指定的域范圍中

   

設置javaBean屬性值

 

    將一個data對象的值存到Map集合中

 

    相當於插入一對鍵值,然后可以通過鍵找到相應值

3.3<c:remove>標簽的使用

功能:從指定JSP范圍移除指定屬性

 

語法:<c:remove var=”變量名” [scope=”page|request|session|application”]>其中scope可以省略

 

使用范例

 

3.4<c:catch>標簽的使用

功能:用於捕獲嵌套在標簽體中的內容拋出的異常

 

語法:<c:catch [var=”varName”]>可能產生異常的代碼</c:catch>。var屬性用於標識捕獲的異常,這個異常將保存在page域中

使用范例

 

3.5<c:if>標簽的使用

 

功能:與程序if語句相同

 

語法:

    語法一:沒有標簽體的

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

    語法二:有標簽體的

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

    參數說明:(1test屬性用於存放判斷條件,一般為EL表達式

              2var屬性指定存放判斷結果的屬性名,truefalse

              3scope屬性用來指定var屬性存放的范圍

    

     使用范例:設計一個登陸頁面tagTest.jsp,將登陸情況保存在session域中,並根據登陸情況做出相應反應

    

 

     輸入admin,點擊登陸

    

 

     3.6流程控制標簽:<c:choose>,<c:when>,<c:otherwise>完成switch

     語法:

<c:choose>作為父標簽

<c:when test=”條件一”>//業務邏輯</c:when>

<c:when test=”條件二”>//業務邏輯</c:when>

<c:otherwise>//業務邏輯</c:otherwise>

 

使用范例:

 

3.7循環標簽:<c:forEach>

 

功能:根據循環條件遍歷集合中的元素,如果不設置集合,則與for()循環功能相同與從begin開始循環執行標簽體直到end,並將循環值保存在var中

語法:

<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指定循環的步長(即每次循環經過的元素個數)。

    

varStatus有四個狀態屬性

 

使用范例

 

結果

 

不遍歷集合,僅當作循環功能使用,以下jsp打印十行十列表格,表格內容為行列乘積。如果與<c:if>連用,可實現while()循環的功能

 

 

3.8循環標簽<c:forTokens>

 

功能:根據指定的分隔符將字符串分割成子串數組然后再迭代它們,如果未指定分隔符,則將整個元素截取,在實際應用中用於除去某些字符在頁面中顯示

 

語法:

   <c:forTokens items=”strigOfTokens”
            delims=”delimiters”
            [var=”name”
            begin=”begin”
            end=”end”
            step=”len”
            varStatus=”statusName”] >
        本體內容
       </c:forTokens>

【參數說明】
  (1)items指定被迭代的字符串。
  (2)delims指定使用的分隔符。
  (3)var指定用來存放遍歷到的成員。
  (4)begin指定遍歷的開始位置(int型從取值0開始)。
  (5)end指定遍歷結束的位置(int型,默認集合中最后一個元素)。
  (6)step遍歷的步長(大於0的整型)。
  (7)varStatus存放遍歷到的成員的狀態信息。

 

使用范例

 

 

3.9<c:import>標簽的使用

 

功能:該標簽可以把其他靜態或動態文件包含到本JSP頁面,與<jsp:include>的區別為:<jsp:include>只能包含同一個web應用中的文 件。而<c:import>可以包含其他web應用中的文件,甚至是網絡上的資源。

 

 

語法:

    【語法1】:
<c:import
    url=”url”
    [context=”context”]
    [value=”value”]
    [scope=”page|request|session|application”]
    [charEncoding=”encoding”]/>

【語法2】:
<c:import
    url=”url”
    varReader=”name”
    [context=”context”]
    [charEncoding=”encoding”]/>

【參數說明】:
(1)URL為資源的路徑,當引用的資源不存在時系統會拋出異常,因此該語句應該放在<c:catch></c:catch>語句塊中捕獲。
(2)引用資源有兩種方式:絕對路徑和相對路徑。
    使用絕對路徑的示例如下:<c:import url=”http://www.baidu.com”>
    使用相對路徑的示例如下:<c:import url=”aa.txt”>,aa.txt放在同一文件目錄。
(3)如果以“/”開頭表示應用的根目錄下。例如:tomcat應用程序的根目錄文件夾為webapps。導入webapps下的文件bb.txt的編寫方式為:<c:import url=”/bb.txt”>
    如果訪問webapps管理文件夾中其他web應用就要用context屬性。
(4)context屬性用於在訪問其他web應用的文件時,指定根目錄。例如,訪問root下的index.jsp的實現代碼為:<c:import url=”/index.jsp” context=”/root”>
    等同於webapps/root/index.jsp
(5)var、scope、charEncoding、varReader是可選屬性。

使用范例

       使用絕對路徑導入網頁

 

 

使用相對路徑引用本應用中的文件

 

將導入的文件存儲在域中,然后通過<c:out>輸出

 

 

3.10<c:url>標簽

 

功能; 標簽用於在JSP頁面中構造一個URL地址,其主要目的是實現URL重寫。

 

語法:

     【語法1】:指定一個url不做修改,可以選擇把該url存儲在JSP不同的范圍中。
<c:url

value=”value”
    [var=”name”]
    [scope=”page|request|session|application”]
    [context=”context”]/>

【語法2】:配合 <c:param>標簽給url加上指定參數及參數值,可以選擇以name存儲該url。
                     <c:url
                  value=”value”
                  [var=”name”]
                  [scope=”page|request|session|application”]
                  [context=”context”]>
                <c:param name=”參數名” value=”值”>
                     </c:url>

 

 

            使用實例(在瀏覽器可見注釋方法中,不能有特殊字符出現,否則可能報錯)

             

 

        點擊”百度首頁(不帶參數)”

       

        點擊”百度首頁(帶參數)”

       

 

 

   3.11<c:redirect>標簽

  

   功能:該標簽用來實現請求的重定向。同時可以配合使用<c:param>標簽在url中加入指定的參數。

  

   語法:

   【語法1】:
<c:redirect url=”url” [context=”context”]/>
【語法2】:
<c:redirect url=”url”[context=”context”]>
    <c:param name=”name1” value=”value1”>
</c:redirect>
【參數說明】:
(1)url指定重定向頁面的地址,可以是一個string類型的絕對地址或相對地址。
(2)context用於導入其他web應用中的頁面。當要使用相對路徑重定向到同一服務器下的其他web資源時,context屬性指定其他web應用程序的名稱

     使用范例

    

     當服務器解析此jsp時會把地址重定向到百度首頁,並且傳入參數

    

 

     3.12<c:param>標簽

      在JSP頁面進行URL的相關操作時,經常要在URL地址后面附加一些參數。<c:param>標簽可以嵌套 在<c:import>、<c:url>或<c:redirect>標簽內,為這些標簽所使用的URL地址附加參數。
  <c:param>標簽在為一個URL地址附加參數時,將自動對參數值進行URL編碼,例如,如果傳遞的參數值為“中國”, 則將其轉換為“%d6%d0%b9%fa”后再附加到URL地址后面,這也就是使用<c:param>標簽的最大好處


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM