JSTL標(biāo)簽庫的使用是為彌補(bǔ)html標(biāo)簽的不足须眷,規(guī)范自定義標(biāo)簽的使用而誕生的令蛉。使用JSLT標(biāo)簽的目的就是不希望在jsp頁面中出現(xiàn)Java邏輯代碼
JSTL標(biāo)簽庫的分類
? 核心標(biāo)簽(用得最多)
? 國際化標(biāo)簽(I18N格式化標(biāo)簽)
? 數(shù)據(jù)庫標(biāo)簽(SQL標(biāo)簽驶赏,很少使用)
? XML標(biāo)簽(幾乎不用)
? JSTL函數(shù)(EL函數(shù))
核心標(biāo)簽庫使用說明
JSTL的核心標(biāo)簽庫標(biāo)簽共13個(gè)聘殖,使用這些標(biāo)簽?zāi)軌蛲瓿蒍SP頁面的基本功能凡人,減少編碼工作锋谐。
從功能上可以分為4類:表達(dá)式控制標(biāo)簽、流程控制標(biāo)簽帝际、循環(huán)標(biāo)簽蔓同、URL操作標(biāo)簽。
(1)表達(dá)式控制標(biāo)簽:out標(biāo)簽蹲诀、set標(biāo)簽斑粱、remove標(biāo)簽、catch標(biāo)簽脯爪。
(2)流程控制標(biāo)簽:if標(biāo)簽珊佣、choose標(biāo)簽、when標(biāo)簽披粟、otherwise標(biāo)簽咒锻。
(3)循環(huán)標(biāo)簽:forEach標(biāo)簽、forTokens標(biāo)簽守屉。
(4)URL操作標(biāo)簽:import標(biāo)簽惑艇、url標(biāo)簽、redirect標(biāo)簽、param標(biāo)簽滨巴。
在JSP頁面引入核心標(biāo)簽庫的代碼為:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1思灌、表達(dá)式控制標(biāo)簽——out標(biāo)簽使用總結(jié)
1.1、<c:out>標(biāo)簽的功能
<c:out>標(biāo)簽主要是用來輸出數(shù)據(jù)對(duì)象(字符串恭取、表達(dá)式)的內(nèi)容或結(jié)果泰偿。
在使用Java腳本輸出時(shí)常使用的方式為: <% out.println(“字符串”)%> 或者 <%=表達(dá)式%> ,在web開發(fā)中蜈垮,為了避免暴露邏輯代碼會(huì)盡量減少頁面中的Java腳本耗跛,使用<c:out>標(biāo)簽就可以實(shí)現(xiàn)以上功能。
1 <c:out value=”字符串”>
2 <c:out value=”EL表達(dá)式”>
JSTL的使用是和EL表達(dá)式分不開的攒发,EL表達(dá)式雖然可以直接將結(jié)果返回給頁面调塌,但有時(shí)得到的結(jié)果為空,<c:out>有特定的結(jié)果處理功能惠猿,EL的單獨(dú)使用會(huì)降低程序的易讀性羔砾,建議把EL的結(jié)果輸入放入<c:out>標(biāo)簽中。
1.2偶妖、<c:out>標(biāo)簽的語法
<c:out>標(biāo)簽的使用有兩種語法格式:
【語法1】:<c:out value=”要顯示的數(shù)據(jù)對(duì)象” [escapeXml=”true|false”] [default=”默認(rèn)值”]/>
【語法2】:<c:out value=”要顯示的數(shù)據(jù)對(duì)象”[escapeXml=”true|false”]>默認(rèn)值</c:out>
這兩種方式?jīng)]有本質(zhì)的區(qū)別姜凄,只是格式上的差別。[escapeXml=”true|false”] [default=”默認(rèn)值”]這些使用[]屬性表示是不是必須的趾访。
1.3态秧、<c:out>標(biāo)簽的屬性
1.4、<c:out>標(biāo)簽的使用范例
1 <%@ page language="java" pageEncoding="UTF-8"%>
2 <%--引入JSTL核心標(biāo)簽庫 --%>
3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4 <!DOCTYPE HTML>
5 <html>
6 <head>
7 <title>JSTL: --表達(dá)式控制標(biāo)簽“out”標(biāo)簽的使用</title>
8 </head>
9
10 <body>
11 <h3><c:out value="下面的代碼演示了c:out的使用腹缩,以及在不同屬性值狀態(tài)下的結(jié)果。"/></h3>
12 <hr/>
13 <ul>
14 <%--(1)直接輸出了一個(gè)字符串空扎。 --%>
15 <li>(1)<c:out value="JSTL的out標(biāo)簽的使用" /></li>
16
17 <li>(2)<c:out value="<a /></li>
18 <%--escapeXml="false"表示value值中的html標(biāo)簽不進(jìn)行轉(zhuǎn)義藏鹊,而是直接輸出 --%>
19 <li>(3)<c:out value="<a escapeXml="false"/></li>
20
21 <%--(4)字符串中有轉(zhuǎn)義字符,但在默認(rèn)情況下沒有轉(zhuǎn)換转锈。 --%>
22 <li>(4)<c:out value="<未使用字符轉(zhuǎn)義>" /></li>
23 <%--(5)使用了轉(zhuǎn)義字符<和>分別轉(zhuǎn)換成<和>符號(hào)盘寡。 --%>
24 <li>(5)<c:out value="<使用字符轉(zhuǎn)義>" escapeXml="false"></c:out></li>
25
26 <%--(6)設(shè)定了默認(rèn)值,從EL表達(dá)式${null}得到空值撮慨,所以直接輸出設(shè)定的默認(rèn)值竿痰。 --%>
27 <li>(6)<c:out value="${null}">使用了默認(rèn)值</c:out></li>
28 <%--(7)未設(shè)定默認(rèn)值,輸出結(jié)果為空砌溺。 --%>
29 <li>(7)<c:out value="${null}"></c:out></li>
30
31 <%--(8)設(shè)定了默認(rèn)值影涉,從EL表達(dá)式${null}得到空值,所以直接輸出設(shè)定的默認(rèn)值规伐。 --%>
32 <li>(8)<c:out value="${null}" default="默認(rèn)值"/></li>
33 <%--(9)未設(shè)定默認(rèn)值蟹倾,輸出結(jié)果為空。 --%>
34 <li>(9)<c:out value="${null}"/></li>
35 </ul>
36 </body>
37 </html>
2、表達(dá)式控制標(biāo)簽——set標(biāo)簽使用總結(jié)
2.1鲜棠、<c:set>標(biāo)簽的功能
<c:set>標(biāo)簽用于把某一個(gè)對(duì)象存在指定的域范圍內(nèi)肌厨,或者將某一個(gè)對(duì)象存儲(chǔ)到Map或者JavaBean對(duì)象中。
2.2豁陆、<c:set>標(biāo)簽的語法
<c:set>標(biāo)簽的編寫共有4種語法格式柑爸。
語法1:存值,把一個(gè)值放在指定的域范圍內(nèi)盒音。
<c:set value=”值1” var=”name1” [scope=”page|request|session|application”]/>
含義:把一個(gè)變量名為name1值為“值1”的變量存儲(chǔ)在指定的scope范圍內(nèi)表鳍。
語法2:
<c:set var=”name2” [scope=”page|request|session|application”]>
值2
</c:set>
含義:把一個(gè)變量名為name2,值為值2的變量存儲(chǔ)在指定的scope范圍內(nèi)里逆。
語法3:
<c:set value=”值3” target=”JavaBean對(duì)象” property=”屬性名”/>
含義:把一個(gè)值為“值3”賦值給指定的JavaBean的屬性名进胯。相當(dāng)與setter()方法。
語法4:
<c:set target=”JavaBean對(duì)象” property=”屬性名”>
值4
</c:set>
含義:把一個(gè)值4賦值給指定的JavaBean的屬性名原押。
從功能上分語法1和語法2胁镐、語法3和語法4的效果是一樣的,只是把value值放置的位置不同诸衔,至于使用那個(gè)根據(jù)個(gè)人的喜愛盯漂,語法1和語法2是向scope范圍內(nèi)存儲(chǔ)一個(gè)值,語法3和語法4是給指定的JavaBean賦值笨农。
2.3就缆、<c:set>標(biāo)簽的屬性
2.4、<c:set>標(biāo)簽的使用范例
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--引入JSTL核心標(biāo)簽庫 --%>
3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4 <%--使用JSP的指令元素指定要使用的JavaBean --%>
5 <jsp:useBean id="person" class="javabean.Person"/>
6 <%--負(fù)責(zé)實(shí)例化Bean谒亦,id指定實(shí)例化后的對(duì)象名竭宰,可以通過${person}得到person在內(nèi)存中的值
7 (或者使用person.toString()方法)。 --%>
8 <!DOCTYPE HTML>
9 <html>
10 <head>
11
12 <title>JSTL: --表達(dá)式控制標(biāo)簽“set”標(biāo)簽的使用</title>
13
14 </head>
15
16 <body>
17 <h3>代碼給出了給指定scope范圍賦值的示例份招。</h3>
18 <ul>
19 <%--通過<c:set>標(biāo)簽將data1的值放入page范圍中切揭。--%>
20 <li>把一個(gè)值放入page域中:<c:set var="data1" value="xdp" scope="page"/></li>
21 <%--使用EL表達(dá)式從pageScope得到data1的值。--%>
22 <li>從page域中得到值:${pageScope.data1}</li>
23
24 <%--通過<c:set>標(biāo)簽將data2的值放入request范圍中锁摔。--%>
25 <li>把一個(gè)值放入request域中:<c:set var="data2" value="gacl" scope="request"/></li>
26 <%--使用EL表達(dá)式從requestScope得到data2的值廓旬。--%>
27 <li>從request域中得到值:${requestScope.data2}</li>
28
29 <%--通過<c:set>標(biāo)簽將值name1的值放入session范圍中。--%>
30 <li>把一個(gè)值放入session域中谐腰。<c:set value="孤傲蒼狼" var="name1" scope="session"></c:set></li>
31 <%--使用EL表達(dá)式從sessionScope得到name1的值孕豹。--%>
32 <li>從session域中得到值:${sessionScope.name1} </li>
33
34 <%--把name2放入application范圍中。 --%>
35 <li>把一個(gè)值放入application域中十气。<c:set var="name2" scope="application">白虎神皇</c:set></li>
36 <%--使用EL表達(dá)式從application范圍中取值励背,用<c:out>標(biāo)簽輸出使得頁面規(guī)范化。 --%>
37 <li>使用out標(biāo)簽和EL表達(dá)式嵌套從application域中得到值:
38 <c:out value="${applicationScope.name2}">未得到name的值</c:out>
39 </li>
40
41 <%--不指定范圍使用EL自動(dòng)查找得到值 --%>
42 <li>未指定scope的范圍砸西,會(huì)從不同的范圍內(nèi)查找得到相應(yīng)的值:${data1}椅野、${data2}、${name1}、${name2}</li>
43 </ul>
44 <hr/>
45 <h3>使用Java腳本實(shí)現(xiàn)以上功能</h3>
46 <ul>
47
48 <li>把一個(gè)值放入page域中竟闪。<%pageContext.setAttribute("data1","xdp");%></li>
49 <li>從page域中得到值:<%out.println(pageContext.getAttribute("data1"));%></li>
50
51 <li>把一個(gè)值放入request域中离福。<%request.setAttribute("data2","gacl");%></li>
52 <li>從request域中得到值:<%out.println(request.getAttribute("data2"));%></li>
53
54 <li>把一個(gè)值放入session域中。<%session.setAttribute("name1","孤傲蒼狼");%></li>
55 <li>從session中域得到值:<%out.println(session.getAttribute("name1"));%></li>
56 <%--out.println()方法與<%=%>表達(dá)式輸出功能一樣
57 但使用表達(dá)式輸出(<%=%>)明顯要比使用out.println()輸出更好炼蛤。
58 --%>
59 <li><%=session.getAttribute("name1") %></li>
60 <li>把另一個(gè)值放入application域中妖爷。<%application.setAttribute("name2","白虎神皇");%></li>
61 <li> 從application域中得到值:<%out.println(application.getAttribute("name2"));%></li>
62 <li><%=application.getAttribute("name2")%></li>
63
64 <li>未指定scope的范圍,會(huì)從不同的范圍內(nèi)查找得到相應(yīng)的值:
65 <%=pageContext.findAttribute("data1")%>理朋、
66 <%=pageContext.findAttribute("data2")%>絮识、
67 <%=pageContext.findAttribute("name1")%>、
68 <%=pageContext.findAttribute("name2")%>
69 </li>
70
71 </ul>
72 <hr/>
73 <h3>操作JavaBean嗽上,設(shè)置JavaBean的屬性值</h3>
74 <%--設(shè)置JavaBean的屬性值次舌,等同與setter方法,Target指向?qū)嵗蟮膶?duì)象兽愤,property指向要插入值的參數(shù)名彼念。
75 注意:使用target時(shí)一定要指向?qū)嵗蟮腏avaBean對(duì)象,也就是要跟<jsp:useBean>配套使用浅萧,
76 也可以java腳本實(shí)例化逐沙,但這就失去了是用標(biāo)簽的本質(zhì)意義。
77 使用Java腳本實(shí)例化:
78 <%@page import="javabean.Person"%
79 <% Person person=new Person(); %>
80 --%>
81 <c:set target="${person}" property="name">孤傲蒼狼</c:set>
82 <c:set target="${person}" property="age">25</c:set>
83 <c:set target="${person}" property="sex">男</c:set>
84 <c:set target="${person}" property="home">中國</c:set>
85 <ul>
86 <li>使用的目標(biāo)對(duì)象為:${person}</li>
87 <li>從Bean中獲得的name值為:<c:out value="${person.name}"></c:out></li>
88 <li>從Bean中獲得的age值為:<c:out value="${person.age}"></c:out></li>
89 <li>從Bean中獲得的sex值為:<c:out value="${person.sex}"></c:out></li>
90 <li>從Bean中獲得的home值為:<c:out value="${person.home}"></c:out></li>
91 </ul>
92 <hr/>
93 <h3>操作Map</h3>
94 <%
95 Map map = new HashMap();
96 request.setAttribute("map",map);
97 %>
98 <%--將data對(duì)象的值存儲(chǔ)到map集合中 --%>
99 <c:set property="data" value="gacl" target="${map}"/>
100 ${map.data}
101 </body>
102 </html>
jsp頁面中使用到的javabean.Person類的代碼如下:
1 package javabean;
2
3 /**
4 * 項(xiàng)目名稱:JSTLStudy
5 * 類名稱:Person
6 * 類描述:一個(gè)只有g(shù)etter和setter方法的JavaBean或者說一個(gè)pojo(簡(jiǎn)單的Java對(duì)象(Plain Old Java Objects))類洼畅,
7 * 作為一個(gè)vo(數(shù)據(jù)傳輸對(duì)象)吩案。定義了四個(gè)變量age、name帝簇、sex和home徘郭。
8 */
9
10 public class Person {
11
12 private String age;
13
14 private String home;
15
16 private String name;
17
18 private String sex;
19
20 public String getAge() {
21 return age;
22 }
23
24 public String getHome() {
25 return home;
26 }
27
28 public String getName() {
29 return name;
30 }
31
32 public String getSex() {
33 return sex;
34 }
35
36 public void setAge(String age) {
37 this.age = age;
38 }
39
40 public void setHome(String home) {
41 this.home = home;
42 }
43 public void setName(String name) {
44 this.name = name;
45 }
46 public void setSex(String sex) {
47 this.sex = sex;
48 }
49 }
3、表達(dá)式控制標(biāo)簽——remove標(biāo)簽使用總結(jié)
3.1丧肴、<c:remove>標(biāo)簽的功能
<c:remove>標(biāo)簽主要用來從指定的JSP范圍內(nèi)移除指定的變量残揉。
3.2、<c:remove>標(biāo)簽的語法
<c:remove var=”變量名” [scope=”page|request|session|application”]/>
其中var屬性是必須的闪湾,scope可以以省略冲甘。
3.3绩卤、<c:remove>標(biāo)簽屬性
3.4途样、<c:remove>標(biāo)簽的使用范例
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--引入JSTL核心標(biāo)簽庫 --%>
3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4 <!DOCTYPE HTML>
5 <html>
6 <head>
7 <title>JSTL: --表達(dá)式控制標(biāo)簽“remove”標(biāo)簽的使用</title>
8 </head>
9
10 <body>
11 <ul>
12 <c:set var="name" scope="session">孤傲蒼狼</c:set>
13 <c:set var="age" scope="session">25</c:set>
14 <li><c:out value="${sessionScope.name}"></c:out></li>
15 <li><c:out value="${sessionScope.age}"></c:out></li>
16 <%--使用remove標(biāo)簽移除age變量 --%>
17 <c:remove var="age" />
18 <li><c:out value="${sessionScope.name}"></c:out></li>
19 <li><c:out value="${sessionScope.age}"></c:out></li>
20 </ul>
21 </body>
22 </html>
4、表達(dá)式控制標(biāo)簽——catch標(biāo)簽使用總結(jié)
4.1濒憋、<c:catch>標(biāo)簽的功能
<c:catch>標(biāo)簽用于捕獲嵌套在標(biāo)簽體中的內(nèi)容拋出的異常何暇。
4.2、<c:catch>標(biāo)簽的語法
其語法格式如下:
<c:catch [var="varName"]>容易產(chǎn)生異常的代碼</c:catch>
var屬性用于標(biāo)識(shí)<c:catch>標(biāo)簽捕獲的異常對(duì)象凛驮,它將保存在page這個(gè)Web域中裆站。
4.3、<c:catch>標(biāo)簽屬性
4.4、<c:catch>標(biāo)簽的使用范例
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--引入JSTL核心標(biāo)簽庫 --%>
3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4 <!DOCTYPE HTML>
5 <html>
6 <head>
7 <title>JSTL: --表達(dá)式控制標(biāo)簽“catch”標(biāo)簽實(shí)例</title>
8 </head>
9
10 <body>
11 <h4>catch標(biāo)簽實(shí)例</h4>
12 <hr>
13 <%--把容易產(chǎn)生異常的代碼放在<c:catch></c:catch>中宏胯,
14 自定義一個(gè)變量errorInfo用于存儲(chǔ)異常信息 --%>
15 <c:catch var="errorInfo">
16 <%--實(shí)現(xiàn)了一段異常代碼羽嫡,向一個(gè)不存在的JavaBean中插入一個(gè)值--%>
17 <c:set target="person" property="hao"></c:set>
18 </c:catch>
19 <%--用EL表達(dá)式得到errorInfo的值,并使用<c:out>標(biāo)簽輸出 --%>
20 異常:<c:out value="${errorInfo}" /><br />
21 異常 errorInfo.getMessage:<c:out value="${errorInfo.message}" /><br />
22 異常 errorInfo.getCause:<c:out value="${errorInfo.cause}" /><br />
23 異常 errorInfo.getStackTrace:<c:out value="${errorInfo.stackTrace}" />
24 </body>
25 </html>
5肩袍、流程控制標(biāo)簽——if標(biāo)簽使用總結(jié)
5.1杭棵、<c:if>標(biāo)簽的功能
<c:if>標(biāo)簽和程序中的if語句作用相同,用來實(shí)現(xiàn)條件控制氛赐。
5.2魂爪、<c:if>標(biāo)簽的語法
【語法1】:沒有標(biāo)簽體內(nèi)容(body)
<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>
【語法2】:有標(biāo)簽體內(nèi)容
<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
標(biāo)簽體內(nèi)容
</c:if>
【參數(shù)說明】:
(1)test屬性用于存放判斷的條件,一般使用EL表達(dá)式來編寫艰管。
(2)var屬性用來存放判斷的結(jié)果滓侍,類型為true或false。
(3)scopes屬性用來指定var屬性存放的范圍牲芋。
5.3撩笆、<c:if>標(biāo)簽的屬性
5.4、<c:if>標(biāo)簽的使用范例
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--引入JSTL核心標(biāo)簽庫 --%>
3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4 <!DOCTYPE HTML>
5 <html>
6 <head>
7 <title>JSTL: --流程控制標(biāo)簽 if標(biāo)簽示例</title>
8 </head>
9
10 <body>
11 <h4>if標(biāo)簽示例</h4>
12 <hr>
13 <form action="JSTL_if_tag.jsp" method="post">
14 <input type="text" name="uname" value="${param.uname}">
15 <input type="submit" value="登錄">
16 </form>
17 <%--使用if標(biāo)簽進(jìn)行判斷并把檢驗(yàn)后的結(jié)果賦給adminchock街图,存儲(chǔ)在默認(rèn)的page范圍中浇衬。 --%>
18 <c:if test="${param.uname=='admin'}" var="adminchock">
19 <%--可以把a(bǔ)dminchock的屬性范圍設(shè)置為session,這樣就可以在其他的頁面中得到adminchock的值餐济,
20 使用<c:if text=”${adminchock}”><c:if>判斷耘擂,實(shí)現(xiàn)不同的權(quán)限。 --%>
21 <c:out value="管理員歡迎您絮姆!"/>
22 </c:if>
23 <%--使用EL表達(dá)式得到adminchock的值醉冤,如果輸入的用戶名為admin將顯示true。 --%>
24 ${adminchock}
25 </body>
26 </html>
6篙悯、流程控制標(biāo)簽——choose標(biāo)簽蚁阳、when標(biāo)簽、otherwise標(biāo)簽配合使用講解
6.1鸽照、<c:choose>螺捐、<c:when>和<c:otherwise>標(biāo)簽的功能
<c:choose>、<c:when>和<c:otherwise>這3個(gè)標(biāo)簽通常情況下是一起使用的矮燎,<c:choose>標(biāo)簽作為<c:when>和<c:otherwise>標(biāo)簽的父標(biāo)簽來使用定血。
使用<c:choose>,<c:when>和<c:otherwise>三個(gè)標(biāo)簽诞外,可以構(gòu)造類似 “if-else if-else” 的復(fù)雜條件判斷結(jié)構(gòu)澜沟。
6.2、語法
<c:choose>
<c:when test="條件1">
//業(yè)務(wù)邏輯1
<c:when>
<c:when test="條件2">
//業(yè)務(wù)邏輯2
<c:when>
<c:when test="條件n">
//業(yè)務(wù)邏輯n
<c:when>
<c:otherwise>
//業(yè)務(wù)邏輯
</c:otherwise>
</c:choose>
6.3峡谊、使用范例
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--引入JSTL核心標(biāo)簽庫 --%>
3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4 <!DOCTYPE HTML>
5 <html>
6 <head>
7 <title>JSTL: -- choose及其嵌套標(biāo)簽標(biāo)簽示例</title>
8 </head>
9
10 <body>
11 <h4>choose及其嵌套標(biāo)簽示例</h4>
12 <hr/>
13 <%--通過set標(biāo)簽設(shè)定score的值為85 --%>
14 <c:set var="score" value="85"/>
15 <c:choose>
16 <%--使用<c:when>進(jìn)行條件判斷茫虽。
17 如果大于等于90刊苍,輸出“您的成績(jī)?yōu)閮?yōu)秀”;
18 如果大于等于70小于90濒析,輸出“您的成績(jī)?yōu)榱己谩保?19 大于等于60小于70正什,輸出“您的成績(jī)?yōu)榧案瘛保?20 其他(otherwise)輸出“對(duì)不起,您沒能通過考試”号杏。
21 --%>
22 <c:when test="${score>=90}">
23 你的成績(jī)?yōu)閮?yōu)秀埠忘!
24 </c:when>
25 <c:when test="${score>70 && score<90}">
26 您的成績(jī)?yōu)榱己?
27 </c:when>
28 <c:when test="${score>60 && score<70}">
29 您的成績(jī)?yōu)榧案?30 </c:when>
31 <c:otherwise>
32 對(duì)不起,您沒有通過考試馒索!
33 </c:otherwise>
34 </c:choose>
35 </body>
36 </html>
7莹妒、循環(huán)標(biāo)簽——forEach標(biāo)簽使用總結(jié)
7.1、<c:forEach>標(biāo)簽的功能
該標(biāo)簽根據(jù)循環(huán)條件遍歷集合(Collection)中的元素绰上。
7.2旨怠、<c:forEach>標(biāo)簽的語法
<c:forEach
var=”name”
items=”Collection”
varStatus=”StatusName”
begin=”begin”
end=”end”
step=”step”>
本體內(nèi)容
</c:forEach>
【參數(shù)解析】:
(1)var設(shè)定變量名用于存儲(chǔ)從集合中取出元素。
(2)items指定要遍歷的集合蜈块。
(3)varStatus設(shè)定變量名鉴腻,該變量用于存放集合中元素的信息。
(4)begin百揭、end用于指定遍歷的起始位置和終止位置(可選)爽哎。
(5)step指定循環(huán)的步長(zhǎng)。
7.3器一、<c:forEach>標(biāo)簽屬性
循環(huán)標(biāo)簽屬性說明
屬性名稱 是否支持EL表達(dá)式 屬性類型 是否必須 默認(rèn)值
var NO String 是 無
items YES Arrays 是 無
Collection
Iterator
Enumeration
Map
String []args
begin YES int 否 0
end YES int 否 集合中最后一個(gè)元素
step YES int 否 1
varStatus NO String 否 無
其中varStatus有4個(gè)狀態(tài)屬性课锌,如下表所示:
varStatus的4個(gè)狀態(tài)
屬性名 類型 說明
index int 當(dāng)前循環(huán)的索引值
count int 循環(huán)的次數(shù)
frist boolean 是否為第一個(gè)位置
last boolean 是否為最后一個(gè)位置
7.4、<c:forEach>使用范例
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--引入JSTL核心標(biāo)簽庫 --%>
3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4 <%@page import="java.util.ArrayList"%>
5 <!DOCTYPE HTML>
6 <html>
7 <head>
8 <title>JSTL: -- forEach標(biāo)簽實(shí)例</title>
9 </head>
10
11 <body>
12 <h4><c:out value="forEach實(shí)例"/></h4>
13 <%
14 List<String>list = new ArrayList<String>();
15 list.add(0, "貝貝");
16 list.add(1, "晶晶");
17 list.add(2, "歡歡");
18 list.add(3, "瑩瑩");
19 list.add(4, "妮妮");
20 request.setAttribute("list", list);
21 %>
22 <B><c:out value="不指定begin和end的迭代:" /></B><br>
23 <%--不使用begin和end的迭代祈秕,從集合的第一個(gè)元素開始渺贤,遍歷到最后一個(gè)元素。 --%>
24 <c:forEach var="fuwa" items="${list}">
25 <c:out value="${fuwa}"/><br/>
26 </c:forEach>
27
28 <B><c:out value="指定begin和end的迭代:" /></B><br>
29 <%--指定begin的值為1请毛、end的值為3志鞍、step的值為2,
30 從第二個(gè)開始首先得到晶晶方仿,每?jī)蓚€(gè)遍歷一次固棚,
31 則下一個(gè)顯示的結(jié)果為瑩瑩,end為3則遍歷結(jié)束仙蚜。 --%>
32 <c:forEach var="fuwa" items="${list}" begin="1" end="3" step="2">
33 <c:out value="${fuwa}"/><br/>
34 </c:forEach>
35
36 <B><c:out value="輸出整個(gè)迭代的信息:" /></B><br>
37 <%--指定varStatus的屬性名為s此洲,并取出存儲(chǔ)的狀態(tài)信息 --%>
38 <c:forEach var="fuwa"
39 items="${list}"
40 begin="3"
41 end="4"
42 varStatus="s"
43 step="1">
44 <c:out value="${fuwa}" />的四種屬性:<br>
45 所在位置,即索引:<c:out value="${s.index}" /><br>
46 總共已迭代的次數(shù):<c:out value="${s.count}" /><br>
47 是否為第一個(gè)位置:<c:out value="${s.first}" /><br>
48 是否為最后一個(gè)位置:<c:out value="${s.last}" /><br>
49 </c:forEach>
50 </body>
51 </html>
8鳍征、循環(huán)標(biāo)簽——forTokens標(biāo)簽使用總結(jié)
8.1黍翎、<c:forTokens>標(biāo)簽的功能
該標(biāo)簽用于瀏覽字符串面徽,并根據(jù)指定的字符將字符串截取艳丛。
8.2匣掸、<c:forTokens>標(biāo)簽的語法
語法:
<c:forTokens items=”strigOfTokens”
delims=”delimiters”
[var=”name”
begin=”begin”
end=”end”
step=”len”
varStatus=”statusName”] >
本體內(nèi)容
</c:forTokens>
【參數(shù)說明】
(1)items指定被迭代的字符串。
(2)delims指定使用的分隔符氮双。
(3)var指定用來存放遍歷到的成員碰酝。
(4)begin指定遍歷的開始位置(int型從取值0開始)。
(5)end指定遍歷結(jié)束的位置(int型戴差,默認(rèn)集合中最后一個(gè)元素)送爸。
(6)step遍歷的步長(zhǎng)(大于0的整型)。
(7)varStatus存放遍歷到的成員的狀態(tài)信息暖释。
8.3袭厂、<c:forTokens>使用范例
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--引入JSTL核心標(biāo)簽庫 --%>
3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4 <!DOCTYPE HTML>
5 <html>
6 <head>
7 <title>JSTL: -- forTokens標(biāo)簽實(shí)例</title>
8 </head>
9
10 <body>
11 <h4><c:out value="forToken實(shí)例"/></h4>
12 <hr/>
13 <%--提示:分隔符的作用是根據(jù)標(biāo)識(shí),截取字符串球匕。
14 如果未設(shè)定分隔符或在字符串中沒有找到分隔付纹磺,將把整個(gè)元素作為一個(gè)元素截取。
15 在實(shí)際應(yīng)用中用于在除去某些符號(hào)在頁面中顯示亮曹。 --%>
16 <c:forTokens var="str" items="北橄杨、京、歡铝阐、迎偏螺、您" delims="藕咏、">
17 <c:out value="${str}"></c:out><br/>
18 </c:forTokens>
19 <br/>
20 <c:forTokens items="123-4567-8854" delims="-" var="t">
21 <c:out value="${t}"></c:out><br/>
22 </c:forTokens>
23 <br/>
24 <c:forTokens items="1*2*3*4*5*6*7"
25 delims="*"
26 begin="1"
27 end="3"
28 var="n"
29 varStatus="s">
30 <c:out value="${n}" />的四種屬性:<br>
31 所在位置,即索引:<c:out value="${s.index}" /><br>
32 總共已迭代的次數(shù):<c:out value="${s.count}" /><br>
33 是否為第一個(gè)位置:<c:out value="${s.first}" /><br>
34 是否為最后一個(gè)位置:<c:out value="${s.last}" /><br>
35 </c:forTokens>
36 </body>
37 </html>
9采转、URL操作標(biāo)簽——import標(biāo)簽使用講解
9.1、<c:import>標(biāo)簽的功能
該標(biāo)簽可以把其他靜態(tài)或動(dòng)態(tài)文件包含到本JSP頁面瞬痘,與<jsp:include>的區(qū)別為:<jsp:include>只能包含同一個(gè)web應(yīng)用中的文件氏义。而<c:import>可以包含其他web應(yīng)用中的文件,甚至是網(wǎng)絡(luò)上的資源图云。
9.2惯悠、<c:import>標(biāo)簽的語法
【語法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”]/>
【參數(shù)說明】:
(1)URL為資源的路徑,當(dāng)引用的資源不存在時(shí)系統(tǒng)會(huì)拋出異常竣况,因此該語句應(yīng)該放在<c:catch></c:catch>語句塊中捕獲克婶。
(2)引用資源有兩種方式:絕對(duì)路徑和相對(duì)路徑。
使用絕對(duì)路徑的示例如下:<c:import url=”http://www.baidu.com”>
使用相對(duì)路徑的示例如下:<c:import url=”aa.txt”>丹泉,aa.txt放在同一文件目錄情萤。
(3)如果以“/”開頭表示應(yīng)用的根目錄下。例如:tomcat應(yīng)用程序的根目錄文件夾為webapps摹恨。導(dǎo)入webapps下的文件bb.txt的編寫方式為:<c:import url=”/bb.txt”>
如果訪問webapps管理文件夾中其他web應(yīng)用就要用context屬性筋岛。
(4)context屬性用于在訪問其他web應(yīng)用的文件時(shí),指定根目錄晒哄。例如睁宰,訪問root下的index.jsp的實(shí)現(xiàn)代碼為:<c:import url=”/index.jsp” context=”/root”>
等同于webapps/root/index.jsp
(5)var肪获、scope、charEncoding柒傻、varReader是可選屬性孝赫。
9.3、<c:import>標(biāo)簽的使用范例
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--引入JSTL核心標(biāo)簽庫 --%>
3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4 <!DOCTYPE HTML>
5 <html>
6 <head>
7 <title>JSTL: -- import標(biāo)簽實(shí)例</title>
8 </head>
9
10 <body>
11 <h4><c:out value="import實(shí)例"/></h4>
12 <hr/>
13 <h4><c:out value="絕對(duì)路徑引用的實(shí)例" /></h4>
14 <%--使用絕對(duì)路徑導(dǎo)入百度首頁红符,
15 導(dǎo)入時(shí)使用<c:catch></c:catch>捕獲異常青柄。
16 --%>
17 <c:catch var="error1">
18 <c:import url="http://wwww.baidu.com" charEncoding="utf-8"/>
19 </c:catch>
20 ${error1}
21 <hr/>
22 <h4>
23 <c:out value="相對(duì)路徑引用本應(yīng)用中的文件" />
24 </h4>
25 <%--使用相對(duì)路徑導(dǎo)入同一文件夾下的“JSTL的import標(biāo)簽使用說明”文件,
26 接收的字符編碼格式使用charEncoding設(shè)置為utf-8预侯。 --%>
27 <c:catch var="error2">
28 <c:import url="JSTL的import標(biāo)簽使用說明" charEncoding="utf-8"/>
29 </c:catch>
30 ${error2}
31 <hr/>
32 <h4><c:out value="使用字符串輸出相對(duì)路徑引用的實(shí)例致开,并保存在session范圍內(nèi)" /></h4>
33 <%--導(dǎo)入“JSTL的import標(biāo)簽使用說明.txt”,
34 使用var定義的變量接收要導(dǎo)入的文件萎馅,并存儲(chǔ)在session中喇喉,
35 如果在其他頁面同樣也要導(dǎo)入該文件,只須使用<c:out>輸出“JSTL的import標(biāo)簽使用說明.txt”的值即可校坑。
36 --%>
37 <c:catch var="error3">
38 <c:import
39 var="myurl"
40 url="JSTL的import標(biāo)簽使用說明"
41 scope="session"
42 charEncoding="utf-8"/>
43 <c:out value="${myurl}"></c:out>
44 <hr/>
45 <c:out value="${myurl}" />
46 </c:catch>
47 ${error3}
48 </body>
49 </html>
10拣技、URL操作標(biāo)簽——url標(biāo)簽使用總結(jié)
10.1、<c:url>標(biāo)簽的功能
<c:url>標(biāo)簽用于在JSP頁面中構(gòu)造一個(gè)URL地址耍目,其主要目的是實(shí)現(xiàn)URL重寫膏斤。
10.2、<c:url>標(biāo)簽的語法
【語法1】:指定一個(gè)url不做修改邪驮,可以選擇把該url存儲(chǔ)在JSP不同的范圍中莫辨。
<c:url
value=”value”
[var=”name”]
[scope=”page|request|session|application”]
[context=”context”]/>
【語法2】:配合 <c:param>標(biāo)簽給url加上指定參數(shù)及參數(shù)值,可以選擇以name存儲(chǔ)該url毅访。
<c:url
value=”value”
[var=”name”]
[scope=”page|request|session|application”]
[context=”context”]>
<c:param name=”參數(shù)名” value=”值”>
</c:url>
10.3沮榜、<c:url>標(biāo)簽的主要屬性
10.4、<c:url>標(biāo)簽使用范例
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--引入JSTL核心標(biāo)簽庫 --%>
3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4 <!DOCTYPE HTML>
5 <html>
6 <head>
7 <title>JSTL: -- url標(biāo)簽實(shí)例</title>
8 </head>
9
10 <body>
11 <c:out value="url標(biāo)簽使用"></c:out>
12 <h4>使用url標(biāo)簽生成一個(gè)動(dòng)態(tài)的url喻粹,并把值存入session中.</h4>
13 <hr/>
14 <c:url value="http://www.baidu.com" var="url" scope="session">
15 </c:url>
16 <a href="${url}">百度首頁(不帶參數(shù))</a>
17 <hr/>
18 <h4>
19 配合 <c:param>標(biāo)簽給url加上指定參數(shù)及參數(shù)值蟆融,生成一個(gè)動(dòng)態(tài)的url然后存儲(chǔ)到paramUrl變量中
20 </h4>
21 <c:url value="http://www.baidu.com" var="paramUrl">
22 <c:param name="userName" value="孤傲蒼狼"/>
23 <c:param name="pwd">123456</c:param>
24 </c:url>
25 <a href="${paramUrl}">百度首頁(帶參數(shù))</a>
26 </body>
27 </html>
11、URL操作標(biāo)簽——redirect標(biāo)簽使用總結(jié)
11.1守呜、<c:redirect>標(biāo)簽的功能
該標(biāo)簽用來實(shí)現(xiàn)請(qǐng)求的重定向型酥。同時(shí)可以配合使用<c:param>標(biāo)簽在url中加入指定的參數(shù)。
11.2查乒、<c:redirect>標(biāo)簽的語法
【語法1】:
<c:redirect url=”url” [context=”context”]/>
【語法2】:
<c:redirect url=”url”[context=”context”]>
<c:param name=”name1” value=”value1”>
</c:redirect>
【參數(shù)說明】:
(1)url指定重定向頁面的地址弥喉,可以是一個(gè)string類型的絕對(duì)地址或相對(duì)地址。
(2)context用于導(dǎo)入其他web應(yīng)用中的頁面玛迄。
11.3由境、<c:redirect>標(biāo)簽的屬性
11.4、<c:redirect>標(biāo)簽使用范例
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--引入JSTL核心標(biāo)簽庫 --%>
3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4 <!DOCTYPE HTML>
5 <html>
6 <head>
7 <title>JSTL: -- redirect標(biāo)簽實(shí)例</title>
8 </head>
9
10 <body>
11 <c:redirect url="http://www.baidu.com">
12 <%--在重定向時(shí)使用<c:param>標(biāo)簽為URL添加了兩個(gè)參數(shù):uname=GACL和password=123 --%>
13 <c:param name="uname">GACL</c:param>
14 <c:param name="password">123</c:param>
15 </c:redirect>
16 </body>
17 </html>
12蓖议、<c:param>標(biāo)簽使用總結(jié)
在JSP頁面進(jìn)行URL的相關(guān)操作時(shí)虏杰,經(jīng)常要在URL地址后面附加一些參數(shù)讥蟆。<c:param>標(biāo)簽可以嵌套在<c:import>、<c:url>或<c:redirect>標(biāo)簽內(nèi)嘹屯,為這些標(biāo)簽所使用的URL地址附加參數(shù)。
<c:param>標(biāo)簽在為一個(gè)URL地址附加參數(shù)時(shí)从撼,將自動(dòng)對(duì)參數(shù)值進(jìn)行URL編碼州弟,例如,如果傳遞的參數(shù)值為“中國”低零, 則將其轉(zhuǎn)換為“%d6%d0%b9%fa”后再附加到URL地址后面婆翔,這也就是使用<c:param>標(biāo)簽的最大好處。
示例1:與<c:url>標(biāo)簽嵌套使用
1 <c:url value="http://www.baidu.com" var="paramUrl">
2 <c:param name="userName" value="孤傲蒼狼"/>
3 <c:param name="pwd">123456</c:param>
4 </c:url>
5 <a href="${paramUrl}">百度首頁(帶參數(shù))</a>
示例2:與<c:redirect>標(biāo)簽嵌套使用
1 <c:redirect url="http://www.baidu.com">
2 <%--在重定向時(shí)使用<c:param>標(biāo)簽為URL添加了兩個(gè)參數(shù):uname=GACL和password=123 --%>
3 <c:param name="uname">GACL</c:param>
4 <c:param name="password">123</c:param>
5 </c:redirect>