17.7 JSTL_概述
- JSTL:JavaServer Pages Tag Library JSP标准标签库
- 是由Apache组织提供的开源的免费的jsp标签 <标签>
- 作用:用于简化和替换jsp页面上的java代码 .
- 使用步骤:
- 1.在 web/WEB-INF/lib 目录中导入jstl相关jar包:
- javax.servlet.jsp.jstl.jar
- jstl-impl.jar
- 2.引入标签库: taglib指令:
<%@ taglib %>
;- 示例:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 3.使用标签。
17.8 JSTL_常用标签
17.8.1 if 标签
- if : 相当于java代码的if语句。
- 属性:
- test: 必须属性,接受boolean表达式。
- 如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
- 一般情况下,test属性值会结合el表达式一起使用
- note:
- c:if 标签没有else情况,想要else情况,则可以在定义一个c:if标签。
- 示例:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %><%--
Created by IntelliJ IDEA.
User: 徐巍巍
Date: 2021/2/12
Time: 11:41
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
//判断request域中的一个list集合是否为空,如果不为null则显示遍历集合
List list = new ArrayList();
list.add("aaaa");
request.setAttribute("list",list);
request.setAttribute("number",4);
%>
<c:if test="${not empty list}">
遍历集合...
</c:if>
<br>
<c:if test="${number % 2 != 0}">
${number}为奇数
</c:if>
<c:if test="${number % 2 == 0}">
${number}为偶数
</c:if>
</body>
</html>
17.8.2 choose 标签
- choose : 相当于java代码的switch语句。
- 1.使用choose标签声明 ——相当于switch声明;
- 2.使用when标签做判断——相当于case ;
- 3.使用otherwise标签做其他情况的声明——相当于default。
- 示例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>choose标签</title>
</head>
<body>
<%
request.setAttribute("number",51);
%>
<c:choose>
<c:when test="${number == 1}">星期一</c:when>
<c:when test="${number == 2}">星期二</c:when>
<c:when test="${number == 3}">星期三</c:when>
<c:when test="${number == 4}">星期四</c:when>
<c:when test="${number == 5}">星期五</c:when>
<c:when test="${number == 6}">星期六</c:when>
<c:when test="${number == 7}">星期天</c:when>
<c:otherwise>数字输入有误</c:otherwise>
</c:choose>
</body>
</html>
17.8.3 forEach 标签
- forEach : 相当于java代码的for语句。
- 1.完成重复的操作
- Java语句:
for(int i = 0; i < 10; i ++){ }
- 属性:
- begin:开始值
- end:结束值
- var:临时变量
- step:步长
- varStatus:循环状态对象
- index:容器中元素的索引,从0开始。
- count:循环次数,从1开始。
- 2. 遍历容器
- Java语句:
List<User> list; for(User user : list){ }
- 属性:
- items : 容器对象
- var : 容器中元素的临时变量
- varStatus : 循环状态对象
- index : 容器中元素的索引,从0开始。
- count : 循环次数,从1开始。
- 示例:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%--
Created by IntelliJ IDEA.
User: 徐巍巍
Date: 2021/2/12
Time: 11:53
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>foreach标签</title>
</head>
<body>
<c:forEach begin="1" end="5" var="i" step="2" varStatus="s">
${i}
${s.index}
${s.count}
<br>
</c:forEach>
<%
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
request.setAttribute("list",list);
%>
<c:forEach items="${list}" var="str" varStatus="s">
${s.index}
${s.count}
${str}
<br>
</c:forEach>
</body>
</html>
17.9 JSTL_案例_表格
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Date" %>
<%@ page import="com.xww.domain.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>test</title>
</head>
<body>
<%
List list = new ArrayList();
list.add(new User("张三",23,new Date()));
list.add(new User("李四",24,new Date()));
list.add(new User("王五",25,new Date()));
request.setAttribute("list_bq",list);
%>
<table border="1" width="500" align="center">
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>生日</th>
</tr>
<%--数据行--%>
<c:forEach items="${list_bq}" var="user" varStatus="s">
<c:if test="${s.count % 2 != 0}">
<tr bgcolor="red">
<td>${s.count}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.birStr}</td>
</tr>
</c:if>
<c:if test="${s.count % 2 == 0}">
<tr bgcolor="green">
<td>${s.count}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.birStr}</td>
</tr>
</c:if>
</c:forEach>
</table>
</body>
</html>