jstl
为了能够在JSP 中使用JSTL,首先需要两个jar包,分别是jstl.jar 和standard.jar
现在只需要加一个jstl-1.2.jar
在页面中使用JSTL需要在jsp中 通过指令进行设置
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
prefix="c" 表示后续的标签使用都会以<c: 开头
<c:set var="name" value="${'gareen'}" scope="request" />
在作用域request中设置name,相当于
<%request.setAttribute("name","gareen")%>
<c:out value="${name}" />
获取name的值
相当于 <%=request.getAttribute("name")%>
<c:remove var="name" scope="request" />
在作用域request中删掉name,相当于
<%request.removeAttribute("name")%>
作用域可以是pageContext, request, session, application,
JSTL通过<c:if test=""> 进行条件判断
但是JSTL没有<c:else,所以常用的办法是在<c:if的条件里取反
配合if使用的还有通过empty进行为空判断
1 <c:set var="hp" value="${10}" scope="request"/> 2 <c:if test="${hp<5}"> 3 <p>died</p> 4 </c:if> 5 <c:if test="${!(hp<5)}"> 6 <p>lived</p> 7 </c:if>
empty可以判断对象是否为null,字符串长度是否为0,集合长度是否为0
虽然JSTL没有提供else标签,但是提供了一个else功能的标签
<c:choose>
<c:when test="${hp<5}">
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
我个人觉得看上去繁琐,还是习惯用<c:if test="!" 来表示else
遍历
<c:forEach items="${heros}" var="hero" varStatus="st" >
items="${heros}" 表示遍历的集合
var="hero" 表示把每一个集合中的元素放在hero上
varStatus="st" 表示遍历的状态
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix='fmt' %>
-
格式化数字
-
fmt 标签常用来进行格式化,其中fmt:formatNumber用于格式化数字
-
-
<fmt:formatNumber 表示格式化数字
minFractionDigits 小数点至少要有的位数
maxFractionDigits 小数点最多能有的位数 -
格式化日期
-
<fmt:formatDate 表示格式化日期
yyyy 表示年份
MM 表示月份
dd 表示日期
E 表示星期几
a 表示是上午还是下午
HH 表示小时
mm 表示分钟
ss 表示秒
S 表示毫秒
<fmt:formatDate value="${now}" pattern="G yyyy年MM月dd日 E"/>
<fmt:formatDate value="${now}" pattern="a HH:mm:ss.S z"/>
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss"/>
<%@ page import="java.util.ArrayList" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2021/1/22 0022
Time: 15:16
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" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@page import="java.util.*" %>
<html>
<head>
<title>JSTL</title>
</head>
<body>
<c:set value="${'dazhu'}" var="name" scope="request"/><br>
<c:out value="${name}"/>
<c:set var="hp" value="${10}" scope="request"/>
<c:if test="${hp<5}">
<p>died</p>
</c:if>
<c:if test="${!(hp<5)}">
<p>lived</p>
</c:if>
<%
pageContext.setAttribute("mm",null);
pageContext.setAttribute("xx","");
pageContext.setAttribute("nn",new ArrayList());
%>
<c:if test="${empty mm}">
<p>empty</p>
</c:if>
<c:if test="${empty xx}">
<p>no</p>
</c:if>
<c:if test="${empty nn}">
<p>null</p>
</c:if>
<%
List<String> heros = new ArrayList<String>();
heros.add("塔姆");
heros.add("艾克");
heros.add("巴德");
heros.add("雷克赛");
heros.add("卡莉丝塔");
request.setAttribute("heros",heros);
%>
<table width="200px" align="center" border="1" cellpadding="0">
<tr>
<td>编号</td>
<td>英雄</td>
</tr>
<%--c:forEach遍历--%>
<c:forEach var="xx" varStatus="st" items="${heros}">
<tr>
<td><c:out value="${st.count}" /></td>
<td><c:out value="${xx}" /></td>
</tr>
</c:forEach>
</table>
<%--c:forTokens用于字符串拆分--%>
<c:set var="heroc" value="塔姆,艾克;巴德|雷克赛!卡莉丝塔"/>
<c:forTokens items="${heroc}" delims=",;|!" var="herow">
<c:out value="${herow}"/><br>
</c:forTokens>
<c:set var="min" value="333.4"/>
<c:set var="max" value="3.334"/>
<fmt:formatNumber type="number" value="${min}" minFractionDigits="2"/><br>
<fmt:formatNumber type="number" value="${max}" maxFractionDigits="2"/><br>
<%
Date date=new Date();
request.setAttribute("now",date);
%>
<fmt:formatDate value="${now}" pattern="G yyyy年MM月dd日 E"/><br>
<fmt:formatDate value="${now}" pattern="a HH:mm:ss.S z"/><br>
<fmt:formatDate value="${now}" pattern="yyyy年MM月dd日 E HH:mm:ss"/><br>
</body>
</html>

浙公网安备 33010602011771号