JSTL与EL表达式

什么是JSTL

JSTL是对EL表达式的扩展,JSTL是标签语言!规范了每个标签的职责范围。

JSTL标签库

core:核心标签库
fmt:格式化标签库

导标签包

<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib prefix="ths" uri="/WEB-INF/tag/ths.tld"%>
<c:set var="ctx"  value="${pageContext.request.contextPath}" />

外部文件导入方式

静态导入:

<%@ include file="included.htm" %> 
被导入页面的编译指令会起作用;
先把文件包含就来,然后统一编译;
如果含有同一个变量名最后编译通不过。

动态导入

<jsp:include   page="inlayingJsp.jsp" flush="true"/>
动态导入则在Servlet中使用include方法来引入被导入页面的内容。
动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。

11个内置对象

  1. pageScope:获取pageContext域属性,相当于pageContext.getAttribute(“xxx”)

  2. requestScope:获取request域属性,相当于request.getAttribute(“xxx”)

  3. sessionScope:获取session域属性,相当于session.getAttribute(“xxx”)

  4. applicationScope:获取application域属性,相当于application.getAttribute(“xxx”)

  5. param:对应参数,它是一个Map,其中key是参数,value是参数值,适用于单值的参数,相当于request.getParameter(“xxx”)

  6. paramValues:对应参数,她是一个Map,其中key是参数,value是多个参数值,适用于多值的参数,相当于request.getParameterValues(“xxx”)

  7. header:对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值的请求头,相当于request.getHeader(“xxx”)

  8. headerValues:对应请求头,它是一个Map,其中key表示头名称,value是多个头值,适用于多值的请求头,相当于request.getHeaders(“xxx”)

  9. initParam:获取web.xml中内的参数,${ initParam.xxx},xxx就是标签内的值,进而得到中的值

  10. cookie:用于获取cookie,Map<String,Cookie>,其中key是cookie的name,value是cookie对象,例如${cookie.JSESSIONID.value }就是获取sessionId

  11. pageContext:可以获取JSP九大内置对象,相当于使用该对象调用getxxx()方法,例如pageContext.getRequest()可以写为${pageContext.request)

四个域

  1. pageScope
  2. requestScop
  3. sessionScope
  4. applicationScope

c:out

<c:out value=”aaa”/>
输出aaa字符串常量  aaa
<c:out value=”${aaa}” default=”xxx”/>
输出aaa变量值  与${aaa}相同  默认值xxx填充

c:set

<c:set var=”a” value=”hello” scope=”session”/>
在session中添加name为a,value为hello的数据。默认pageContext域

c:remove

<c:remove var="a" scope=”page”/>
删除page域的a变量;不写时默认所有域a变量

c:url

<c:url value="/liuy/list">
	<c:param name="username" value="abc"/>
	<c:param name="password" value="123"/>      
</c:url>
返回路径:/demo/liuy/list?username=abc&password=123
如果参数中包含中文,那么会自动使用URL编码!       

c:if

<c:set value="1" var="v1"/>
<c:set value="4" var="v2"/>
<c:if test="${v1 lt v2}">v1 ==v2</c:if>
如果v1<v2 输出v1==v2---》结果v1==v2

c:forEach c:choose

varStatus :循环状态对象。
count:int类型,当前以遍历元素的个数;
index:int类型,当前元素的下标;
first:boolean类型,是否为第一个元素;
last:boolean类型,是否为最后一个元素;
current:Object类型,表示当前项目。

//循环List
 <c:forEach items="${list}" var="item" varStatus="vs">
    <c:choose>
        <c:when test="${item mod 2==0}">
            <td bgcolor="aqua">${item}
        </c:when>
         <c:otherwise>
            <td>${item}
         </c:otherwise>
    </c:choose>
    </td>
    <td>${vs.index}</td>
</c:forEach>

//循环Map
<c:forEach var="item" items="${stu }">
<c:out value="${item.key }: ${item.value }"/><br/>
</c:forEach>

fmt:formatDate

2021-11-30           <fmt:formatDate value="${today}" type="date"/>
13:40:00             <fmt:formatDate value="${today}" type="time"/>
2021-11-30 13:40:00  <fmt:formatDate value="${today}" type="both"/>
2021年11月30日        <fmt:formatDate value="${today}" dateStyle="long"/>
2021年11月30日 星期二  <fmt:formatDate value="${today}" dateStyle="full"/>
2021-11-30 13:49:02  <fmt:formatDate value="${today}" pattern="yyyy-MM-dd HH:mm:ss"/>

fmt:formatNumber

12,456,789.123      <fmt:formatNumber value="${n}" />
¥12,456,789.12     <fmt:formatNumber value="${n}" type="currency"/>
12,456,789.123      <fmt:formatNumber value="${n}" pattern="###,###,###.####"/>
12,456,789.1230     <fmt:formatNumber value="${n}" pattern="###,###,###.0000"/>
12456789.123        <fmt:formatNumber value="${n}" groupingUsed="false"/>
0,012,456,789.123   <fmt:formatNumber value="${n}" maxIntegerDigits="12" minIntegerDigits="10"/>
12,456,789.12       <fmt:formatNumber value="${n}" maxFractionDigits="2" minFractionDigits="2"/>
12%                 <fmt:formatNumber value="${p}" type="percent"/>

函数

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值