1. 程式人生 > >10.javaweb核心標簽庫詳解

10.javaweb核心標簽庫詳解

bean對象 靜態 管理 請求 技術 範例 begin odin url

一、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>標簽的最大好處

10.javaweb核心標簽庫詳解