JSTL標簽庫的配置
需要在web程序的lib目錄下粘貼jstl.jar和standard.jar(如果只使用el表達式,不用拷貝這兩個jar)
注意:jstl必須在能夠支持j2ee1.4/servlet2.4/jsp2.0版本上的容器才能運行。
c開頭的核心庫,fmt開頭的為格式化庫,fn開頭的為函數庫,sql開頭的為操作SQL庫,x開頭的操縱XML
核心庫
<c:out/>輸出標簽
examples:
<c:out value="${hello}"/>
如果需要再scope里取值,在value內必須是el表達式或jsp腳本,否則將把引號內容按字符串輸出
<c:out value="abc"/>將輸出abc。
如果只是以上業務的話,推薦使用el表達式取值,更加簡潔。
<c:out value="${abc}" default="123"/>
如果abc在scope內并不存在的話,可以加入default屬性規定默認值.
<c:out value="${cz}" escapeXml="false"/>
如果想把字符串按HTML格式輸出,需加入escapeXml="false"。
此處推薦使用el表達式,el自動按HTML格式輸出。
<c:set><c:remove>設值,移除標簽
examples:
<c:set value="123" var="temp"/>
temp:${temp}
<c:remove var="temp"/>
temp:${temp}
var指定變量名。
<c:if><c:if/>判斷標簽
examples:
<c:if test="${v1 lt v2}" var="v">
v1小于v2
${v }
</c:if>
var標簽指定變量并接收test內判斷的值
<c:choose>條件分支標簽
examples:
<c:choose>
<c:when test="${v1<v2}">
v1小于v2
</c:when>
<c:otherwise>
v1大于v2
</c:otherwise>
</c:choose>
使用choose標簽有兩點需要注意
1、<c:choose>標簽不能單獨出現
2、<c:otherwise>標簽不能出現在<c:when>標簽之前,</c:when>可以有多對
<c:forEach>循環標簽
examples:
<c:forEach items="${userList}" var="user">
<tr>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.group.name}</td>
</tr>
</c:forEach>
items屬性指定集合數組,var屬性指定循環取出的每一項的變量名,變量var是存放在scope范圍內的
所以需要使用el表達式取出。
<c:forEach>循環標簽各項屬性說明
varStatus屬性:獲取循環中var的狀態。
<c:forEach items="${userList}" var="user" varStatus="vs">
vs.count取出當前是循環的第幾次,vs.step獲取循環的步長.
<c:forEach items="${userList}" var="user" begin="2" end="8" step=2>
循環從集合的第二項開始,循環到第八項,循環步長為2
循環取出map
example:
<c:forEach items="${map}" var="m">
${m.key }=${m.value }<br>
</c:forEach>
${m.key }輸出鍵,${m.value }輸出值
<c:forTokens>支持分隔符的循環標簽
example:
<c:forTokens items="${tok}" delims="," var="v">
${v }<br>
</c:forTokens>
其他屬性與<c:forEach>標簽功能相同,需要注意的是delims=",",它指定了以什么做為分隔符進行分割。
request內設置"1,2,3,4,5",此循環的輸出效果如下:
1
2
3
4
5
<c:import>導入標簽
example:
<c:import url="http://127.0.0.1/struts_taglib"></c:import>
此標簽作用相當于jsp:include標簽的作用,當前頁面包含url里的頁面。
<c:redirect>重定向標簽
example:
<c:redirect url="http://127.0.0.1/struts_taglib"></c:redirect>
直接重定向至url指定地址