JSTL
概述
JSP标准标签库(JSP Standard Tag Library)是Java EE网络应用程序开发平台的组成部分。它在JSP规范的基础上,扩充了一个JSP的标签库来完成一些通用任务。
JSTL 的作用
实现 JSP 页面中逻辑处理。如判断, 循环等;
使用 JSTL 的前提
必须在 JSP 页面添加 tablib 指令库
【注意】
1、需要导包
jstl-1.2.jar
2、添加 JSP 指令
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSTL 使用
通用标签 set、out、remove
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>测试JSTL中的标签</title>
</head>
<body>
<%--使用JSTL给指定域对象设置属性参数--%>
<c:set var="username" value="易烊千玺" scope="page"/>
${username}
<%--通过JSTL获取属性参数--%>
<c:out value="${username}"/>
<%--通过JSTL移除指定域对象中的属性参数--%>
<c:remove var="username" scope="page"/>
<c:out value="${username}"/>
</body>
</html>
条件标签 if
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="com.fc.bean.Student" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>测试jstl中的if</title>
</head>
<body>
<%-- 条件判断 --%>
<%--
c:if 判断标签中 test属性是必须的,不可以缺省的
test属性中的值是支持EL表达式
--%>
<c:if test="${10 > 5}">
<h3 align="center">条件成立</h3>
</c:if>
<%
Student student = new Student(1, "易烊千玺", 20, "男", "真帅");
// 设置属性到Request域对象中
pageContext.setAttribute("student", student, PageContext.REQUEST_SCOPE);
List<Student> list = new ArrayList<>();
list.add(new Student(1, "易烊千玺", 20, "男", "真帅"));
list.add(new Student(2, "迪丽热巴", 18, "女", "真美"));
list.add(new Student(3, "欧阳娜娜", 17, "女", "可爱"));
pageContext.setAttribute("list", list, PageContext.REQUEST_SCOPE);
%>
<c:if test="${student.age > 10}">
<h2 align="center">${student.name}还是曾经那个少年</h2>
</c:if>
<c:if test="${student.age < 10}">
<h2 align="center">${student.name}还是曾经那个骚年</h2>
</c:if>
<hr>
<c:if test="${list[0].age == 16}">
<h2 align="center">${list[0].name}我好困啊~~~~~~</h2>
</c:if>
<c:if test="${list[1].age != 16}">
<h2 align="center">${list[1].name}嗨起来啊</h2>
</c:if>
</body>
</html>
条件标签 choose
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>测试jstl中的choose</title>
</head>
<body>
<%
int score = 59;
request.setAttribute("score", score);
%>
<c:choose>
<c:when test="${score >= 90}">
<h3>优秀</h3>
</c:when>
<c:when test="${score >= 80}">
<h3>良好</h3>
</c:when>
<c:when test="${score >= 70}">
<h3>中等</h3>
</c:when>
<c:when test="${score >= 60}">
<h3>及格</h3>
</c:when>
<c:otherwise>
<h3>叫你爹穿着拖鞋过来</h3>
</c:otherwise>
</c:choose>
</body>
</html>
迭代标签 forEach【重点】
forEach 标签中的属性
属性 | 描述 |
---|---|
begin | 从哪开始 |
end | 到哪结束 |
var | 临时变量 |
step | 迭代部分的幅度 |
items | 遍历的内容 |
varStatus | 当前循环状态,是一个对象,内置了一些属性 |
varStatus 属性值
属性值 | 描述 |
---|---|
index | 临时变量 |
count | 迭代的次数 |
step | 迭代的频率 |
begin | 从哪开始 |
end | 到哪结束 |
first | 是否是第一次迭代 |
last | 是否是最后一次迭代 |
current | 当前迭代的内容 |
案例代码一
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>测试JSTL中的foreach循环</title>
</head>
<body>
<%--相当于Java中的循环
begin:从哪开始 i = 0
end:到哪结束 i < 10
var:临时变量 int i
step:迭代部分 i++
varStatus:当前循环状态,是一个对象,内置了一些属性
index:临时变量
count:迭代次数
step:迭代的频率
begin:从哪开始
end:到哪结束
first:是否是第一次迭代
last:是否是最后一次迭代
current:当前迭代的内容
--%>
<c:forEach begin="1" end="10" var="temp" step="1" varStatus="status">
<c:out value="${temp}"/>
<c:out value="${status.index}"/>
<c:out value="${status.current}"/>
<c:out value="${status.count}"/><br/>
</c:forEach>
</body>
</html>
案例代码二
<%@ page import="com.fc.bean.Student" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>测试jstl中的foreach</title>
</head>
<body>
<%--
c:foreach属性
var: 临时变量,循环结构中可以临时使用
begin:从何时开始,这里可以使用EL表达式
end:到何时结束,这里也可也使用EL表达式
step:间隔,默认为1
--%>
<c:forEach var="num" begin="0" end="10">
${num}
</c:forEach>
<hr>
<%
List<Student> list = new ArrayList<>();
list.add(new Student(1, "易烊千玺", 20, "男", "真帅"));
list.add(new Student(2, "迪丽热巴", 18, "女", "真美"));
list.add(new Student(3, "欧阳娜娜", 17, "女", "可爱"));
pageContext.setAttribute("list", list);
%>
<table align="center" border="1px">
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
<th>Gender</th>
<th>Info</th>
</tr>
<c:if test="${not empty list}">
<%--items:表示需要遍历的元素--%>
<c:forEach var="stu" items="${list}">
<tr align="center">
<td>${stu.id}</td>
<td>${stu.name}</td>
<td>${stu.age}</td>
<td>${stu.gender}</td>
<td>${stu.info}</td>
</tr>
</c:forEach>
</c:if>
</table>
</body>
</html>