一篇文章带你了解JSTL标签库

本文详细介绍了JSTL(JSP标准标签库),包括其目标、作用和类别。重点讲解了JSTL核心标签库,如if、choose和foreach标签的使用,帮助读者掌握在JSP页面中如何操作数据并简化编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSTL标签库

JSTL标签库概述

1.目标

  • 掌握什么是JSTL标签库

2.讲解

2.1 什么是JSTL标签库

​ JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。这个JSTL标签库没有集成到JSP的, 要使用的话, 需要导jar包.

2.2 JSTL标签库的作用

​ 为了简化在jsp页面上操作数据; eg: 遍历数据 判断数据等

2.3 JSTL标签库的类别
标签库功能描述标签库的URI建议前缀
核心标签库htttp://java.sun.com/jsp/jstl/corec
XML标签库htttp://java.sun.com/jsp/jstl/xmlx
国际化/格式化标签库htttp://java.sun.com/jsp/jstl/fmtfmt
数据库标签库htttp://java.sun.com/jsp/jstl/sqlsql
EL自定义函数htttp://java.sun.com/jsp/jstl/functionsfn

3.小结

  1. JSTL: JSP标准的标签库. 也就意味着我们可以在jsp里面使用除了html以外的其它的标签
  2. 作用: 遍历, 判断… 代替脚本

JSTL核心标签库

1.目标

  • 掌握if,foreach标签的使用

2.讲解

2.1核心标签库使用步骤
  1. 导入jar包 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mj47OWAs-1606566426440)(D:/就业班课程资料/web阶段预习资料/day27-JSP三层架构/笔记/img/tu_12.png)]

  2. 在JSP页面上导入核心标签库<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

2.3if标签

​ < c : if >标签的属性

属性名是否支持EL属性类型属 性 描 述
testtrueboolean决定是否处理标签体中的内容的条件表达式
varfalseString用于指定将test属性的执行结果保存到某个Web域中的某个属性的名称
scopefalseString指定将test属性的执行结果保存到哪个Web域中
  • 语法
<c:if test="el表达式${..}">
</c:if>
  • 实例
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>使用jstl中的if标签进行判断</title>
</head>
<body>
    <%
        //往域对象中存储一个age
        request.setAttribute("age",17);

        //目标:判断age的值,如果大于等于18,则在浏览器页面上输出"已成年",否则输出"未成年"
        //jstl的使用步骤:1. 导入jar包  2. 在jsp页面通过taglib指令引入核心标签库  3. 使用标签
    %>
    <%--
        if标签有一个属性叫做test,它表示判断表达式,需要结合el一起使用
        如果要表示相反的判断,则再添加一个if标签,然后写相反的条件就行

        if标签还有一个属性叫做var,表示将判断结果存储进域对象时候的key(了解)

        if标签的第三个属性叫做scope,表示将判断结果存储进哪个域对象(了解)
    --%>
    <c:if test="${age >= 18}" var="flag" scope="request">
        已成年
    </c:if>

    <c:if test="${age < 18}">
        未成年
    </c:if>
    <br>
    ${flag}
</body>
</html>
  • 小结

    • 语法
    <c:if test="${} "></c:if>
    
    • 特点
      • 如果test里面的是true, if标签体里面的就会执行
      • 如果test里面的是false, if标签体里面的就不会执行
      • 没有else的
2.4choose标签
  • 实例
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jstl中的choose标签的使用介绍</title>
</head>
<body>
    <%
        request.setAttribute("course","PHP");
    %>
    <c:choose>
        <%--
            一个when标签表示一个条件
        --%>
        <c:when test="${course == 'Java'}">
            学习Java
        </c:when>

        <c:when test="${course == 'Android'}">
            学习Android
        </c:when>

        <c:when test="${course == 'C++'}">
            学习C++
        </c:when>

        <c:otherwise>
            学习,学个屁!!!
        </c:otherwise>
    </c:choose>
</body>
</html>
2.5 foreach标签

< c:forEach > 标签的属性

属性名是否支持EL属性类型属性描述
varfalseString指定将当前迭代到的元素保存到page这个Web域中的属性名称
itemstrue任何支持的类型将要迭代的集合对象
varStatusfalseString指定将代表当前迭代状态新的对象保存到page这个Web域中的属性名称
begintrueint如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代
endtrueint参考begin属性的描述
steptrueint指定迭代的步长,即迭代因子的迭代增量
  • 简单的使用:
 <%--
        jstl中的forEach标签是用来代替for循环语句

        目标1: 在浏览器上显示0-9的数字
            begin属性: 从哪个下标开始遍历, 如果不写默认是从0开始
            end属性: 到哪个下标结束遍历,如果不写默认是遍历到集合/数组的最后一个元素
            step属性: 表示遍历时候的步长,默认步长是1
            var属性: 表示将遍历的结果存放进域对象时候的key
    --%>
<c:forEach begin="0" end="9" step="1" var="i">
	${i}
</c:forEach><br>

  • 复杂的使用遍历集合:

    <%
        //往域对象存储一个集合
        List<String> list = new ArrayList<String>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        list.add("田七");
        request.setAttribute("list", list);
    %>
    
    <c:forEach begin="0" end="9" step="1" var="i">
        ${i}
    </c:forEach><br>
    
    	<%--
        通过items属性指定遍历域对象里面的list
        通过var属性指定遍历出来的每个数据存储到域对象时候的key
        --%>
    <c:forEach items="${list}" var="username">
        ${username}
    </c:forEach>
    
  • c:forEach中的varStatus属性。

    指向一个字符串,该字符串引用一个对象。  map.put(“vs”,一个对象);

    这个对象记录着当前遍历的元素的一些信息:

    index:返回索引。从0开始

    count:返回计数。从1开始

    last:是否是最后一个元素

    first:是否是第一个元素

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>forEach 标签的varStatus属性的介绍</title>
</head>
<body>
    <%
        //往域对象存储一个集合
        List<String> list = new ArrayList<String>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        list.add("田七");
        request.setAttribute("list", list);
    %>

    <%--
        forEach标签的varStatus属性:指定将遍历出来的每一个元素的状态存储进域对象时候的key
            遍历出来的每一个元素都有一些状态(属性),比如:
                下标 index:
                计数 count:
                当前元素的值 current:
                是否是第一个元素:
                是否是最后一个元素
    --%>
    <table border="1" cellspacing="0" width="700" align="center">
        <tr>
            <th>下标</th>
            <th>计数</th>
            <th>姓名</th>
            <th>是否是第一个元素</th>
            <th>是否是最后一个元素</th>
        </tr>
        <c:forEach items="${list}" varStatus="vst">
            <tr>
                <td>${vst.index}</td>
                <td>${vst.count}</td>
                <td>${vst.current}</td>
                <td>${vst.first}</td>
                <td>${vst.last}</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

3.小结

  1. foreach标签
  • 简单使用
<c:foreach begin="从哪里开始" end="到哪里结束" var="每次遍历的赋值变量" step="步长">
	//每遍历一次 foreach里面就执行一次
</c:foreach>
  • 复杂使用
<c:foreach items="使用el从域对象里面取出集合" var="每次遍历的赋值变量" varStatus="遍历的状态">
	//每遍历一次 foreach里面就执行一次
</c:foreach>
```

3.小结

  1. foreach标签
  • 简单使用
<c:foreach begin="从哪里开始" end="到哪里结束" var="每次遍历的赋值变量" step="步长">
	//每遍历一次 foreach里面就执行一次
</c:foreach>
  • 复杂使用
<c:foreach items="使用el从域对象里面取出集合" var="每次遍历的赋值变量" varStatus="遍历的状态">
	//每遍历一次 foreach里面就执行一次
</c:foreach>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值