JavaWeb核心技術系列教程(29)——JSTL Core標簽庫
講給Android程序員看的前端系列教程(40集免費****+源碼)
版權聲明
- 本文原創作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
Core標簽庫是JSTL中的核心標簽庫,該庫中包含Web應用中通用操作的標簽。在JSP頁面中,可使用taglib指令引入Core標簽庫:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
在此,我們對該庫中的常用標簽進行詳細講解。
<c:out>
<c:out>用于將文本或表達式的結果輸出到客戶端瀏覽器。
語法如下:
<c:out value="內容" [escapeXml="true|false"] [default="默認值"]/>
<c:out value="內容" [escapeXml="true|false"]>默認值</c:out>
在該語法中,各屬性作用如下:
- value屬性用于指定輸出的內容
- default屬性用于指定當value屬性值為null時所輸出的默認值
- escapeXml屬性用于指定是否將>、<、&、’、"等特殊字符進行HTML編碼轉換后再進行輸出,默認值為true表示先編碼后輸出。
示例如下:
Address
package cn.com;
public class Address {
private String province;
private String city;
private String street;
public Address() {
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
@Override
public String toString() {
return "Address [province=" + province + ", city=" + city + ", street=" + street + "]";
}
}
Person
package cn.com;
public class Person {
private String name;
private int age;
private Address address;
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", address=" + address + "]";
}
}
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="cn.com.Person"%>
<%@page import="cn.com.Address"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index</title>
</head>
<body>
<h2 style="color: red;">本文作者:谷哥的小弟</h2>
<h2 style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
<h2>c:out標簽使用示例</h2>
<h4>輸出字符串</h4>
<c:out value="Hello JSTL" />
<br/>
<h4>輸出對象屬性值</h4>
<%
Address address = new Address();
address.setProvince("河北省");
address.setCity("保定市");
address.setStreet("學府路");
Person person = new Person();
person.setName("周星星");
person.setAge(55);
person.setAddress(address);
request.setAttribute("person", person);
%>
<c:out value="${person.address.city}"></c:out>
<h4>輸出默認值</h4>
<h6>測試URL:http://localhost:8080/JSTL02/index.jsp</h6>
<h6>測試URL:http://localhost:8080/JSTL02/index.jsp?name=zxx</h6>
name:<c:out value="${param.name}" default="unknown" />
<br/>
name:<c:out value="${param.name}" >unknown</c:out>
<br/>
<h4>編碼特殊字符</h4>
<c:out value="<a >我的博客</a>" escapeXml="true"></c:out>
<br/>
<c:out value="<a >我的博客</a>" escapeXml="false"></c:out>
<br/>
<c:out value="<br/>" escapeXml="true"></c:out>
<br/>
<c:out value="<br/>" escapeXml="false"></c:out>
<br/>
</body>
</html>
結果如下:
<c:set>
<c:set>用于將屬性值保存至域、JavaBean、Map
語法如下:
將屬性值保存至域
<c:set var="屬性名" value="屬性值" [scope="page|request|session|application"]/>
<c:set var="屬性名" [scope="page|request|session|application"]>
屬性值
</c:set>
將屬性值保存至JavaBean或Map
<c:set property="屬性名" value="屬性值" target="JavaBean或Map"/>
<c:set property="屬性名" target="JavaBean或Map" >
屬性值
</c:set>
在該語法中,各屬性作用如下:
- var屬性用于指定域中所設置的屬性的名稱。
- value屬性用于設置屬性的值。
- scope屬性用于指定屬性所在的域。
- target屬性用于指定所設置屬性的對象,該對象必須是JavaBean對象或Map對象。
- property屬性用于指定所設置屬性的對象的屬性名稱。
示例如下:
Address
package cn.com;
public class Address {
private String province;
private String city;
private String street;
public Address() {
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
@Override
public String toString() {
return "Address [province=" + province + ", city=" + city + ", street=" + street + "]";
}
}
Person
package cn.com;
public class Person {
private String name;
private int age;
private Address address;
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", address=" + address + "]";
}
}
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="cn.com.Person"%>
<%@page import="cn.com.Address"%>
<%@page import="java.util.HashMap"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index</title>
</head>
<body>
<h2 style="color: red;">本文作者:谷哥的小弟</h2>
<h2 style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
<h2>c:set標簽使用示例</h2>
<h4>將屬性保存至page域</h4>
<c:set var="username" value="zxx" scope="page" />
從page域中得到屬性值:<c:out value="${pageScope.username}">unknown</c:out>
<br />
<h4>將屬性保存至request域</h4>
<c:set var="city" value="BeiJing" scope="request" />
從request域中得到屬性值:<c:out value="${requestScope.city}">unknown</c:out>
<br />
<h4>將屬性保存至session域</h4>
<c:set var="gender" value="male" scope="session" />
從session域中得到屬性值:<c:out value="${sessionScope.gender}">unknown</c:out>
<br />
<h4>將屬性保存至application域</h4>
<c:set var="hobby" value="movie" scope="application"></c:set>
從application域中得到屬性值:<c:out value="${applicationScope.hobby}">unknown</c:out>
<br />
<h4>將屬性保存至JavaBean</h4>
<%
Person person=new Person();
Address address=new Address();
session.setAttribute("person", person);
session.setAttribute("address", address);
%>
<c:set target="${person}" property="name" value="周星星" />
<c:set target="${person}" property="age" value="55" />
<c:set target="${address}" property="province">安徽</c:set>
<c:set target="${address}" property="city">合肥</c:set>
<c:set target="${address}" property="street">包公祠路</c:set>
<c:out value="${person.name}">unknown</c:out>
<br />
<c:out value="${person.age}">unknown</c:out>
<br />
<c:out value="${address.province}">unknown</c:out>
<br />
<c:out value="${address.city}">unknown</c:out>
<br />
<c:out value="${address.street}">unknown</c:out>
<br>
<h4>將屬性保存至Map</h4>
<%
HashMap<String,String> hashMap=new HashMap<String,String>();
request.setAttribute("hashMap", hashMap);
%>
<c:set target="${hashMap}" property="name" value="rose"></c:set>
<c:out value="${hashMap.name}"></c:out>
</body>
</html>
結果如下:
<c:if>
<c:if>主要用于條件判斷。
語法如下:
<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>
<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
body
</c:if>
在該語法中,各屬性作用如下:
- test屬性用于存放判斷的條件,常使用EL表達式作為判斷條件
- var屬性用于指定邏輯表達式中變量的名字
- scopes屬性用來指定var變量的作用范圍,默認為page
示例如下:
<%@ 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>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index</title>
</head>
<body>
<h2 style="color: red;">本文作者:谷哥的小弟</h2>
<h2 style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
<h2>c:if標簽使用示例</h2>
<c:set var="userid" value="zxx9527"/>
<c:if test="${not empty userid}">
userid:<c:out value="${userid}"/>
</c:if>
</body>
</html>
結果如下:
<c:choose> 、<c:when>、<c:otherwise>
在JSP頁面中可以JSTL的<c:choose> 、<c:when>、<c:otherwise>標簽進行類似于if else結構的條件判斷。
<c:choose>標簽沒有屬性,在它的標簽體中只能嵌套一個或多個<c:when>標簽和零個或一個<c:otherwise>標簽。
<c:when>標簽只有一個test屬性,該屬性的值為布爾類型。如果test屬性的值為true,則執行<c:when>標簽體的內容。
<c:otherwise>標簽沒有屬性,它作為<c:choose>標簽的最后分支出現,當所有的<c:when>標簽的test條件都不成立時才執行<c:otherwise>標簽體的內容。
示例如下:
<%@ 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>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index</title>
</head>
<body>
<h2 style="color: red;">本文作者:谷哥的小弟</h2>
<h2 style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
<h2>c:choose、c:when、c:otherwise標簽使用示例</h2>
<c:set var="score" value="88" />
<c:choose>
<c:when test="${score>=90}">
您的成績為優秀
</c:when>
<c:when test="${score>=70 && score<90}">
您的成績為良好
</c:when>
<c:when test="${score>=60 && score<70}">
您的成績為及格
</c:when>
<c:otherwise>
您的成績為不及格
</c:otherwise>
</c:choose>
</body>
</html>
結果如下:
<c:forEach> 、<c:forToken>
<c:forEach>用于迭代集合,例如:數組,List,Map
語法如下:
<c:forEach var="name" items="Collection" varStatus="StatusName" >
body
</c:forEach>
在該語法中,各屬性作用如下:
- var屬性用于表示當前迭代元素
- items屬性表示待遍歷的集合
- varStatus屬性表示當前迭代元素的狀態信息;請常用信息如下:
count:表示元素在集合中的序號,從1開始計數。
index:表示當前元素在集合中的索引,從0開始計數。
first:表示當前是否為集合中的第一個元素。
last:表示當前是否為集合中的最后一個元素。
<c:forToken>用于按照分隔符迭代字符串。
語法如下:
<c:forTokens var="substring" items="string" delims="delimiters">
body
</c:forTokens>
在該語法中,各屬性作用如下:
- var屬性用于表示當前迭代子串
- items屬性表示待迭代字符串
- delims屬性表示分隔符
示例如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.ArrayList"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index</title>
</head>
<body>
<h2 style="color: red;">本文作者:谷哥的小弟</h2>
<h2 style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
<h2>c:forEach、forToken標簽使用示例</h2>
<h4>c:forEach遍歷數組</h4>
<%
String [] fruitArray={"apple","orange","banana"};
%>
String數組中的元素:<br>
<c:forEach var="name" items="<%=fruitArray%>">
${name}<br />
</c:forEach>
<h4>c:forEach迭代Map</h4>
<%
HashMap<String,String> userHashMap = new HashMap<String,String>();
userHashMap.put("lili","ID123");
userHashMap.put("tutu","ID456");
userHashMap.put("pmpm","ID789");
%>
HashMap集合中的元素:<br>
<c:forEach var="user" items="<%=userHashMap%>">
${user.key}=${user.value}<br />
</c:forEach>
<h4>c:forEach迭代List</h4>
<%
ArrayList<String> teacherArrayList=new ArrayList<String>();
teacherArrayList.add("xixi");
teacherArrayList.add("lele");
teacherArrayList.add("rprp");
%>
ArrayList集合中的元素:<br>
<c:forEach var="teacher" items="<%=teacherArrayList%>">
${teacher}<br />
</c:forEach>
<h4>c:forEach迭代集合并獲取各元素狀態</h4>
<%
ArrayList<String> studentArrayList=new ArrayList<String>();
studentArrayList.add("adad");
studentArrayList.add("ftft");
studentArrayList.add("vmvm");
%>
ArrayList集合中的元素及其狀態:<br>
<table border="1">
<tr>
<td>元素的值</td>
<td>序號</td>
<td>索引</td>
<td>是否為第一個元素</td>
<td>是否為最后一個元素</td>
</tr>
<c:forEach var="student" items="<%=studentArrayList%>" varStatus="status">
<tr>
<td>${student}</td>
<td>${status.count}</td>
<td>${status.index}</td>
<td>${status.first}</td>
<td>${status.last}</td>
</tr>
</c:forEach>
</table>
<h4>c:forToken迭代字符串</h4>
<c:forTokens var="substring" items="明,天,又,是,充,滿,希,望,的,一,天" delims=",">
${substring}<br />
</c:forTokens>
</body>
</html>
結果如下:
<c:url>、 <c:param>、<c:redirect>
在JSP頁面中可使用JSTL標簽<c:url>、 <c:param>、<c:redirect>完成URL的重寫以及重定向等功能。
<c:url>用于重新構造URL。
<c:param>用于攜帶請求參數。
<c:redirect>負責重定向。
示例如下:
index.jsp
<%@ 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>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index</title>
</head>
<body>
<h2 style="color: red;">本文作者:谷哥的小弟</h2>
<h2 style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
<h2>c:url、c:param、c:redirect標簽使用示例</h2>
<c:url var="redirectURL" value="redirect.jsp">
<c:param name="username" value="倩倩" />
<c:param name="country" value="中國" />
</c:url>
<c:redirect url="${redirectURL}" />
</body>
</html>
redirect.jsp
<%@ 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>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Redirect Page</title>
</head>
<body>
<h2 style="color: red;">本文作者:谷哥的小弟</h2>
<h2 style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
<%
String username=request.getParameter("username");
String country=request.getParameter("country");
%>
username=<%= username%>
<br /><br />
country=<%= country%>
</body>
</html>
結果如下:
智能推薦
RHCS 集群套件的搭建(Fence)以及高可用集群的實現(httpd為例)
一、基礎概念 1.什么是集群? 是指一組相互獨立的計算機,利用高速通信網絡組成的一個較大的計算機服務系統,每個集群節點都是運行各自服務的獨立服務器,這些服務器之間可以彼此通信,協同向用戶提供應用程序,系統資源和數據,并以單一系統的模式加以管理。 2.集群的優點 高性能;價格有效性;可伸縮性;高可用;透明性;可管理;可編程 3.什么是RHCS? RHCS是Red Hat Cluster Suite的...
Windows上超詳細安裝 MySQL(包含解決VCRUNTIME140_1.dll丟失)
1.下載 到MySQL官網:https://www.mysql.com/downloads/ 或者到百度云:鏈接:https://pan.baidu.com/s/1sf1wGV_sIhrHZW4z1zdGlA 提取碼:p0g3 拉到下面點擊: 選擇紅框: 2.解壓安裝: 解壓下載的文件,一般(在C盤的Program Files文件里建一個MySQL文件夾)把文件解壓到那里面,我直接解壓在D盤;這個...
Linux學習(8)——Shell變量
目錄 概述 Bash變量之什么是變量與變量分類 1、變量命名規則 2、變量按照存儲數據分類 3、變量的分類 Bash變量之用戶自定義變量 1、定義變量 2、變量調用 3、變量疊加 4、變量查看 5、刪除變量 Bash變量之環境變量 1、設置環境變量 2、查看環境變量 3、刪除環境變量 4、常用環境變量 5、PATH環境變量 6、PS1環境變量 Bash變量之語系變量 1、當前語系查詢 2、語系變量...
Android View繪制(二)-繪制流程分發
Android View繪制(二)-繪制流程分發 Android View繪制(二)-繪制流程分發 從 addView() 說起 View.requestLayout() 方法 ViewRootImpl.requestLayout() 總結-android View 繪制流程 在上一篇文章,我們了解了 Android inflate 的流程,也就是布局文件 inflate 成 View 的簡要流程...
Java作業5
1. 實驗:利用IDE的debug功能給例6.4和例6.6的new語句設置斷點,使用單步調試(step into/step over)跟蹤子類對象實例化(初始化)的執行順序,并總結該過程。 1.為子類對象分配空間,對域變量默認初始化。 2.綁定構造方法,將new中的參數傳遞給構造方法的形式參數。 3.調用this或super語句。二者必居其一,不能同時存在。 4.進行實例變量的顯式初始化操作如: ...
猜你喜歡
蒙特卡羅模擬賭徒人生
在學習的過程中也要多思考。 模擬賭徒的人生,每一次都是隨機的過程,模擬完整個過程,根據結果可以判斷賭徒最后的輸贏情況。 代碼如下: 需要注意的是,每次運行的結果都是不一樣的,最后可能輸錢也可能贏錢,在這過程中,要遵守的原則是,如果在賭場中玩家錢已經輸完了,那他得退出游戲。...
Object類
經過了一系列的學習可以發現有一個最麻煩的問題出現了:現在有對象、數組接口,那么這么多數據怎么能夠進行統一呢?于是就有了Object類的設計。 一、Object類的基本定義 Object類是所有類的父類,也就是說任何一個類在定義的時候如果沒有明確的繼承一個父類的話,那么它就是Object類的子類,也就是說,以下兩種類定義的最終效果是完全相同的: class Book{} class&nbs...
springboot集成swagger2
簡介 當前很多項目需要前后端分離,一般主流的架構是vue+springboot。 前端團隊:于前端控制層+視圖層 后端團隊:后端控制層+服務層+數據訪問層 當前后端分離后,前端需要去調用后端的接口,如果能讓前端及時的了解后端接口的情況,就能夠減少前端和后端的溝通成本,就有了swagger springboot集成swagger 新建一個maven 項目 引入jar包,在pom.xml中引入swag...
Leetcode算法題(五)---------羅馬數字轉整數
Leetcode算法題(五)---------羅馬數字轉整數 題目:羅馬數字包含以下七種字符: I, V, X, L,C,D 和 M。 例如, 羅馬數字 2 寫做 II ,即為兩個并列的 1。12 寫做 XII ,即為 X + II 。 27 寫做 XXVII, 即為 XX + V + II 。 通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 4 不寫做 IIII,而是 IV。...
RabbitMQ:Exchange的Direct類型的介紹和使用
1.聲明 當前內容用于本人學習和復習RabbitMQ的使用,當前內容主要用于分析和使用Exchange的Direct類型,發現其中的使用方式和具體操作 2.Direct Exchange的介紹 這里主要參考:RabbitMQ的Direct Exchange 直接交換基于消息路由**將消息傳遞到隊列。直接交換是消息單播路由的理想選擇(盡管它們也可以用于多播路由)。下面是它的工作原理: 隊列使用路由*...