国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JSTL 標簽庫 使用(web基礎學習筆記十九)

2019-11-14 22:50:26
字體:
來源:轉載
供稿:網友
JSTL 標簽庫 使用(web基礎學習筆記十九)標簽庫概要:

一、C標簽庫介紹1.1、<c:>核心標簽庫

JSTL 核心標簽庫(C標簽)標簽共有13個,功能上分為4類:1.表達式控制標簽:out、set、remove、catch2.流程控制標簽:if、choose、when、otherwise3.循環標簽:forEach、forTokens4.URL操作標簽:import、url、redirect

二、表達式控制標簽2.1、out標簽

<c:out value="" escapexml="" default=""></c:out>

功能: <c:out>主要用來顯示數據的內容

共有3個屬性value是顯示的內容,escapXML是否要轉義true/false,設置為true將按原來的內容輸出,flase將由瀏覽器解析,default設置默認值

value屬性是必添的,escapeXml屬性是true時,不解析特殊字符,false時,解析特殊 字符

<c:out>用來顯示數據對象(字符串、表達式)的內容或結果:

<c:out value="&lt;這是超連接&gt;" escapeXml="false" default="默認值"></c:out><br><c:out value="&lt;這是超連接&gt;" escapeXml="true" default="默認值"></c:out>

2.2、set標簽

用于將變量存取于 jsp 范圍中或 javaBean 屬性中

功能: <c:set>主要用來將變量存儲至JSP 范圍中或是 JavaBean 的屬性或Map 對象中。 屬性列表:

用戶類

package com.pb.entity;/** * 用戶類 *  * @author 森林森 * */public class User {    // 用戶名,密碼和年齡    PRivate String uname;    private String pwd;    // 封裝    public String getUname() {        return uname;    }    public void setUname(String uname) {        this.uname = uname;    }    public String getPwd() {        return pwd;    }    public void setPwd(String pwd) {        this.pwd = pwd;    }    }

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><<jsp:useBean id="news" class="com.pb.news.entity.News" scope="page"></jsp:useBean><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><c:out value="&lt;這是超連接&gt;" escapeXml="false" default="默認值"></c:out><br><c:out value="&lt;這是超連接&gt;" escapeXml="true" default="默認值"></c:out><br><c:set var="name1" value="張三" scope="page"></c:set><c:set var="name2" scope="request">李四</c:set><c:set target="${news }" property="title" value="下雪了"></c:set><c:set target="${news }" property="id" >32</c:set><ul><li>從page中重到的值${pageScope.name1 }</li><li>從page中重到的值${name2 }</li><li>從java中獲取的值title:${news.title }</li><li>${news.id }</li></ul></body></html>

2.3、remove標簽

主要用來從指定的 jsp 范圍內移除指定的變量。功能:主要負責移除變量

<c:remove var="變量名" [scope="page|request|session|application"]></c:remove>

<c:remove var="username" scope="session"/>${sessionScope.username}—輸不出結果

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><<jsp:useBean id="news" class="com.pb.news.entity.News" scope="page"></jsp:useBean><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><c:out value="&lt;這是超連接&gt;" escapeXml="false" default="默認值"></c:out><br><c:out value="&lt;這是超連接&gt;" escapeXml="true" default="默認值"></c:out><br><c:set var="name1" value="張三" scope="page"></c:set><c:set var="name2" scope="request">李四</c:set><c:set target="${news }" property="title" value="下雪了"></c:set><c:set target="${news }" property="id" >32</c:set><ul><li>從page中重到的值${pageScope.name1 }</li><li>從page中重到的值${name2 }</li><li>從java中獲取的值title:${news.title }</li><li>${news.id }</li><c:remove var="name1" scope="page"/><c:remove var="name2" scope="request"/><li>從page中重到的值${pageScope.name1 }</li><li>從page中重到的值${name2 }</li></ul></body></html>

2.4、catch標簽

<c:catch>用來處理 JSP 頁面中產生的異常,并存儲異常信息

<c:catch var="name1">

容易產生異常的代碼

</c:catch>

如果拋異常,則異常信息保存在變量 name1 中。

2.5、綜合以上
package com.pb.entity;/** * 用戶類 *  * @author 森林森 * */public class User {    // 用戶名,密碼和年齡    private String uname;    private int pwd;    // 封裝    public String getUname() {        return uname;    }    public void setUname(String uname) {        this.uname = uname;    }    public int getPwd() {        return pwd;    }    public void setPwd(int pwd) {        this.pwd = pwd;    }    }

jsp頁面

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><jsp:useBean id="user" class="com.pb.entity.User" scope="page"></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><!-- c:set標簽普通使用 --><c:set var="name1" value="張三" scope="request"></c:set><c:set var="name2" value="李四" scope="page"></c:set><!-- c:set標簽java Bean使用 --><c:set target="${user }" property="uname" value="張三豐"></c:set><c:set target="${user }" property="pwd" value="108101"  ></c:set><!-- 輸出里作用域可以 省略 -->name1的值:<c:out value="${requestScope.name1 }"></c:out><br>name2的值:<c:out value="${pageScope.name2 }"></c:out><br>javaBean引用uname的值:<c:out value="${user.uname }"></c:out><br>javaBean引用pwd的值:<c:out value="${user.pwd }"></c:out><br><!-- c:remove --><c:remove var="name1"/>name1的值:<c:out value="${name1 }"></c:out><br><!-- 異常 --><!-- 以下如不加c:catch,頁面將無法打開 --><c:catch var="c1"><c:set target="${user }" property="age" value="18"></c:set>javaBean中沒有age屬性:<c:out value="${user.age }"></c:out></c:catch><!-- 頁面并沒有顯示 ,catch中的內容--><!-- 輸出異常 --><c:out value="${c1 }"></c:out></body></html>

三、流程控制標簽

3.1、if標簽

功能:主要用于進行if 判斷,如果為true,則輸出標簽體中的內容

<!-- c:set標簽普通使用 --><c:set var="name1" value="張三" scope="request"></c:set><c:set var="name2" value="李四" scope="page"></c:set><!-- c:set標簽java Bean使用 --><c:set target="${user }" property="uname" value="張三豐"></c:set><c:set target="${user }" property="pwd" value="108101"  ></c:set><!-- 輸出里作用域可以 省略 --><c:if test="${name1=='李四' }" var="q">name1的值為:${name1 }</c:if>q的值:<c:out value="${q }"></c:out><br><c:if test="${name2=='李四' }" var="flag">nam2的值:${name2 }</c:if>flag的值:<c:out value="${flag }"></c:out><br><c:if test="${user.uname=='張三豐' }" var="flag">javaBean中user.uname的值:${user.uname }</c:if>flag的值:<c:out value="${flag }"></c:out><br><c:if test="${user.pwd eq 123}" var="flag">javaBean中user.pwd的值:${user.pwd }</c:if>flag的值:<c:out value="${flag }"></c:out><br>

3.2、choose、when、otherwise

三個標簽通常嵌套使用,第一個標簽在最外層,最后一個標簽在嵌套中只能使用一次

和java中switch 類似

switch--choose

case---when

default--otherwise

以上關系

也和多重if--else if--else if ---else功能類似

<c:choose>、<c:when>和<c:otherwise>標簽的使用必須符合以下語法規則:

<c:when>和<c:otherwise>不能單獨使用,它們必須位于<c:choose>父標簽中。

在<c:choose>標簽中可以包含一個或多個<c:when>標簽。

在<c:choose>標簽中可以不包含<c:otherwise>標簽。

在<c:choose>標簽中如果同時包含<c:when>和<c:otherwise>標簽,那么<c:otherwise>必須位于<c:when>標簽之后。

<%@page import="java.util.Random"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><jsp:useBean id="user" class="com.pb.entity.User" scope="page"></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>choose、when和otherwise標簽應用示例</title></head><body><%//隨機產生100以內的隨機整數   Random r=new Random();  int i=r.nextInt(100);  //將結果放在請求中  request.setAttribute("i", i);  %><c:choose><c:when test="${i>90 }">i的值大于90!</c:when><c:when test="${i>80 }">i的值大于80!</c:when><c:when test="${i>70 }">i的值大于70!</c:when><c:when test="${i>60 }">i的值大于60!</c:when><c:when test="${i>50 }">i的值大于50!</c:when><c:otherwise>i的值小于50,不算在內!</c:otherwise></c:choose></body></html>

多次刷新頁面可以看到不同的結果

四、循環標簽4.1、forEach

功能: <c:forEach>為循環控制,它可以將數組,集合(Collection)中的成員循序瀏覽一 遍。 屬性列表:

status.index 輸出當前行的索引號

status.coun 輸出已遍歷的行數

status.first 輸出當前行是否是第一行

status.last 輸出當前行是否是最后一行

示例

<%@page import="java.util.HashMap"%><%@page import="java.util.Enumeration"%><%@page import="java.util.Vector"%><%@page import="java.util.ArrayList"%><%@page import="com.pb.entity.User"%><%@page import="java.util.List"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><jsp:useBean id="user" class="com.pb.entity.User" scope="page"></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>forEach標簽應用示例</title></head><body><%  List<User>users= new ArrayList<User>();   for(int i=0;i<5;i++){      User u=new User();      u.setUname("T"+i);      u.setPwd("00"+i);      users.add(u);  }  request.setAttribute("users", users);%><table border="1" align="center"><tr> <th>用戶名</th> <th>密碼</th> <th>當前行的索引</th> <th>已遍歷的行數</th><th>是否第一行</th> <th>是否最后一行</th> </tr><c:forEach  var="user" items="${users }" varStatus="status"><tr> <td><c:out value="${user.uname }"></c:out></td> <!-- 用戶名 --><td><c:out value="${user.pwd }"></c:out></td> <!-- 密碼 --><td>${status.index }</td> <!--輸出當前行的索引號--><td>${status.count }</td><!--輸出已遍歷的行--><td>${status.first }</td> <!--輸出當前行是否是第一行--><td>${status.last }</td> <!--輸出當前行是否是最后一行--></tr></c:forEach></table><br><table border="1" align="center"><tr> <th>用戶名</th> <th>密碼</th> <th>當前行的索引</th> <th>已遍歷的行數</th><th>是否第一行</th> <th>是否最后一行</th> </tr><!-- 指定開始和結束位置 --><c:forEach  var="user" items="${users }" varStatus="status" begin="0" end="2"><tr> <td><c:out value="${user.uname }"></c:out></td> <!-- 用戶名 --><td><c:out value="${user.pwd }"></c:out></td> <!-- 密碼 --><td>${status.index }</td> <!--輸出當前行的索引號--><td>${status.count }</td><!--輸出已遍歷的行--><td>${status.first }</td> <!--輸出當前行是否是第一行--><td>${status.last }</td> <!--輸出當前行是否是最后一行--></tr></c:forEach></table><br><%--通過<c:forEach>輸出從1到10的數據不設置步上,默認為1--%><c:forEach var="i" begin="1" end="10">${i }</c:forEach><br><%--通過<c:forEach>輸出從1到10的數據--%><!--設置步長為2,只輸出奇數 --><c:forEach var="i" begin="1" end="10" step="2">${i }</c:forEach><br><%--通過<c:forEach>輸出從1到10的數據--%><!-- 能過c:if判斷只輸入偶數 --><c:forEach var="i" begin="1" end="10"><c:if test="${i%2==0 }">${i }</c:if></c:forEach><br></body></html>

<%@page import="java.util.HashMap"%><%@page import="java.util.Enumeration"%><%@page import="java.util.Vector"%><%@page import="java.util.ArrayList"%><%@page import="com.pb.entity.User"%><%@page import="java.util.List"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><jsp:useBean id="user" class="com.pb.entity.User" scope="page"></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>forEach標簽應用示例</title></head><body><%  List<User>users= new ArrayList<User>();   for(int i=0;i<5;i++){      User u=new User();      u.setUname("T"+i);      u.setPwd("00"+i);      users.add(u);  }  request.setAttribute("users", users);%><table border="1" align="center"><tr> <th>用戶名</th> <th>密碼</th> <th>當前行的索引</th> <th>已遍歷的行數</th><th>是否第一行</th> <th>是否最后一行</th> </tr><c:forEach  var="user" items="${users }" varStatus="status"><tr> <td><c:out value="${user.uname }"></c:out></td> <!-- 用戶名 --><td><c:out value="${user.pwd }"></c:out></td> <!-- 密碼 --><td>${status.index }</td> <!--輸出當前行的索引號--><td>${status.count }</td><!--輸出已遍歷的行--><td>${status.first }</td> <!--輸出當前行是否是第一行--><td>${status.last }</td> <!--輸出當前行是否是最后一行--></tr></c:forEach></table><br><table border="1" align="center"><tr> <th>用戶名</th> <th>密碼</th> <th>當前行的索引</th> <th>已遍歷的行數</th><th>是否第一行</th> <th>是否最后一行</th> </tr><!-- 指定開始和結束位置 --><c:forEach  var="user" items="${users }" varStatus="status" begin="0" end="2"><tr> <td><c:out value="${user.uname }"></c:out></td> <!-- 用戶名 --><td><c:out value="${user.pwd }"></c:out></td> <!-- 密碼 --><td>${status.index }</td> <!--輸出當前行的索引號--><td>${status.count }</td><!--輸出已遍歷的行--><td>${status.first }</td> <!--輸出當前行是否是第一行--><td>${status.last }</td> <!--輸出當前行是否是最后一行--></tr></c:forEach></table><br><%--通過<c:forEach>輸出從1到10的數據不設置步上,默認為1--%><c:forEach var="i" begin="1" end="10">${i }</c:forEach><br><%--通過<c:forEach>輸出從1到10的數據--%><!--設置步長為2,只輸出奇數 --><c:forEach var="i" begin="1" end="10" step="2">${i }</c:forEach><br><%--通過<c:forEach>輸出從1到10的數據--%><!-- 能過c:if判斷只輸入偶數 --><c:forEach var="i" begin="1" end="10"><c:if test="${i%2==0 }">${i }</c:if></c:forEach><br><%--通過<c:forEach>遍歷數組,枚舉,集合等--%><%int[]intarr=new int[]{10,20,30,40,50}; String[]strarr=new String[]{"I","am","a","handsome","boy"}; Vector v=new Vector(); v.add("This");v.add("is"); v.add("a"); v.add("Enumeration");v.add("example"); Enumeration e=v.elements(); HashMap h=new HashMap(); h.put("hello","0"); h.put("hello1","1"); h.put("hello2","2"); h.put("hello3","3"); h.put("hello4","4"); request.setAttribute("intarr",intarr); request.setAttribute("strarr",strarr); request.setAttribute("e",e); request.setAttribute("h",h);%><h3>遍歷整形數組</h3><%--遍歷整形數組--%><c:forEach items="${intarr }" var="i"><c:out value="${i }"></c:out></c:forEach><h3>--遍歷字符串數組--</h3><c:forEach items="${strarr }" var="s"><c:out value="${s }"></c:out></c:forEach><h3>--遍歷枚舉--</h3> <%--遍歷枚舉--%><c:forEach items="${e }" var="e"><c:out value="${e }"></c:out></c:forEach><h3>--遍歷HashMap--</h3> <%--遍歷HashMap--%><c:forEach items="${h }" var="h"><c:out value="${h.key }"></c:out>=<c:out value="${h.value }"></c:out></c:forEach></body></html>
4.2、forTokens

需求,對帶有相同符合格式內容進行分割輸出,例如,varstr="1,2,3,4,5,6"

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!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>c:forTokens 標簽實例</title></head><body><c:forTokens items="張三豐、張無忌、張翠冊、殷素素" delims="、" var="item" varStatus="status"><h4>元素的值:<c:out value="${item }"></c:out><br></h4>當前索引<c:out value="${status.index }"></c:out><br>當前次數<c:out value="${status.count }"></c:out><br>是否為第一個<c:out value="${status.first }"></c:out><br>是否為最后一個<c:out value="${status.last }"></c:out><br></c:forTokens></body></html>

五 、URL操作標簽5.1、import

<c:import>標簽提供了所有<jsp:include>行為標簽所具有的功能,同時也允許包含絕對URL。

使用<c:import>標簽可以包含一個服務器中不同的網頁內容。

功能: <c:import>可以把其他靜態或動態文件包含至本身JSP 網頁。

注意:<c:import>與<jsp:include>的區別<jsp:include>只能包含和自己同一個Web 應用程序下的文件;

而<c:import>除了能 包含和自己同一個Web 應用程序的文件外,亦可以包含不同Web 應程序或者是其 它網站的文件

通過<c:import>標簽的var和scope屬性可以將url屬性所對應的頁面內容以String的類型存儲至varName中,但此時這個頁面并不會輸出到主包含文件的頁面中.存儲之后的數據,在需要的時候可以將它通過EL表達式將其取出.這里我發現一個問題,在這里取出被包含頁面中的內容的時候一定要注意只能直接使用EL表達式取出,而不能使用<c:out>標簽取出,因為被包含頁面的內容都是以String類型存儲于var變量中的,所以在輸出的時候通過<c:out>會以String類型輸出至主包含頁面之中.具體表現如下
<h4 align="center">絕對路徑引入</h4><c:import url="http://www.baidu.com" var="b"></c:import><c:out value="${b }"></c:out>

換成EL表達輸出則可以顯示正確

<h4 align="center">絕對路徑引入</h4><c:import url="http://www.baidu.com" var="b"></c:import>${b }

相對路徑引入

<h2 align="center">同一目錄相對路徑引用</h2><!-- 同一文件下的引用 --><c:import url="./cfortaoken.jsp"></c:import><hr><h2 align="center">不同目錄相對路徑引用</h2><%--<c:import>標簽+var屬性+<c:param>標簽 三者組合使用 --%><c:import url="/test/cif.jsp"></c:import><hr><c:import url="/jsp/test.jsp" ><c:param name="name" value="張三豐"></c:param></c:import><h2>傳參數</h2><c:import url="http://www.baidu.com/s">              <!--等于在baidu中搜索Oracle--><c:param name="wd" value="oracle"></c:param></c:import>

Url為本地的,并不是遠程的

5.2<c:param> 標簽

<c:param>標簽用于在<c:import>和<c:url>標簽中指定參數,而且與URL編碼相關。

在<c:param>標簽內,name屬性表明參數的名稱,value屬性表明參數的值

屬性描述是否必要默認值
nameURL中要設置的參數的名稱
value參數的值Body
<c:import url="/jsp/test.jsp"><c:param name="uname1" value="john"></c:param><c:param name="uname2" value="Hello"></c:param></c:import><hr><c:url value="/jsp/test.jsp" var="pp"><c:param name="id" value="123"></c:param><c:param name="name" value="java"></c:param></c:url><hr><br>${pp }

5.3、url標簽

功能: <c:url>主要用來產生一個URL

<h3>c url標簽實例</h3><%--生成一個URL變量 --%><c:url value="http://www.baidu.com" var="conn" scope="page"></c:url><%--輸出變量 --%><a href="<c:out value="${conn }"></c:out>">百度</a><br><c:url value="/jsp/cif.jsp" var="myurl"></c:url><a href="${myurl }">我的連接</a><br><c:out value="${myurl }"></c:out><br>

5.4、redirect標簽

<c:redirect>標簽通過自動重寫URL來將瀏覽器重定向至一個新的URL,它提供內容相關的URL,并且支持c:param標簽。

該標簽用來實現請求的重定向。例如,對用戶輸入的用戶名和密碼進行驗證,不成功則重定向到登錄頁面。或者實現Web應用不同模塊之間的銜接

c:redirect標簽有如下屬性:

屬性描述是否必要默認值
url目標URL
context緊接著一個本地網絡應用程序的名稱Body

<!--重定向外部URL--><c:redirect url="http://www.baidu.com/"></c:redirect><%--相對路徑本地重定向并轉參 --%><c:redirect url="/jsp/test.jsp"><c:param name="uname1" value="張三豐"></c:param><c:param name="uname2" value="張無忌"></c:param></c:redirect>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉源县| 温宿县| 五指山市| 林芝县| 平谷区| 汉沽区| 分宜县| 威信县| 正定县| 游戏| 象山县| 湖口县| 讷河市| 文化| 正安县| 罗山县| 乌审旗| 巨鹿县| 泸定县| 鄂托克前旗| 中江县| 高邑县| 正蓝旗| 肇源县| 鄂托克前旗| 武定县| 夏河县| 河西区| 通山县| 东丰县| 同德县| 游戏| 四会市| 呈贡县| 枣庄市| 洛隆县| 山东| 阆中市| 揭东县| 喜德县| 广安市|