基本概念
- JSTL 标签库全称是指JSP Standard Tag Library JSP 标准标签库。是一个不断完善的开放源代码的JSP 标
签库。 - EL 表达式主要是为了替换jsp 中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp 页面
变得更加简洁。
JSTL标签库的使用步骤
- 导入jstl标签库的jar包
下载地址:https://wwa.lanzous.com/izmnzp12rqb - 在jsp 标签库中使用taglib 指令引入标签库(在jsp文件中敲JSTL标签也会自动导入)
(1)CORE 标签库
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
(2)XML 标签库
<%@ taglib prefix=“x” uri=“http://java.sun.com/jsp/jstl/xml” %>
(3)FMT 标签库
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>
(4)SQL 标签库
<%@ taglib prefix=“sql” uri=“http://java.sun.com/jsp/jstl/sql” %>
(5)FUNCTIONS 标签库
<%@ taglib prefix=“fn” uri=“http://java.sun.com/jsp/jstl/functions” %>
core 核心库使用
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
Created by IntelliJ IDEA.
User: ningqian
Date: 2021/5/11
Time: 17:49
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>core.jsp</title>
</head>
<body>
<%--
1. <c:set/>
作用:set标签可以往域中保存数据
(1)scope 属性:设置保存到哪个域
page 表示PageContext 域(默认值)
request 表示Request 域
session 表示Session 域
application 表示ServletContext 域
(2)var 属性:设置key 是多少
(3)value 属性:设置值
--%>
保存之前属性abc的值:${requestScope.abc}<br/>
<c:set scope="request" var="abc" value="1314"></c:set>
保存之后属性abc的值:${requestScope.abc}<br/>
<%--
2. <c:if/>
作用:if标签用来作if判断
(1)test属性:表示判断的条件(使用EL表达式输出)
test属性为真,则执行代码 <c:if test"${}>执行代码</c:if>
--%>
<c:if test="${3>2}">
<h1>3>2</h1>
</c:if>
<%--
3. <c:choose><c:when><c:otherwise>
作用:多路判断。类似switch-case-default
--%>
<%
request.setAttribute("hobby","football");
%>
<c:choose>
<c:when test="${requestScope.hobby eq 'sing'}">
<h2>唱歌</h2>
</c:when>
<c:when test="${requestScope.hobby eq 'dance'}">
<h2>跳舞</h2>
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${requestScope.hobby eq 'write'}">
<h2>写作</h2>
</c:when>
<c:otherwise>
<h2>其他爱好</h2>
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
<%--
4.<c:foreach/>
作用:遍历输出使用
(1)begin属性:设置开始的索引
(2)end属性:设置结束的索引
(3)var属性:表示循环的变量,也是当前正在遍历的数据
--%>
<c:forEach begin="0" end="9" var="i">
${i}<br/>
</c:forEach>
<table border="1" bgcolor="red">
<c:forEach begin="1" end="3" var="item">
<tr>
<td>好好学习:${item}</td>
</tr>
</c:forEach>
</table>
<hr/>
<%--
foreach遍历Object数组
类似Java中的增强for循环
for(Object item:var)
在这里,item表示要循环的对象,var表示对象中的每一项
--%>
<%
pageContext.setAttribute("stuArray",new String[]{"小张","小刘","小梦"});
%>
<c:forEach var="stu" items="${pageScope.stuArray}">
${stu}<br/>
</c:forEach>
<hr/>
<%--遍历map
Java中对map的遍历
for(Map.Entry<String,Object> entry:map.entrySet)
--%>
<%
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("小张",100);
map.put("小刘",90);
map.put("小梦",80);
request.setAttribute("stuMap",map);
%>
<c:forEach items="${stuMap}" var="entry">
${entry}<br/>
</c:forEach>
<hr/>
<%--单独输出key--%>
<c:forEach items="${stuMap}" var="entry">
${entry.key}<br/>
</c:forEach>
<hr/>
<%--单独输出value--%>
<c:forEach items="${stuMap}" var="entry">
${entry.value}<br/>
</c:forEach>
</body>
</html>