JSTL標簽庫的使用詳解
來源:程序員人生 發布時間:2015-07-22 23:26:54 閱讀次數:3890次
在上1篇博客EL表達式中,我們介紹了EL表達式的簡單使用,但是在使用EL表達式的同時,1般都是結合JSTL來1起使用的,這篇文章我們就來介紹1下JSTL的背景,分類,其在程序中的使用!
背景
JSTL(JSP StandardTag Library,JSP標準標簽庫)是1個不斷完善的開放源代碼的JSP標簽庫,是由apache的jakarta小組來保護的。JSTL只能運行在支持JSP1.2和Servlet2.3規范的及其以上容器上,如tomcat 7.x。在JSP 2.0中也是作為標準支持的。
JSTL 1.0 發布于 2002 年 6 月,由4個定制標記庫(core、format、xml 和 sql)和1對通用標記庫驗證器(ScriptFreeTLV和 PermittedTaglibsTLV)組成。core 標記庫提供了定制操作,通過限制了作用域的變量管理數據,和履行頁面內容的迭代和條件操作。它還提供了用來生成和操作 URL 的標記。顧名思義,format 標記庫定義了用來格式化數據(特別是數字和日期)的操作。它還支持使用本地化資源束進行
JSP 頁面的國際化。
分類
JSTL 核心標簽庫(C標簽)標簽共有13個,功能上分為4類:
1.表達式控制標簽:out、set、remove、catch
2.流程控制標簽:if、choose、when、otherwise
3.循環標簽:forEach、forTokens
4.URL操作標簽:import、url、redirect
使用
如果我們要在程序中使用這些標簽,首先我們要引入jar,這里我們要引入兩個jar ,jstl⑴.2.jar和standard⑴.1.2.jar,然后將這兩個jar放入到WEB-INF下的lib文件夾中。然后在我們的jsp頁面上要引入<%@ tagliburi="http://java.sun.com/jsp/jstl/core" prefix="c"%> 這樣我們就能夠在jsp的頁面上使用jstl了!
下邊我們在代碼中看1看這些標簽的使用!
<span style="font-size:18px;"><%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<h1>測試JSTL核心庫</h1>
<hr>
<li>采取c:out標簽</li><br>
hello(使用標簽):<c:out value="123"/><br>
hello(使用標簽):<c:out value="hello"/><br>
hello(使用標簽):<c:out value="${hello}"/><br>
hello(使用EL表達式):${hello }<br>
hello(default):${hello123 }<br>
hello(使用缺省值):<c:out value="${hello123}" default="沒有值"/><br>
hello(使用缺省值):<c:out value="${hello123}">沒有值</c:out><br>
welcome(使用EL表達式):${welcome }<br>
welcome(使用標簽,escapeXml=true):<c:out value="${welcome}" escapeXml="true"/><br>
welcome(使用標簽,escapeXml=false):<c:out value="${welcome}" escapeXml="false"/><br>
<p>
<li>測試c:set,c:remove</li><br>
<c:set value="root" var="userid"/>
userid:${userid }<br>
<c:remove var="userid"/>
userid:${userid }<br>
<p>
<li>條件控制標簽:c:if</li><br>
<c:if test="${v1 lt v2}">
v1小于v2<br>
</c:if>
<p>
<li>條件控制標簽:c:choose,c:when,c:otherwise</li><br>
<c:choose>
<c:when test="${v1 gt v2}">
v1大于v2<br>
</c:when>
<c:otherwise>
v1小于v2<br>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${empty userList}">
沒有符合條件的數據<br>
</c:when>
<c:otherwise>
存在用戶數據<br>
</c:otherwise>
</c:choose>
<p>
<li>演示循環控制標簽:forEach</li><br>
<h3>采取jsp腳本顯示</h3>
<table border="1">
<tr>
<td>用戶名稱</td>
<td>年齡</td>
<td>所屬組</td>
</tr>
<%
List userList = (List)request.getAttribute("users");
if (userList == null || userList.size() == 0) {
%>
<tr>
<td colspan="3">沒有符合條件的數據</td>
</tr>
<%
}else {
for (Iterator iter=userList.iterator(); iter.hasNext();) {
com.tgb.jstl.User user = (com.tgb.jstl.User)iter.next();
%>
<tr>
<td><%=user.getUsername() %></td>
<td><%=user.getAge() %></td>
<td><%=user.getGroup().getName() %></td>
</tr>
<%
}
}
%>
</table>
<h3>采取forEach標簽</h3>
<table border="1">
<tr>
<td>用戶名稱</td>
<td>年齡</td>
<td>所屬組</td>
</tr>
<c:choose>
<c:when test="${empty users}">
<tr>
<td colspan="3">沒有符合條件的數據</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${users}" var="user">
<tr>
<td>${user.username }</td>
<td>${user.age }</td>
<td>${user.group.name }</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<h3>采取forEach標簽,varstatus</h3><br>
<table border="1">
<tr>
<td>用戶名稱</td>
<td>年齡</td>
<td>所屬組</td>
</tr>
<c:choose>
<c:when test="${empty users}">
<tr>
<td colspan="3">沒有符合條件的數據</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${users}" var="user" varStatus="vs">
<c:choose>
<c:when test="${vs.count mod 2 == 0}">
<tr bgcolor="red">
</c:when>
<c:otherwise>
<tr>
</c:otherwise>
</c:choose>
<td>${user.username }</td>
<td>${user.age }</td>
<td>${user.group.name }</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<h3>采取forEach標簽,begin,end</h3>
<table border="1">
<tr>
<td>用戶名稱</td>
<td>年齡</td>
<td>所屬組</td>
</tr>
<c:choose>
<c:when test="${empty users}">
<tr>
<td colspan="3">沒有符合條件的數據</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${users}" var="user" begin="2" end="8" step="2">
<tr>
<td>${user.username }</td>
<td>${user.age }</td>
<td>${user.group.name }</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
<li>演示循環控制標簽:forEach,輸出map</li><br>
<c:forEach items="${map}" var="entry">
${entry.key },${entry.value }<br>
</c:forEach>
<p>
<li>演示循環控制標簽:forTokens</li><br>
<c:forTokens items="${strTokens}" delims="#" var="v">
${v }<br>
</c:forTokens>
<p>
<li>c:catch標簽</li><br>
<%
try {
Integer.parseInt("asdfsdf");
}catch(NumberFormatException e) {
e.printStackTrace();
out.println(e.getMessage());
}
%>
<p>
<c:catch var="msg">
<%
Integer.parseInt("asdfsdf");
%>
</c:catch>
${msg }<br>
<p>
<li>c:import標簽</li><br>
<c:import url="http://localhost:8080/drp4.5/test_upload.html"/>
<p>
<li>c:url,c:param</li><br>
<c:url value="http://localhost:8080/drp4.5/sysmgr/validate.jsp" var="u">
<c:param name="userId" value="zhangsan"/>
<c:param name="age" value="20"/>
</c:url>
${u }<br>
<li>c:redirect</li><br>
<c:redirect url="/login.jsp" context="/drp4.5"/>
</body>
</html></span>
通過上邊寫簡單代碼的使用,我們就能夠很容易的知道他們該如何在我們的利用程序中使用了!
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈