1. JSTL 標(biāo)簽庫介紹
- JSTL 標(biāo)簽庫 是指 JSP Standard Tag Library :JSP 標(biāo)準(zhǔn)標(biāo)簽庫
- EL 表達(dá)式是為了替換 jsp 中的表達(dá)式腳本,JSTL 是為了替換代碼腳本。這樣 jsp 頁面變得更佳簡潔
- JSTL 由五個標(biāo)簽庫組成
- 使用 JSTL,需要導(dǎo)入相關(guān)的 jar 包
2. JSTL 快速入門
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jstl的快速入門</title>
</head>
<body>
<h1>jstl的快速入門</h1>
<%--解讀
1. c:if ... 類似
2. if(10>2){
out.println("<h1>10 > 2 成立~</h1>")
}
--%>
<c:if test="${10 < 2}">
<h1>10 > 2 成立~</h1>
</c:if>
</body>
</html>
注意細(xì)節(jié)
● taglib 引入標(biāo)簽,要放在行首
● 導(dǎo)入 jstl jar 包后,要重新發(fā)布 web 工程,否則不識別 jstl
3. core 核心庫
3.1 <c:set />
- 介紹:
<c:set scope="request" var="username" value="hello~"/>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>c:set標(biāo)簽的使用</title>
</head>
<body>
<h1>c:set標(biāo)簽的使用</h1>
<%--<%--%>
<%-- //Java代碼--%>
<%-- request.setAttribute("email", "hsp@sohu.com");--%>
<%--%>--%>
<%--解讀
<c:set /> set 標(biāo)簽可以往域中保存數(shù)據(jù)
1. 等價 域?qū)ο?span id="n5n3t3z" class="token punctuation">.setAttribute(key,value);
2. scope 屬性設(shè)置保存到哪個域
page 表示 PageContext 域(默認(rèn)值)
request 表示 Request 域
session 表示 Session 域
application 表示 ServletContext 域
3. var 屬性設(shè)置 key 是什么
4. value 屬性設(shè)置值
--%>
<c:set scope="request" var="name" value="hello~"></c:set>
c:set-name的值${requestScope.name}
</body>
</html>
3.2 <c:if />
- 介紹
<c:if test="${ 10 > 2 }">hello</c:if>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>c:if標(biāo)簽使用</title>
</head>
<body>
<c:set scope="request" var="num1" value="20"></c:set>
<c:set scope="request" var="num2" value="10"></c:set>
<c:if test="${num1 > num2}">
<h1>${num1} > ${num2}</h1>
</c:if>
</body>
</html>
3.3 <c:choose> <c:when> <c:otherwise>標(biāo)簽
- 介紹: 多路判斷。跟 switch … case … default 非常接近
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>c:choose標(biāo)簽的使用</title>
</head>
<body>
<h1>c:choose標(biāo)簽的使用</h1>
<%
request.setAttribute("score", 50);
//request.setAttribute("k1", "request-k1的值");
//session.setAttribute("k1", "session-k1的值");
//application.setAttribute("k1", "application-k1的值");
//pageContext.setAttribute("k1", "pageContext-k1的值~");
%>
<%--老師多說一句
1. 如果${requestScope.score} 那么就明確的指定從request域?qū)ο笕〕鰯?shù)據(jù)
2. 如果${score}, 這是就按照從小到大的域范圍去獲取 pageContext->request->session->application
3. 一會給小伙伴驗證一把.
--%>
k1=${k1}
<c:choose>
<%--test雙引號內(nèi)不要隨便加空格 會導(dǎo)致該語句失效--%>
<c:when test="${requestScope.score > 80}">
<h1>${score}-成績優(yōu)秀</h1>
</c:when>
<c:when test="${requestScope.score >= 60}">
<h1>${score}-成績一般, 及格了</h1>
</c:when>
<c:otherwise>
<h1>${score}-沒有及格,下次努力~</h1>
</c:otherwise>
</c:choose>
</body>
</html>
3.4 <c:forEach />標(biāo)簽
- 介紹
c:forEach
標(biāo)簽 用來遍歷輸出, 主要有 4 種形式:
● 普通遍歷輸出 i 到 j
● 遍歷數(shù)組
● 遍歷 Map
● 遍歷 List
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="com.hspedu.entity.Monster" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>c:forEach 標(biāo)簽</title>
</head>
<body>
<h1>c:forEach 標(biāo)簽</h1>
<hr/>
<h1>第1種遍歷方式從i到j(luò)</h1>
<ul>
<%--
1.遍歷 1 到 5,
2. 輸出 begin 屬性設(shè)置開始的索引 end 屬性設(shè)置結(jié)束的索引
3. var 屬性表示循環(huán)的變量(也是當(dāng)前正在遍歷到的數(shù)據(jù))
4. 等價 for (int i = 1; i <= 5; i++) {}
5. 在默認(rèn)情況下, i 每次會遞增1
--%>
<c:forEach begin="1" end="5" var="i">
<li>排名=${i}</li>
</c:forEach>
</ul>
<hr/>
<h1>第2種遍歷方式:遍歷數(shù)組</h1>
<%
request.setAttribute("sports", new String[]{"打籃球", "乒乓球"});
%>
<%--
<c:forEach items="${ requestScope.sports }" var="item"/>
1. items 遍歷的集合/數(shù)組
2. var 遍歷到的數(shù)據(jù)
3. 等價 for (Object item: arr) {}
--%>
<c:forEach items="${requestScope.sports}" var="sport">
運動名稱= ${sport}<br/>
</c:forEach>
<hr/>
<h1>第3種遍歷方式:遍歷Map</h1>
<%
Map<String, Object> map = new HashMap<>();
map.put("key1", "北京");
map.put("key2", "上海");
map.put("key3", "天津");
request.setAttribute("cities", map);
%>
<%--
1. items 遍歷的map集合
2. var 遍歷到的數(shù)據(jù)
3. entry.key 取出key
4. entry.value 取出值
--%>
<c:forEach items="${requestScope.cities}" var="city">
城市信息: ${city.key}--${city.value}<br/>
</c:forEach>
<hr/>
<h1>第4種遍歷方式:遍歷List</h1>
<%
List<Monster> monsters = new ArrayList<>();
monsters.add(new Monster(100, "小妖怪", "巡山的"));
monsters.add(new Monster(200, "大妖怪", "做飯的"));
monsters.add(new Monster(300, "老妖怪", "打掃位置的"));
request.setAttribute("monsters", monsters);
%>
<%--
items 表示遍歷的集合
var 表示遍歷到的數(shù)據(jù)
begin 表示遍歷的開始索引值 ,從0開始計算
end 表示結(jié)束的索引值
step 屬性表示遍歷的步長值
varStatus 屬性表示當(dāng)前遍歷到的數(shù)據(jù)的狀態(tài),可以得到step,begin,end等屬性值
//老師提示, 對于jstl標(biāo)簽,能看懂,會使用即可
--%>
<c:forEach items="${requestScope.monsters}" var="monster">
妖怪的信息: ${monster.id}-${monster.name}-${monster.skill}<br/>
</c:forEach>
</body>
</html>
Monster.java
public class Monster {
private Integer id;
private String name;
private String skill;
public Monster(Integer id, String name, String skill) {
this.id = id;
this.name = name;
this.skill = skill;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSkill() {
return skill;
}
public void setSkill(String skill) {
this.skill = skill;
}
}
4. JSTL+EL 作業(yè)
4.1 作業(yè)布置
● 需求分析:
使用 jsp+servlet+jstl+el 完成查詢-顯示案例, 需求如圖
- 點擊超鏈接, 可以顯示所有的妖怪信息
- 要求顯示的數(shù)據(jù)在 Servlet 準(zhǔn)備,并放入到 request 域?qū)ο?/li>
- 擴(kuò)展, 如果要求增加根據(jù) id 條件過濾, 怎么處理? - 老韓忠告:一定要自己先思考->完成->再看評講
● 思路分析(程序框架圖)
4.2 作業(yè)評講
query.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>查詢妖怪</title>
</head>
<body>
<h1>查詢妖怪</h1>
<a href="<%=request.getContextPath()%>/queryServlet">點擊查詢所有的妖怪</a>
</body>
</html>
QueryServlet.java文章來源:http://www.zghlxwxcb.cn/news/detail-437954.html
public class QueryServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 準(zhǔn)備要顯示的數(shù)據(jù)--> 從DB
ArrayList<Monster> list = new ArrayList<>();
list.add(new Monster(100, "牛魔王", "芭蕉扇"));
list.add(new Monster(200, "狐貍精", "美人計"));
list.add(new Monster(300, "白骨精", "吃人骨頭"));
//2. 把list放入到request域, 供jsp頁面使用
request.setAttribute("monsters", list);
//3. 請求轉(zhuǎn)發(fā) list.jsp
request.getRequestDispatcher("/hm/list.jsp")
.forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
list.java文章來源地址http://www.zghlxwxcb.cn/news/detail-437954.html
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>顯示所有的妖怪</title>
</head>
<body>
<h1>顯示所有的妖怪</h1>
<table border="1px" width="400px">
<tr>
<td>id</td>
<td>name</td>
<td>skill</td>
</tr>
<%-- 使用c:foreach循環(huán)顯示即可 顯示id > 200--%>
<c:forEach items="${monsters}" var="monster">
<c:if test="${monster.id >= 200}">
<tr>
<td>${monster.id}</td>
<td>${monster.name}</td>
<td>${monster.skill}</td>
</tr>
</c:if>
</c:forEach>
</table>
</body>
</html>
到了這里,關(guān)于JAVAWeb11-服務(wù)器渲染技術(shù) -JSP-03-JSTL(會使用)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!