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>