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>
功能:用來輸出數據對象(字符串或表達式)的內容或結果。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>
參數說明:(1)test屬性用於存放判斷條件,一般為EL表達式
(2)var屬性指定存放判斷結果的屬性名,true或false
(3)scope屬性用來指定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核心標簽庫詳解