一、JSTL簡介1、什么是JSTLJSTL是Java中的一個定制標(biāo)記庫集。(這個標(biāo)記庫集不需要自己編寫,可以直接使用) 2、為什么要使用JSTL
用事實告訴你為什么使用JSTL:
實現(xiàn):
但是,使用JSTL效果如下:
3、JSTL環(huán)境搭建
JSTL的下載: 下載地址:http://archive./dist/jakarta/taglibs/standard/binaries/ 下載文件:jakarta-taglibs-standard-1.1.2.zip————2004-10-25 20:57 933K 解壓文件后,在lib文件夾會獲得兩個jar包: standard.jar和jstl.jar 需要把這兩個jar包導(dǎo)入到項目中,注意: 載入外來包,我們不介意采?。河覔繇椖俊狟uild Path方式,因為這樣只是引入了一個jar包的link進來,如果把項目挪動位置或者把jar包刪除了,則報錯。所以我們推薦直接把要載入的文件復(fù)制到:項目——WebRoot\WEB-INF\lib里面,不要忘了把jar包選中——右鍵——Build Path----Add to Build Path。這樣做可以讓jar包隨著項目走,綁在了一起。 二、EL表達式配合使用JSTL
1、JSTL小程序如果要使用JSTL,要先導(dǎo)入JSTL的標(biāo)簽庫,如果要進行頁面的輸出的話,需要使用<c:out>輸出標(biāo)簽。<c:out>是屬于JSTL核心標(biāo)簽的一個。 導(dǎo)入核心標(biāo)簽庫: <%@ taglib uri="http://java./jsp/jstl/core" prefix="c"%> Ps:在uri中之所以能找到該http,是因為導(dǎo)入了上面兩個jar,否則是找不到的。prefix="c",里面的名字可以自定義,一般為“c”。 <c:out value="輸出內(nèi)容"></c:out> 具體如下:
2、JSTL標(biāo)簽的四大分類及JSTL函數(shù)
JSTL標(biāo)簽中Value中的值其實可以輸出變量和常量。其中常量可以直接輸出,變量需要通過EL表達式去獲取。
3、EL表達式什么是EL表達式? 全名是Expression Language,常常配合jstl標(biāo)簽庫使用,使得JSP頁面更直觀,寫法更簡單。 比如:普通寫法: EL表達式寫法: EL表達式的格式: 用美元符號“$”定界,內(nèi)容包括在花括號“{}”中,即${表達式}。 注意“.”和“[]”運算符:
但是:以下兩種情況,兩者不通用。
4、EL變量
如:<c:out value="${temp}"></c:out> 如果沒有做范圍的限定,會依據(jù)默認從小到大開始搜索,如果還是找不到,則輸出空字符串。
5、EL自動類型轉(zhuǎn)換普通情況:
如果是用EL表達式:
6、EL隱式對象
7、EL運算符
對empty舉例: <% String username="null"; request.setAttribute("username", username); %> <c:out value="${empty username}"></c:out> Ps:如果username為null或者"",則返回true;如果username為"有內(nèi)容",則返回false。 el表達式中empty運算符對字符串為Null,及空字符串都返回 TRUE。 三、JSTL核心標(biāo)簽的使用
1、out標(biāo)簽(表達式控制標(biāo)簽)out標(biāo)簽的作用:
2、set標(biāo)簽(表達式控制標(biāo)簽)set的標(biāo)簽的作用:
Person類:
將Person類實例化
實例化話后的變量名叫person。那實例化后如何通過set標(biāo)簽向person中賦值。 變量的賦值需要配合target屬性指定對象并通過property屬性指定要賦值給對象的哪個屬性。
3、remove標(biāo)簽(表達式控制標(biāo)簽)remove標(biāo)簽的用法:
比如:
此時運行結(jié)果就輸出不了firstName的值了。 4、catch標(biāo)簽(表達式控制標(biāo)簽)catch標(biāo)簽的用法:
輸出結(jié)果:
5、if標(biāo)簽(流程控制標(biāo)簽)if標(biāo)簽的用法:
比如:根據(jù)用戶輸入的成績進行等級判斷
運行結(jié)果: 用戶什么都沒輸入的時候,默認進來是false
輸入90:
輸入80:
6、choose、when、otherwise(流程控制標(biāo)簽)choose、when、otherwise 標(biāo)簽的作用:
綜上所述通常有以下兩種語法結(jié)構(gòu):
比如: <!-- choose、when、otherwise --> <c:choose> <c:when test="${param.score<=100 && param.score>=60 }"> <c:out value="及格"></c:out> </c:when> <c:when test="${param.score<60 && param.score>=0 }"> <c:out value="不及格"></c:out> </c:when> <c:otherwise> <c:out value="請檢查你的輸入!"></c:out> </c:otherwise> </c:choose> ps:用法類似于switch——case——default。
比如:
7、forEach(循環(huán)控制標(biāo)簽)forEach標(biāo)簽的作用:
常用用法1-全部遍歷:
例子:
常用用法2-部分遍歷:(begin end)
index值是從0開始的。 例子:
常用用法3-部分遍歷中指定步長(step)
例子: <!-- 用法三:部分遍歷并帶步長 --> <c:forEach var="fruit" items="${fruits}" begin="1" end="3" step="2"> <c:out value="${fruit}"></c:out><br> </c:forEach> Ps:step默認值:1。 常用用法4-部分遍歷時輸出元素的狀態(tài)(varStatus)
例子: <!-- 用法四:部分遍歷并帶狀態(tài) --> <c:forEach var="fruit" items="${fruits}" begin="1" end="3" varStatus="fru"> <c:out value="${fruit}——四個屬性:"></c:out><br> <c:out value="index屬性:${fru.index}"></c:out><br> <c:out value="count屬性:${fru.count}"></c:out><br> <c:out value="first屬性:${fru.first}"></c:out><br> <c:out value="last屬性:${fru.last}"></c:out><br> <c:out value="----------"></c:out><br> </c:forEach> PS:index從0開始;count從1開始;first是否第一個(boolean);last是否最后一個(boolean)。 8、forTokens(循環(huán)控制標(biāo)簽)forTokens標(biāo)簽的用法:
例子:
輸出:
注:forTokens還有如下屬性,與forEach的屬性相同。
9、import(URL操作標(biāo)簽)import標(biāo)簽的用法:
impor各屬性含義:
例子: 1 <!-- import標(biāo)簽用法 --> 2 <!-- 導(dǎo)入網(wǎng)絡(luò)上的絕對路徑 --> 3 <c:catch var="error0"> 4 <c:import url="http://www.imooc.com"></c:import> 5 </c:catch> 6 <c:out value="${error0}"></c:out> 7 <hr> 8 <!-- 導(dǎo)入相對路徑文件 --> 9 <c:catch var="error1"> 10 <c:import url="Test.txt" charEncoding="gbk"></c:import> 11 </c:catch> 12 <c:out value="${error1}"></c:out> Ps:由于可能網(wǎng)絡(luò)中斷導(dǎo)致拋出異常,所以常常把import標(biāo)簽放在catch標(biāo)簽里。 1 <!-- var及scope用法 --> 2 <c:catch var="error2"> 3 <c:import url="Test.txt" var="test" scope="session" charEncoding="gbk"></c:import> 4 </c:catch> 5 <c:out value="${error2}"></c:out><br> 6 <c:out value="import標(biāo)簽存儲的test字符串變量值:${sessionScope.test}"></c:out> 7 8 <!-- context屬性用法 --> 9 <c:catch var="error3"> 10 <c:import url="/index1.jsp" context="/Test1"></c:import> 11 </c:catch> 12 <c:out value="${error3}"></c:out><br> Ps1:如果沒定義var,則可以直接輸出;如果定義了var,則用c:out標(biāo)簽輸出。 注意:
10、redirect標(biāo)簽(URL操作標(biāo)簽詳解)redirect標(biāo)簽的用法:
注意:重定向的話瀏覽器的url都變?yōu)橹囟ㄏ虻膗rl,而import只是載入,瀏覽器url不變。 例子:
重定向把參數(shù)值都帶到URL中去了:
獲取值:
11、url標(biāo)簽(URL操作標(biāo)簽)
<!-- url標(biāo)簽用法 --> <c:if test="${1<2}"> <c:set var="partUrl">temp.jsp</c:set> </c:if> <c:url value="http://localhost:8080/Test/${partUrl}" var="newUrl" scope="session"></c:url> <a href="${newUrl}">New URL</a> 四、JSTL函數(shù)的使用
1、contains函數(shù)、startsWith、endsWithcontains函數(shù)表示加入的字符串是否包含字串,返回一個boolean類型的值。
1 <!-- JSTL函數(shù)使用 --> 2 <c:out value="“Hello World”字符串中是否包含“Hello”?${fn:contains('Hello World','Hello')}"></c:out> 3 <hr> 4 <c:out value="“Hello World”字符串中是否包含“ABCD”?${fn:contains('Hello World','ABCD')}"></c:out> 5 <hr> 6 <c:out value="“Hello World”字符串中是否包含“hello”(忽略大小寫)?${fn:containsIgnoreCase('Hello World','hello')}"></c:out> 7 <hr> 8 <c:out value="“Hello”是否在“Hello World”字符串開頭?${fn:startsWith('Hello World','Hello')}"></c:out> 9 <hr> 10 <c:out value="“world”是否在“Hello World”字符串尾部?${fn:endsWith('Hello World','world')}"></c:out> Ps1:配合使用: 2、escapeXml、indexOf1 <!-- 不會輸出<book>標(biāo)簽 --> 2 <book>書</book> 3 <hr> 4 <!-- 可輸出標(biāo)簽但會出現(xiàn)轉(zhuǎn)義問題 --> 5 <c:out value="${fn:escapeXml('<book>書</book>')}"></c:out> 6 <hr> 7 <!-- 可輸出標(biāo)簽且不會出現(xiàn)轉(zhuǎn)義問題 --> 8 <c:out value="<book>書</book>"></c:out> 9 <hr> 10 <!-- indexOf函數(shù)用法 --> 11 <c:out value="“Hello World”字符串“l(fā)lo”出現(xiàn)的index值:${fn:indexOf('Hello World','llo')}"></c:out>
|
|
|
來自: Architect_home > 《jstl》