JSTL核心标签超详细详解(学习笔记,一文看懂)

44 篇文章 0 订阅
28 篇文章 0 订阅

JSTL


一、认识JSTL表达式

1.什么是JSTL

  • JSTL是Java server pages standarded tag library的缩写,即java标准标签库
  • JSTL百度百科
  • JSTL是java中的一个订制标签库集
  • JSTL标准标签库(JSTL)是一个JSP标准集合,它封装了JSP应用的通用核心功能。
  • 根据JSTL标签所提供的功能,可以将其分为五5个类别。
    • 核心标签(常用)
    • 格式化标签
    • SQL标签
    • XML标签
    • JSTL函数

2.为什么要使用JSTL

  • 实现了JSP页面代码的复用
    • 基于标签库原理,重复
  • 书写JSP页面的可读性强
    • 长得很像XML,方便前端检查和参与修改

二、JSTL环境搭建

  • maven官网搜索jstl的依赖
  • 导入到项目
  • 在JSP页面引入jar包
    在这里插入图片描述

三、JSTL表达式的核心标签

1.13个核心标签

在这里插入图片描述


2.按功能划分四类

从功能上可以分为4类:

按照功能划分包含的标签
表达式控制标签out set remove catch
流程控制标签if choose when otherwise
循环标签forEach forTokens
URL标签import url redirect

四、JSTL常用标签详细讲解

1.表达式控制标签

out标签的用法:

  • 输出常量
    • 可以在value属性中直接赋值
  • 输出变量
    • 变量不存在的时候可以配合default属性输出默认值,还可以通过escapeXml控制转义字符的输出格式
    • var设定存放值的变量
      实例:
<c:set var="age" scope="page" value="18"></c:set>
<c:out value="${pageScope.age}"/>
<c:out value="你好,Jstl"/>

在这里插入图片描述


set标签的用法:

  • 存值到scope中

    • 可以将值以变量的形式存放到指定的范围
    • scope设定存放值的内容
    • value指定存放值的内容
    • var设定存放的变量

    实例:

<c:set var="age" value="18" scope="page"/>
${age-1}

在这里插入图片描述

  • 存值到JavaBean的属性中
    • target属性指定javabean的对象
    • property属性指定要赋值给javabean对象的那个属性
    • value指定存放值的内容

在这里插入图片描述


remove标签的用法:

  • remove掉某一个变量
  • var属性是必选的
  • scope属性是必选的

注意:

如果不同的scope中存在一样的变量,可以通过scope属性指定删除哪个scope中的变量

实例:

<c:set var="address" scope="page" value="hn"></c:set>
<c:out value="${pageScope.address}"/>
<c:remove var="address" scope="page"/>
<c:out value="${pageScope.address}"/>

在这里插入图片描述


catch标签的用法:

  • catch标签可以包含容易出错的JSTL标签(逻辑)
  • var属性定义错误信息的输出的变量名

实例:

<%--catch标签--%>
<c:catch var="error">
    <%--压根就没有student,看它报什么错--%>
    <c:set target="student" property="name" value="xiaoming"/>
    
</c:catch>

<c:out value="${error}"/>

在这里插入图片描述


2.流程控制标签

if标签的用法:

  • 用来实现分支条件的控制
    • test属性用来存放判断条件,一般使用EL表达式来编写
    • var属性指定名称用来存放判断结果类型为true还是false
    • scope属性用来存放指定var属性存放的范围
      实例:
<c:set var="age" value="18" scope="page"> </c:set>

<c:if test="${pageScope.age>17}">我大于17</c:if>
<c:if test="${pageScope.age<=17}">我小于等于17</c:if>

在这里插入图片描述


choose、when、otherwise标签的用法:

  • 通常这三个标签放在一起来使用。
    • <c:choose>标签嵌套在<c:when><c:otherwise>标签的外面作为父标签来使用。
    • <c:choose>标签和<c:when>标签也可以组合使用。

实例一:三个标签一起使用

<c:set var="score" value="88"/>
<c:choose>

    <c:when test="${score>90}">优秀</c:when>
    <c:when test="${score<=90 and score>80}">良好</c:when>
    <c:when test="${score<=80 and score>70}">良好</c:when>
    <c:otherwise>不及格</c:otherwise>
</c:choose>

结果显示:良好

实例二:只用choose和when标签

<c:choose>

    <c:when test="${score>90}">优秀</c:when>
    <c:when test="${score<=90 and score>80}">良好</c:when>
    <c:when test="${score<=80 and score>70}">良好</c:when>
    <c:when test="${score<=70}">不及格</c:when>
</c:choose>

结果显示为:良好


3.循环标签

forEach标签的用法(重点!!):

  • 根据循环条件遍历集合中的元素
    • var设定变量名用于存储从集合中取出的元素(必须无默认值)
    • items指定要遍历的集合
    • begin、and用于指定遍历的起始位置和终止位置(有默认值)
    • step指定循环的步长(有默认值)
    • varStatus通过index、count、first、last几个状态值,描述begin和end子集中的元素的状态。

实例1(遍历常量):

<table border="1">
<c:forEach var="i" begin="1" end="10" step="1" varStatus="j">
    <%//设置隔行变色%>
    <tr <c:if test="${j.index%2==0}"> style="background-color: pink" </c:if> >
            <td>
                <c:out value="${i}"/>
            </td>
        </tr>
</c:forEach>
</table>

在这里插入图片描述


实例2(遍历实体对象集合):

<%
    Student student1=new Student(1,"小红");
    Student student2=new Student(2,"小明");
    List<Student> list=new ArrayList<>();
    list.add(student1);
    list.add(student2);
    pageContext.setAttribute("list",list);
%>
<table border="1">
    <tr><td>ID</td><td>姓名</td></tr>
    <c:forEach var="student" items="${pageScope.list}" step="1" varStatus="j">
        <%//设置隔行变色%>
        <tr <c:if test="${j.index%2==0}"> style="background-color: pink" </c:if> >
            <td>
                <c:out value="${student.id}"/>
            </td>
            <td>
                <c:out value="${student.name}"/>
            </td>
        </tr>
    </c:forEach>
</table>

在这里插入图片描述


forTookens标签的用法

  • 用于浏览字符串,并根据指定的字符串将字符串截取。
    • items指定被迭代的字符串
    • delims指定使用的分隔符
    • var指定用来存放遍历的元素

在这里插入图片描述
实例:

<c:set var="zifu" value="中国,美国,英国,法国" scope="page"/>
<c:forTokens items="${pageScope.zifu}" delims="," var="z">
    ${z}<br>
</c:forTokens>

效果:
在这里插入图片描述


4.URL标签

import标签的用法:

  • 可以把其他静态或者动态文件包含到本jsp页面。
  • 同< jsp:include>的区别为:只能包含同一个web应用中的文件
  • 而< c:import>可以包含其他web应用下的文件,甚至是网络上的资源

在这里插入图片描述


redirect标签的用法:

  • 该标签用来实现请求的重定向,同时可以在url中加入指定的参数
    • url指定重定向页面的地址,可以是一个String类型的绝对地址或者相对地址
    • context用来导入其他web应用 中的页面。

在这里插入图片描述

实例:

<c:if test="${2>1}">
    <c:redirect url="testImport.jsp"/>
</c:if>

url标签的用法:

  • 该标签用于动态生成一个String类型的url,可以同<c:param>标签共同使用,也可以使用html的< a>
    标签实现超链接。
    • value表示url路径值
    • var将url的路径存放在变量中
    • scope var变量的范围

在这里插入图片描述
实例:

<c:url var="myurl" value="test.jsp">
    <c:param name="id" value="1"/>
    <c:param name="name" value="xiaoming"/>
</c:url>
内容是:${myurl}<br>
<a href="${myurl}">我的超链接</a>

效果:
在这里插入图片描述


五、顺便一提格式化标签库

1.formatDate标签的详解

实例:

--不要忘记这个标签库的导入
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
--正文代码
<%
    Date date=new Date();
    pageContext.setAttribute("date",date);
%>

${pageScope.date}
<br>
<fmt:formatDate value="${pageScope.date}" pattern="yyyy-MM-dd hh:mm:ss"/>

效果:
在这里插入图片描述


六、顺便一提函数标签库

1.length标签

实例:

${fn:length("abc")}

页面显示:3

  • 7
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吕努力变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值