Apache Tomcat安裝JSTL 庫步驟以下: html
使用任何庫,你必須在每一個JSP文件中的頭部包含<taglib>標籤。 java
根據JSTL標籤所提供的功能,能夠將其分爲5個類別。 apache
核心標籤是最經常使用的JSTL標籤。引用核心標籤庫的語法以下: 編程
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<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>標籤就是<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>標籤用於移除一個變量,能夠指定這個變量的做用域,若未指定,則默認爲變量第一次出現的做用域。這個標籤不是特別有用,不過能夠用來確保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 [var = "exception"]> ...//可能存在異常的代碼 </c:catch>var屬性能夠指定存儲異常信息的變量,這是一個可選項,若是不須要保存異常信息,則能夠省略該屬性
範例
異常處理:<c:catch var = "exception"> <% int a = 5/0; out.println(a+""); %> </c:catch> <c:out value = "${exception}"/>
<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>標籤與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>
這些標籤封裝了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>