您好,登錄后才能下訂單哦!
一、JSTL簡介
JSTL的全稱:JSP Standard Tag Libary,JSP的標準標簽庫
JSTL的作用:
提供給Java web開發人員一個標準通用的標簽函數庫。
和EL來取來傳統直接在頁面上嵌入Java程序的做法,以提供程序可讀性、維護性和方便性。
JSTL的版本:
JSTTL的主要版本是1.0、1.1和1.2。
1.0版本EL表達式還沒有納入官方規范。
1.0和1.2版本EL表達式已經納入官方規范。
二、<c:out>標簽
輸出常量和域范圍中的變量(value屬性,使用EL表達式)。
輸出默認值(default屬性)。
默認HTML標簽不轉義(escapeXML)。
屬性名 | 是否支持EL | 屬性類型 | 屬性描述 |
value | √ | Object | 指定要輸出的內容 |
escapeXML | √ | Boolean | 指定是否將>、<等特殊字符進行HTML編碼轉換后再進行輸出,默認值是true。 |
default | √ | Object | 指定如果value屬性的值為null時所輸出的默認值 |
示例:輸出常量
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <c:out value="Hello"></c:out> </body> </html>
示例:輸出域中的變量
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <!-- 輸出域中的變量 --> <% request.setAttribute("name", "你好,世界"); %> <c:out value="${name}"></c:out> </body> </html>
示例:輸出默認值
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <!-- 輸出默認值 --> <c:out value="${haha}" default="你好 Java"></c:out> </body> </html>
示例:輸出HTML標簽
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <c:out value="<a href='#'>超鏈接</a>"></c:out> </body> </html>
默認情況下,輸出的是字符串,所以要加上escapeXml="false"屬性。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <c:out value="<a href='#'>超鏈接</a>" escapeXml="false"></c:out> </body> </html>
三、<c:set>標簽
向4個域中存入值(var value scope屬性)。
設置web域中java.util.Map類型的屬性對象或Javabean類型的屬性對象的屬性(target prperty value屬性)。
屬性名 | 是否支持EL | 屬性類型 | 屬性描述 |
value | √ | Object | 用于指定屬性值 |
var | × | String | 用于指定要設置的web域屬性的名稱 |
scope | × | String | 用于指定屬性所在的web域 |
target | √ | Object | 用于指定要設置屬性的對象,這個對象必須是Javabean對象或java.utl.Map對象 |
property | √ | String | 用于指定當前要為對象設置的屬性名稱 |
示例:向4個web域對象存入值
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <c:set var="i" value="哈哈" scope="request"></c:set> <c:out value="${i}"></c:out> </body> </html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <!-- 傳統方式 --> <% request.setAttribute("name", "呵呵"); %> <c:out value="${name}"></c:out> <!-- jstl方式 --> <c:set var="i" value="哈哈" scope="request"></c:set> <c:out value="${i}"></c:out> </body> </html>
示例:修改Javabean對象存入值
<%@page import="cn.vo.User"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <% request.setAttribute("user", new User("你好","世界")); %> <c:set target="${user }" property="username" value="哈哈"></c:set> ${user.username } </body> </html>
四、<c:remove>標簽
<c:remove>標簽用于刪除各種web域中的值。
其語法格式如下:
<c:remove var="varName" [scope={page|request|session|application}]></c:remove>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <!-- 刪除屬性之前 --> <c:set var="i" value="哈哈" scope="page"></c:set> ${i} <!-- 刪除屬性之后 --> <c:remove var="i" scope="page"/> ${i} </body> </html>
五、<c:catch>標簽
<c:catch>標簽用于捕獲嵌套在標簽體中的內容拋出的異常,其語法格式如下:
<c:catch [var ='varName']> </c:catch>
var屬性用于標識<c:catch>標簽捕獲的異常對象,它將保存在page這個web域中。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <c:catch var="e"> <% int i = 10 / 0; %> </c:catch> ${e.message } </body> </html>
六、<c:if>標簽
<c:if test="">標簽可以構造簡單的"if-then"結構的條件表達式。
屬性名 | 是否支持EL | 屬性類型 | 屬性描述 |
test | √ | boolean | 決定是否處理標簽體中的內容的條件表達式 |
var | × | String | 用于指定將test屬性的之后定結果保存到某個web域中的某個屬性的名稱 |
scope | × | String | 指定將test屬性的執行結果保存到那個web域中 |
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <c:set var="i" value="10" scope="page"></c:set> <c:if test="${i == 10 }"> 正確 </c:if> </body> </html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <c:set var="i" value="10" scope="page"></c:set> <!-- var 表示判斷的結果 --> <c:if test="${i == 10 }" var="x" scope="page"> 正確 </c:if> ${x } </body> </html>
六、<c:choose>標簽
<c:choose>標簽用于指定多個條件選擇的組合邊界,它必須和<c:when>和<c:otherwise>標簽一起使用。使用<c:choose>標簽、<c:when>和<c:otherwise>這三個標簽,可以構造類似“if-else”的復雜條件判斷結構
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <c:set var="i" value="10" scope="page"></c:set> <c:choose> <c:when test="${i ==10 }"> i的值是10 </c:when> <c:otherwise> i的值不等于10 </c:otherwise> </c:choose> </body> </html>
七、<c:foreach>標簽
<c:foreach>標簽用于對一個集合對象中的元素進行循環迭代操作,或者按照指定的次數重復迭代標簽體中的內容。
屬性名 | 是否支持EL | 屬性類型 | 屬性描述 |
var | × | String | 指定將當前迭代到的元素保存到page這個web域中的屬性名稱 |
varstatus | × | String | 記住用于保存迭代信息的對象 |
items | √ | 任何支持的類型 | 將要迭代的集合對象 |
begin | √ | int | 如果指定items屬性,就從集合中的第begin個元素開始進行迭代,begin的索引值從0開始編碼;如果沒有指定items屬性,就從begin指定的值開始迭代,直到end值結束迭代 |
end | √ | int | 參看begin屬性的描述 |
step | √ | int | 指定迭代的步長 |
示例:遍歷數組
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <!-- for(String s:str[]){ } --> <% String[] str = {"哈哈","呵呵"}; request.setAttribute("str", str); %> <c:forEach var="s" items="${str}" > ${s} </c:forEach> </body> </html>
示例:遍歷List集合
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <!-- for(String s:str[]){ } --> <% List<String> list = new ArrayList<String>(); list.add("哈哈"); list.add("呵呵"); list.add("嘻嘻"); request.setAttribute("list",list); %> <c:forEach var="i" items="${list}" > ${i} </c:forEach> </body> </html>
示例:遍歷Map集合
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <!-- for(String s:str[]){ } --> <% Map<String,String> map = new HashMap<String,String>(); map.put("a", "aa"); map.put("b", "bb"); request.setAttribute("map",map); %> <c:forEach var="entry" items="${map}" > ${entry.key } ${entry.value} </c:forEach> </body> </html>
示例:從1到10遍歷
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <c:forEach var="i" begin="1" end="10" step="1"> ${i} </c:forEach> </body> </html>
示例:計算從1加到100的和
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <c:set var="sum" value="0" scope="page"></c:set> <c:forEach var="i" begin="1" end="100" step="1"> <c:set var="sum" value="${sum+i}" scope="page"></c:set> </c:forEach> ${sum } </body> </html>
varStatus屬性
記錄迭代相關的信息
屬性 | 類型 | 意義 |
index | number | 現在指到成員的索引 |
count | number | 總共指到成員的總數 |
first | boolean | 現在指到的成員是否為第一個成員 |
last | boolean | 現在指到的成員是否為最后一個成員 |
示例:遍歷10到100的偶數,每到第三個數,顯示為紅色
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <c:forEach var="i" begin="10" end="100" step="2" varStatus="status"> <c:choose> <c:when test="${ status.count %3 ==0 }"> <font color="red">${i }</font> </c:when> <c:otherwise> ${i } </c:otherwise> </c:choose> </c:forEach> </body> </html>
八、<c:param>標簽
在jsp頁面進行URL的相關操作時,經常需要在URL地址后面附加一些參數。<c:param>標簽可以嵌套在<c:import>和<c:url>以及<c:redirect>標簽內,為這些標簽所使用的URL地址附加參數。
<c:param>標簽在為一個URL地址附加參數的時候,會自動對參數值進行URL編碼。
<c:param name="" value=""></c:param>
九、<c:import>標簽
名稱 | 說明 | EL | 類型 | 必須 | 默認值 |
url | 一文件被包含的地址 | √ | String | 是 | 無 |
context | 虛擬路徑 | √ | String | 否 | 無 |
var | 存儲被包含文件的內容(以String類型存入) | × | String | 否 | 無 |
scope | var變量的jsp范圍 | × | String | 否 | page |
charEncoding | 被包含文件之內容的編碼格式 | √ | String | 否 | 無 |
varReader | 存儲被包含文件的內容(以Reader類型存入) | × | String | 否 | 無 |
haha.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'haha.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 哈哈 </body> </html>
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <!-- 起到包含的效果 --> <c:import url="/haha.jsp"></c:import> </body> </html>
將頁面包含在變量之中
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <!-- 起到包含的效果 --> <c:import url="/haha.jsp" var="i" scope="page"></c:import> <!-- 將頁面保存在變量i之中 --> ${i } </body> </html>
傳遞參數
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'haha.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> ${param.haha} 哈哈 </body> </html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <!-- 起到包含的效果 --> <c:import url="/haha.jsp" var="i" scope="page"> <c:param name="haha" value="haha"></c:param> </c:import> <!-- 將頁面保存在變量i之中 --> ${i } </body> </html>
十、<c:url>標簽
<c:url>標簽用于在jsp頁面中構造一個URL地址,其主要目的在于實現URL重寫。URL重寫就是將會話標識號以參數形式附加到URL地址的后面。
其實,就是進行session的追蹤。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSTL標簽庫</title> </head> <body> <c:url var="i" value="/haha.jsp"></c:url> <a href="${i }">haha.jsp</a> </body> </html>
十一、<c:redirect>標簽
用于實現請求重定向。
屬性名 | 是否支持EL | 屬性類型 | 屬性描述 |
url | √ | String | 指定要轉發或重定向到的目標資源的URL地址 |
context | √ | String | 當要使用相對路徑重定向到哦同一個服務器下的其他web應用程序中的資源的時候,context屬性指定其他web應用程序的名稱 |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。