EL表達式的出現,是希望jsp頁面中不在出現Java代碼,便於維護和閱讀
但是EL表達式有侷限性:1.不能賦值,只能獲取數據;
2.沒有條件判斷、循環遍歷的功能
爲了彌補El表達式的不足,推出了JSTL標籤庫。
JSTL:Java standard tag library:Java標準標籤庫
使用JSTL需要導入兩個jar包 jstl-1.2.jar和standard-1.1.2.jar
放在WebContent\WEB-INF\lib文件夾下面,通過Build path導入到項目中
使用JSTL標籤時,需要在jsp頁面中通過taglib指令來導入 ,需要配置如下兩個參數
uri="",標籤所在路徑 uri在導入的JSTL標籤庫的META-INF文件夾c.tld(核心標籤庫)文件中的
<uri>http://java.sun.com/jsp/jstl/core</uri>;標籤中。
高版本的eclipse或者Javaee5.0以上的工程會自動提示以供選擇 使用什麼標籤,都要設定對應的uri
prefix=""標籤的前綴,在對應標籤的<short-name>c</short-name>中可以找到
JSTL標籤庫中的標籤,在導入以後,都是以前綴名作爲標誌的
JSTL標籤中的c標籤,被稱爲核心標籤
JSTL標籤庫包含有:核心標籤庫(c標籤):主要封裝的是一些基本的核心業務邏輯
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
格式化和國際化標籤庫(fmt標籤):主要封裝的是一些進行數據格式化和國際化的業務。比如如期格式化等。
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
數據庫標籤庫(aql標籤):主要封裝的是操作數據庫的業務邏輯
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
xml標籤庫(x標籤) :主要封裝的是一些解析xml數據的業務邏輯
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="xml"%>
JSTL函數標籤庫(fn函數):主要封裝的是常見函數。如string。
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
重點掌握:核心標籤庫(c標籤) 函數標籤庫(fn標籤)格式化和 國際化標籤庫(fmt標籤)
核心標籤庫包括:
1.c:out標籤:<c:out escapeXml="" default="" value="">
標籤作用:向頁面輸出指定內容
escapeXml:指定是否輸出爲xml格式輸出 ,只能接受參數true/false
true:會對輸出的數據進行轉義(轉義只針對特殊字符)
false:不會對輸出內容進行轉義
default:指定默認的輸出值
value:輸出的內容。可以是<%= %>表達式和EL表達式
<c:out value="${hehe1}"></c:out>
等價於pageContext.getAttribute("hehe1");
2.c:set標籤:<c:set scope="" value="" property="" var="" target=""></c:set>
標籤的作用:設置一個域或者集合中的屬性
var:指定域中的屬性名
value:指定域中的屬性值
scope:指定域對象
target:指定集合名或者對象名 ,即賦值的目標。可以是EL表達式
property:指定集合的屬性名或者對象的屬性名,即需要賦值的對象屬性
2.1保存數據:在設置值的時候可以通過scope:指定數據存放的域對象
<c:set var="hehe1" value="hehe"></c:set>
默認情況下數據放在pageContext域中
保存的值可以通過EL表達式取出 ,不能直接用<%= %>表達式取出
${hehe }或者<c:out value="${hehe1}"></c:out>
2.2可以給域中的對象賦值
<%
//創建對象
User user = new User();
//把對象放到域中
pageContext.setAttribute("user", user);
//給對象賦值
%>
<c:set target="${user}" property="name" value="dslfkl"> </c:set>
<c:set target="${user}" property="name" value="password"> </c:set>
獲取設置的值
${user.name } ${user.password}
3.c:remove標籤 <c:remove var="" scope=""/>
標籤作用:刪除域中的屬性
var:指定要刪除的屬性的名稱
scope:指定域名
<c:set var="salary" scope="session" value="${2000*2}"/>
<p>Before Remove Value: <c:out value="${salary}"/></p>
<c:remove var="salary"/>
<p>After Remove Value: <c:out value="${salary}"/></p>
4.c:catch標籤 <c:catch var=""></c:catch>
標籤作用:捕獲異常
var:指定異常對象以什麼屬性存儲在page域中
<c:catch var ="catchException">
<% int x = 5/0;%>
</c:catch>
<c:if test = "${catchException != null}">
<p>The exception is : ${catchException} <br />
There is an exception: ${catchException.message}</p>
</c:if>
5.c:if標籤<c:if test=""></c:if>相當於if語句
標籤作用:對於指定的條件語句,如果成立,則執行標籤體內容
test:指定判斷條件
6.c:choose標籤 <c:choose>
<c:when test=""></c:when>
<c:otherwise></c:otherwise>
</c:choose>
標籤作用:實現if else的功能
<c:choose>:外部選擇
<c:when test="">指定條件語句成立時執行的標籤內容
test:指定判斷的條件語句
<c:otherwise>指定的條件不成立時執行的標籤內容
7.c:forEach標籤<c:forEach items="" var=""</c:forEach>
標籤作用:該標籤實現的功能是Java中forEach的功能
屬性 屬性描述 是否必要 默認值
items 要被循環的信息 否 無
begin 開始的元素(0=第一個元素,1=第二個元素) 否 0
end 最後一個元素(0=第一個元素,1=第二個元素) 否 Last element
step 每一次迭代的步長 否 1
var 代表當前條目的變量名稱 否 無
varStatus 代表循環狀態的變量名稱 否 無
items: 要迭代的對象或變量名
var: 迭代變量名
//準備數據
List<User> userList = new ArrayList<User>();
userList.add(new User("aa","aa"));
userList.add(new User("bb","bb"));
userList.add(new User("cc","cc"));
userList.add(new User("dd","dd"));
//把數據放進域中
pageContext.setAttribute("userList", userList);
<c:forEach items="userList" var="user">
姓名:${user.username} 密碼:${user.password}
</c:forEach>
<c:forEach var="i" begin="1" end="5">
Item <c:out value="${i}"/><p>
</c:forEach>
8.c:url標籤 <c:url context="" scope="" value="" var="">
<c:param name="" value="">
標籤作用:指定鏈接跳轉時的參數
name:指定參數的屬性名稱
value:指定參數的值
</c:param>
</c:url>
標籤作用:指定跳轉鏈接
context:指定網站/網址
scope:指定域
value:指定屬性的值
var:指定屬性的名稱
<c:url context="aa" scope="page" value="http://www.baidu.com" var="index">
<c:param name="name" value="hehe">
</c:param>
</c:url>
9.c:redirect標籤(實現重定向功能)<c:redirect context="" url=""></c:redirect>
標籤作用:重定向到指定頁面
url:目標URL 無默認值
context:一個本地網絡應用程序的名稱,默認爲當前應用
<c:redirect url="http://www.w3cschool.cc"/>
10.c:forTokens標籤
標籤作用:該標籤實現的功能是Java中forEach的功能
屬性 屬性描述 是否必要 默認值
items 要被循環的信息 否 無
begin 開始的元素(0=第一個元素,1=第二個元素) 否 0
end 最後一個元素(0=第一個元素,1=第二個元素) 否 Last element
step 每一次迭代的步長 否 1
var 代表當前條目的變量名稱 否 無
varStatus 代表循環狀態的變量名稱 否 無
delims 分隔符 是 無
items: 要迭代的對象或變量名
var: 迭代變量名
<c:forTokens items="Zara,nuha,roshy" delims="," var="name">
<c:out value="${name}"/><p>
</c:forTokens>
11.c:import標籤
標籤作用<c:import>標籤提供了所有<jsp:include>行爲標籤所具有的功能,同時也允許包含絕對URL
屬性 屬性描述 是否必要 默認值
url 需要檢索和引入的頁面的URL 是 無
context /緊接着一個本地網絡應用程序的名稱 否 當前應用程序
charEncoding 所引入的數據的字符編碼集 否 ISO-8859-1
var 用於存儲所引入的文本的變量 否 Print to page
scope var屬性的作用域 否 Page
varReader 可選的用於提供java.io.Reader對象的變量 否 無
<c:out value="${data}"/>
格式化標籤
JSTL格式化標籤用來格式化並輸出文本、日期、時間、數字。引用格式化標籤庫的語法如下:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
標籤 描述
<fmt:formatNumber> 使用指定的格式或精度格式化數字
<fmt:parseNumber> 解析一個代表着數字,貨幣或百分比的字符串
<fmt:formatDate> 使用指定的風格或模式格式化日期和時間
<fmt:parseDate> 解析一個代表着日期或時間的字符串
<fmt:bundle> 綁定資源
<fmt:setLocale> 指定地區
<fmt:setBundle> 綁定資源
<fmt:timeZone> 指定時區
<fmt:setTimeZone> 指定時區
<fmt:message> 顯示資源配置文件信息
<fmt:requestEncoding> 設置request的字符編碼
文章引用來自:http://blog.csdn.net/ning_xian_hong/article/details/45267875?ref=myread