9.3.2?
用于賦值的
<c:set>
標簽
<c:set>
標簽用于為變量或
JavaBean
中的變量屬性賦值的工作。它的屬性和描述如表
9.4
所示:
表
9.4
<c:set>
標簽屬性和說明
屬性
|
描述
|
value
|
值的信息,可以是
EL
表達式或常量
|
target
|
被賦值的
JavaBean
實例的名稱,若存在該屬性則必須存在
property
屬性(可選)
|
property
|
JavaBean
實例的變量屬性名稱(可選)
|
var
|
被賦值的變量名(可選)
|
scope
|
變量的作用范圍,若沒有指定,默認為
page
(可選)
|
當不存在
value
的屬性時,將以包含在標簽內的實體數據作為賦值的內容。下面看一個示例:
<c:set value="this is andy" var="oneString"/>
${oneString} <br>
該示例將為名為“
oneString
”的變量賦值為“
this is andy
”,其作用范圍為
page
。
9.3.3?
用于刪除的
<c:remove>
標簽
<c:remove>
標簽用于刪除存在于
scope
中的變量。它的屬性和描述如表
9.5
所示:
表
9.5
<c:remove>
標簽屬性和說明
屬性
|
描述
|
var
|
需要被刪除的變量名
|
scope
|
變量的作用范圍,若沒有指定,默認為全部查找(可選)
|
下面看一個示例:
<c:remove var="sampleValue" scope="session"/>
${sessionScope.sampleValue} <br>
該示例將存在于
Session
中名為“
sampleValue
”的變量刪除。下一句
EL
表達式顯示該變量時,該變量已經不存在了。
9.3.4?
用于異常捕獲的
<c:catch>
標簽
<c:catch>
標簽允許在
JSP
頁面中捕捉異常。它包含一個
var
屬性,是一個描述異常的變量,改變量可選。若沒有
var
屬性的定義,那么僅僅捕捉異常而不做任何事情,若定義了
var
屬性,則可以利用
var
所定義的異常變量進行判斷轉發到其他頁面或提示報錯信息??匆粋€示例。
<c:catch var="err">
???????? ${param.sampleSingleValue[9] == 3}
</c:catch>
${err}
當“
${param.sampleSingleValue[9] == 3}
”表達式有異常時,可以從
var
屬性“
err
”得到異常的內容,通常判斷“
err
”是否為
null
來決定錯誤信息的提示。
9.3.5?
用于判斷的
<c:if>
標簽
<c:if>
標簽用于簡單的條件語句。它的屬性和描述如表
9.6
所示:
表
9.6
<c:if>
標簽屬性和說明
屬性
|
描述
|
test
|
需要判斷的條件
|
var
|
保存判斷結果
true
或
false
的變量名,該變量可供之后的工作使用(可選)
|
scope
|
變量的作用范圍,若沒有指定,默認為保存于
page
范圍中的變量(可選)
|
下面看一個示例:
<c:if test="${paramValues.sampleValue[2] == 12}" var="visits">
??
?? It is 12
</c:if><br>
${visits} <br>
該示例將判斷
request
請求提交的傳入控件數組參數中,下標為“
2
”的控件內容是否為“
12
”,若為
12
則顯示“
It is 12
”。判斷結果被保存在
page
范圍中的“
visits
”變量中?! ?/span>
9.3.6?
用于復雜判斷的
<c:choose>
、
<c:when>
、
<c:otherwise>
標簽
這三個標簽用于實現復雜條件判斷語句,類似“
if,elseif
”的條件語句。
q????????
<c:choose>
標簽沒有屬性,可以被認為是父標簽,
<c:when>
、
<c:otherwise>
將作為其子標簽來使用。
q????????
<c:when>
標簽等價于“
if
”語句,它包含一個
test
屬性,該屬性表示需要判斷的條件。
q????????
<c:otherwise>
標簽沒有屬性,它等價于“
else
”語句。
下面看一個復雜條件語句的示例。
<c:choose>
???????? <c:when test="${paramValues.sampleValue[2] == 11}">
?????????????????? not 12 not 13,it is 11
???????? </c:when>
???????? <c:when test="${paramValues.sampleValue[2] == 12}">
?????????????????? not 11 not 13,it is 12
???????? </c:when>
???????? <c:when test="${paramValues.sampleValue[2] == 13}">
?????????????????? not 11 not 12,it is 13
???????? </c:when>
???????? <c:otherwise>
?????????????????? not 11
、
12
、
13
???????? </c:otherwise>
</c:choose>
該示例將判斷
request
請求提交的傳入控件數組參數中,下標為“
2
”控件內容是否為“
11
”或“
12
”或“
13
”,并根據判斷結果顯示各自的語句,若都不是則顯示“
not 11
、
12
、
13
”。
9.3.7?
用于循環的
<c:forEach>
標簽
<c:forEach>
為循環控制標簽。它的屬性和描述如表
9.7
所示:
表
9.7
<c:forEach>
標簽屬性和說明
屬性
|
描述
|
items
|
進行循環的集合(可選)
|
begin
|
開始條件(可選)
|
end
|
結束條件(可選)
|
step
|
循環的步長,默認為
1
(可選)
|
var
|
做循環的對象變量名,若存在
items
屬性,則表示循環集合中對象的變量名(可選)
|
varStatus
|
顯示循環狀態的變量(可選)
|
下面看一個集合循環的示例。
<%ArrayList arrayList = new ArrayList();
?????????????????? arrayList.add("aa");
?????????????????? arrayList.add("bb");
?????????????????? arrayList.add("cc");
%>
<%request.getSession().setAttribute("arrayList", arrayList);%>
<c:forEach items="${sessionScope.arrayList}" var="arrayListI">
???????? ${arrayListI}
</c:forEach>
該示例將保存在
Session
中的名為“
arrayList
”的
ArrayList
類型集合參數中的對象依次讀取出來,
items
屬性指向了
ArrayList
類型集合參數,
var
屬性定義了一個新的變量來接收集合中的對象。最后直接通過
EL
表達式顯示在頁面上。下面看一個簡單循環的示例。
<c:forEach var="i" begin="1" end="10" step="1">
????? ${i}<br />
</c:forEach>
該示例從“
1
”循環到“
10
”,并將循環中變量“
i
”顯示在頁面上。
9.3.8?
用于分隔字符的
<c:forTokens>
標簽
<c:forTokens>
標簽可以根據某個分隔符分隔指定字符串,相當于
java.util.StringTokenizer
類。它的屬性和描述如表
9.8
所示:
表
9.8
<c:forTokens>
標簽
屬性和說明
屬性
|
描述
|
items
|
進行分隔的
EL
表達式或常量
|
delims
|
分隔符
|
begin
|
開始條件(可選)
|
end
|
結束條件(可選)
|
step
|
循環的步長,默認為
1
(可選)
|
var
|
做循環的對象變量名(可選)
|
varStatus
|
顯示循環狀態的變量(可選)
|
下面看一個示例。
<c:forTokens items="aa,bb,cc,dd" begin="0" end="2" step="2" delims="," var="aValue">
???????? ${aValue}
</c:forTokens>
需要分隔的字符串為“
aa,bb,cc,dd
”,分隔符為“
,
”。
begin
屬性
指定從第一個“
,
”開始分隔,
end
屬性指定分隔到第三個“
,
”,并將做循環的變量名指定為“
aValue
”。由于步長為“
2
”,使用
EL
表達式
${aValue}
只能顯示“
aa