JSTL(JSP Standard Tag Library,JSP標準標籤庫)


JSTL 庫安裝

Apache Tomcat安裝JSTL 庫步驟以下: html

  • 從Apache的標準標籤庫中下載的二進包(jakarta-taglibs-standard-current.zip)。下載地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
  • 下載jakarta-taglibs-standard-1.1.1.zip 包並解壓,將jakarta-taglibs-standard-1.1.1/lib/下的兩個jar文件:standard.jar和jstl.jar 文件拷貝到/WEB-INF/lib/下。

使用任何庫,你必須在每一個JSP文件中的頭部包含<taglib>標籤。 java


根據JSTL標籤所提供的功能,能夠將其分爲5個類別。 apache

  • 核心標籤
  • 格式化標籤
  • SQL 標籤
  • XML 標籤
  • JSTL 函數http://my.oschina.net/passer007/admin/new-blog

核心標籤

核心標籤是最經常使用的JSTL標籤。引用核心標籤庫的語法以下: 編程


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>



<c:out>標籤

<c:out>標籤用來顯示一個表達式的結果,與<%= %>做用類似,它們的區別就是<c:out>標籤能夠直接經過"."操做符來訪問屬性。舉例來講,若是想要訪問 customer.address.street,只須要這樣寫:<c:out value="customer.address.street">。<c:out>標籤會自動忽略XML標記字符,因此它們不會被當作標籤來處理。 數組

屬性 session

屬性
描述
是否必要
默認值
value
要輸出的內容


default
輸出的默認值

主體中的內容
escapeXml
是否忽略XML特殊字符

true


範例 jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
	escapeXml爲false時:<c:out value = "<hr>" escapeXml = "false"/>
	escapeXml爲true時:<c:out value = "<hr>" escapeXml = "true"/>
	兩種語法格式有default<c:out value = "${user}" default = "user的值爲空"/>
	兩種語法格式沒有default<c:out value = "${user}"/>
</body>
</html>

<c:set> 標籤

<c:set>標籤就是<jsp:setProperty>行爲標籤的孿生兄弟。這個標籤之因此頗有用呢,是由於它會計算表達式的值,而後使用計算結果來設置 JavaBean 對象或 java.util.Map 對象的值。 函數

屬性 post

屬性
類型
描述
var    
String
用於指定變量名
target
Object
用於指定存儲變量值或者標籤主體的目標對象,能夠是JavaBean和Map對象
property
String
用於指定目標對象存儲數據的屬性名
scope
String
用於指定變量的做用域,默認值是page
value
Object
用於指定變量值




範例 ui

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="user" class = "com.zhong.model.User"></jsp:useBean>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
	1.語法一:<c:set var = "user" value = "jstl" scope = "session"/>
	輸出的變量值爲:${sessionScope.user}<br>
	2.語法二:<c:set var = "number" scope = "request">
				${3.14159}</c:set>
	輸出的變量值爲:${requestScope.number}<br>
	3.語法三:
	<c:set value = "1" target = "${user}" property = "id"/>
	<c:set value = "admin" target = "${user}" property = "username"/>
	<c:out value = "${user.id}"/>
	<c:out value = "${user.username}"/><br>	
</body>
</html>//須要本身寫一下user噢!

<c:remove> 標籤

<c:remove>標籤用於移除一個變量,能夠指定這個變量的做用域,若未指定,則默認爲變量第一次出現的做用域。這個標籤不是特別有用,不過能夠用來確保JSP完成清理工做。

屬性(這裏的屬性同c:out)

範例

添加新變量add賦值yoyo輸出:<c:set var = "add" value = "yoyo" scope = "page"/>
	<c:out value = "${add}"/><br>
	刪除變量add,而且輸出add:<c:remove var = "add" scope = "page"/>
	<c:out value = "${add}" default = "add的值爲空"/>

<c:catch> 標籤

<c:catch> 標籤主要用來處理產生錯誤的異常情況,而且將錯誤信息儲存起來。

<c:catch>標籤的語法格式以下:

<c:catch [var = "exception"]>
    ...//可能存在異常的代碼
</c:catch>
var屬性能夠指定存儲異常信息的變量,這是一個可選項,若是不須要保存異常信息,則能夠省略該屬性

範例

異常處理:<c:catch var = "exception">
		<%
			int a = 5/0;
			out.println(a+"");
		%>
	</c:catch>
	<c:out value = "${exception}"/>

<c:if> 標籤

<c:if>標籤判斷表達式的值,若是表達式的值爲真則執行其主體內容。

屬性

屬性
類型
描述
test
boolean
必選屬性,用於指定條件表達式
var
String
可選屬性,用於指定變量名。這個屬性會指定test屬性的判斷結果將存放在哪一個變量中,若是變量不存在就建立它
scope
String
存儲範圍,改屬性用於指定var屬性所指定的變量的存在範圍

範例

<c:if test = "${empty param.command}">
		<form name = "formm" method = "post">
			評論:
			<textarea name = "command" cols = "30" rows = "4"></textarea>
			<br>
			<input type = "submit" value = "提交">
		</form>
	</c:if>
若是頁面當中的command元素爲空的,則執行展示表單,不然不展現。

<c:choose>, <c:when>, <c:otherwise> 標籤

<c:choose>標籤與Java switch語句的功能同樣,用於在衆多選項中作出選擇。switch語句中有case,而<c:choose>標籤中對應 有<c:when>,switch語句中有default,而<c:choose>標籤中 有<c:otherwise>。

語法格式以下:

<c:choose>
      <c:when test = "condition">
            //業務邏輯
      </c:when>
      //多個c:when標籤
      <c:otherwise>
            //業務邏輯
      </c:otherwise>
</c:choose>
範例:

<c:choose>
		<c:when test = "${empty sessionScope.user}">
			請註冊
		</c:when>
		<c:otherwise>
			歡迎:${sessionScope.user}
			<form action = "post" name = "formtest">
				<input type = "submit" name = "退出"/>
			</form>
		</c:otherwise>
	</c:choose>
<c:choose>
		<c:when test = "${now.hours>=6 && now.hours<=8}">
			<c:out value = "早上好!"/>
		</c:when>
		<c:when test = "${now.hours>=21 && now.hours<=24}">
			<c:out value = "如今是編程時間!"/>
		</c:when>
		<c:otherwise>
			<c:out value = "該時段沒有任何建議!"/>
		</c:otherwise>
	</c:choose>

<c:forEach>, <c:forTokens> 標籤

這些標籤封裝了Java中的for,while,do-while循環。相比而言,<c:forEach>標籤是更加通用的標籤,由於它迭代一個集合中的對象。<c:forTokens>標籤將字符串分隔爲一個子串數組而後迭代它們。

屬性
類型
描述
items
數組、集合類、字符串和枚舉類型
被循環遍歷的對象,多用於數組與集合類
var
String
循環體的變量,用於存儲items指定的對象的成員
begin
int
循環的起始位置,若是沒有指定,則從集合的第一個值開始迭代
end
int
循環的終止位置,若是沒有指定,則一直迭代到集合的最後一位
step
int
循環的步長
varStatus
String
循環的信息狀態,信息狀態列表在下表

屬性
類型
描述
index
int
當前循環的索引值,從0開始
count
int
當前循環的循環計數,從1開始
first
boolean
是否爲第一次循環
last
boolean
是否爲最後一次循環

範例

<%
		ArrayList list = new ArrayList();
		list.add("Python");
		list.add("Java");
		list.add("HTML5");
		request.setAttribute("list", list);
	%>
	<c:forEach items = "${requestScope.list}" var = "temp" begin = "0" varStatus = "id">
		${id.index}:${temp}<br>
	</c:forEach>
c:forTokens標籤與c:forEach標籤類似,屬性與其上相同可是增長一個屬性delims表示分割字符串的分隔符,能夠同時使用多個分隔符

<c:set var = "string" value = "Python,Java,HTML5,PHP"/>
	<c:forTokens items = "${string}" delims = "," var = "temp">
		${temp}<br>
	</c:forTokens>
相關文章
相關標籤/搜索