1 什么是JSTL
Java server pages standarded tag library,即JSP标准标签库
开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。
2 JSTL的作用
实现JSP页面中逻辑处理。如判断, 循环等;
下载JSTL库,http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
把jstl.jar、standard.jar放入WEB-INF/lib目录下
2.1 使用JSTL
必须在JSP页面添加tablib指令库
<% @taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core">
3 常用标签
3.1 通用标签set out remove
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>JSTL通用标签</title>
</head>
<body>
<%--通用 set out remove 等方法的使用--%>
<%-- 声明 输出 删除--%>
<%--1、设置 ser var变量名 value赋值 默认存在page里面--%>
<c:set var="a1" value="我是值"/>
<c:set var="a2" value="${123+123}"/>
<%--2、输出到页面 out value变量名 default默认值 不是赋值--%>
<c:out value="${a1}" default="没有值"/> <br>
<c:out value="a2不用tl表达式就默认为字符串"/><br>
<c:out value="${a3}" default="默认输出不是赋值"/><br>
<%--3、remove标签用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。--%>
<%--<c:remove var="${a1}"/> <br> 报错 不接受任何表达式--%>
<c:remove var="a2" scope="page"/> <br>
<c:out value="${a2}" default="默认输出不是赋值"/><br>
</body>
</html>
浏览器显示:
3.2 条件标签 if choose
<%@ 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>
<%-- if 和 choose --%>
<%--if 只能单个if 没有else等--%>
<c:if test="${9>5}">
<h1>9>5成立 输出</h1>
</c:if>
<c:if test="${9<5}">
<h1>9<5不成立 不输出</h1>
</c:if>
<%--choose 相当于多重if--%>
<c:set var="a" value="60"/>
<c:choose>
<c:when test="${a>=100}">优秀</c:when>
<c:when test="${a>80}">良好</c:when>
<c:when test="${a>60}">及格</c:when>
<c:otherwise>不及格</c:otherwise>
</c:choose>
</body>
</html>
浏览器显示:
3.3迭代标签 foreach
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.Star.user.TBuser" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--jstl标签库 fmt格式化时间--%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%
//集合赋值遍历
List list = new ArrayList();
for (int i = 0;i<15;i++){
list.add(i);
}
//存在该作用域
pageContext.setAttribute("list",list);
//创建list对象
List<TBuser> tBuserList = new ArrayList<>();
//创建Tbuser对象 进行存储
for (int i = 0;i<15;i++){
TBuser tBuser = new TBuser("用户"+i,"密码"+i);
tBuserList.add(tBuser);
}
//存作用域
pageContext.setAttribute("tBuserList",tBuserList);
//创建时间对象
Date date = new Date();
//存储作用域
pageContext.setAttribute("date",date);
%>
<html>
<head>
<title>JSTL迭代标签</title>
</head>
<body>
<%--一般--%>
<%-- 声明变量 开始数字 结束数字 运行次数间隔 --%>
<c:forEach var="i" begin="1" end="10" step="2" >
${i}<br>
</c:forEach>
<br>
<%--集合等--%>
集合输出 遍历list<br>
<c:forEach var="i1" items="${list}" varStatus="vs">
${i1}<br>
</c:forEach>
<br>
<%--获取集合--%>
集合输出 对象<br>
<c:forEach var="tb" items="${tBuserList}">
<table border="1" bordercolor="red">
<tr>
<td>${tb.user}</td>
<td>${tb.password}</td>
<td><fmt:formatDate value="${date}" pattern="yyyy-MM-dd:HH:mm:ss"></fmt:formatDate></td>
</tr>
</table>
</c:forEach>
</body>
</html>
浏览器显示: