溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JSTL標簽庫

發(fā)布時間:2020-07-11 03:20:08 來源:網(wǎng)絡(luò) 閱讀:359 作者:Java大S 欄目:開發(fā)技術(shù)

一、JSTL簡介

  JSTL的全稱:JSP Standard Tag Libary,JSP的標準標簽庫

  JSTL的作用:

    提供給Java web開發(fā)人員一個標準通用的標簽函數(shù)庫。

    和EL來取來傳統(tǒng)直接在頁面上嵌入Java程序的做法,以提供程序可讀性、維護性和方便性。

  JSTL的版本:

    JSTTL的主要版本是1.0、1.1和1.2。

    1.0版本EL表達式還沒有納入官方規(guī)范。

    1.0和1.2版本EL表達式已經(jīng)納入官方規(guī)范。


二、<c:out>標簽

  輸出常量和域范圍中的變量(value屬性,使用EL表達式)。

  輸出默認值(default屬性)。

  默認HTML標簽不轉(zhuǎn)義(escapeXML)。

屬性名是否支持EL屬性類型屬性描述
valueObject指定要輸出的內(nèi)容
escapeXMLBoolean指定是否將>、<等特殊字符進行HTML編碼轉(zhuǎn)換后再進行輸出,默認值是true。
defaultObject指定如果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屬性)。

  設(shè)置web域中java.util.Map類型的屬性對象或Javabean類型的屬性對象的屬性(target prperty value屬性)。

屬性名是否支持EL屬性類型屬性描述
valueObject用于指定屬性值
var×String用于指定要設(shè)置的web域?qū)傩缘拿Q
scope×String用于指定屬性所在的web域
targetObject用于指定要設(shè)置屬性的對象,這個對象必須是Javabean對象或java.utl.Map對象
propertyString用于指定當前要為對象設(shè)置的屬性名稱


示例:向4個web域?qū)ο蟠嫒胫?/p>

<%@ 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>
  <!-- 傳統(tǒng)方式 -->
  	<%
  	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>標簽用于捕獲嵌套在標簽體中的內(nèi)容拋出的異常,其語法格式如下:

<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="">標簽可以構(gòu)造簡單的"if-then"結(jié)構(gòu)的條件表達式。

屬性名是否支持EL 屬性類型屬性描述
testboolean決定是否處理標簽體中的內(nèi)容的條件表達式
var×String用于指定將test屬性的之后定結(jié)果保存到某個web域中的某個屬性的名稱
scope×String指定將test屬性的執(zhí)行結(jié)果保存到那個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 表示判斷的結(jié)果
	 -->
  	<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>這三個標簽,可以構(gòu)造類似“if-else”的復(fù)雜條件判斷結(jié)構(gòu)

<%@ 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>標簽用于對一個集合對象中的元素進行循環(huán)迭代操作,或者按照指定的次數(shù)重復(fù)迭代標簽體中的內(nèi)容。

屬性名是否支持EL屬性類型屬性描述
var×String指定將當前迭代到的元素保存到page這個web域中的屬性名稱
varstatus×String記住用于保存迭代信息的對象
items任何支持的類型將要迭代的集合對象
beginint如果指定items屬性,就從集合中的第begin個元素開始進行迭代,begin的索引值從0開始編碼;如果沒有指定items屬性,就從begin指定的值開始迭代,直到end值結(jié)束迭代
endint參看begin屬性的描述
stepint指定迭代的步長


示例:遍歷數(shù)組

<%@ 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屬性

  記錄迭代相關(guān)的信息

屬性類型意義
indexnumber現(xiàn)在指到成員的索引
countnumber總共指到成員的總數(shù)
firstboolean現(xiàn)在指到的成員是否為第一個成員
lastboolean現(xiàn)在指到的成員是否為最后一個成員

示例:遍歷10到100的偶數(shù),每到第三個數(shù),顯示為紅色

<%@ 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的相關(guān)操作時,經(jīng)常需要在URL地址后面附加一些參數(shù)。<c:param>標簽可以嵌套在<c:import>和<c:url>以及<c:redirect>標簽內(nèi),為這些標簽所使用的URL地址附加參數(shù)。

  <c:param>標簽在為一個URL地址附加參數(shù)的時候,會自動對參數(shù)值進行URL編碼。

<c:param name="" value=""></c:param>


九、<c:import>標簽

名稱說明EL類型必須默認值
url一文件被包含的地址String 
context虛擬路徑String
var存儲被包含文件的內(nèi)容(以String類型存入)×String
scopevar變量的jsp范圍×Stringpage
charEncoding被包含文件之內(nèi)容的編碼格式String
varReader存儲被包含文件的內(nèi)容(以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>


傳遞參數(shù)

<%@ 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頁面中構(gòu)造一個URL地址,其主要目的在于實現(xiàn)URL重寫。URL重寫就是將會話標識號以參數(shù)形式附加到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>標簽

  用于實現(xiàn)請求重定向。

屬性名是否支持EL屬性類型屬性描述
urlString指定要轉(zhuǎn)發(fā)或重定向到的目標資源的URL地址
contextString當要使用相對路徑重定向到哦同一個服務(wù)器下的其他web應(yīng)用程序中的資源的時候,context屬性指定其他web應(yīng)用程序的名稱

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI