JSTL标签库

一、核心标签库(Core Tags):

1、<c:out> :用于输出表达式的结果到页面

<c:out value="表达式" [escapeXml="布尔值"] [scope="作用域"] />
  • value 属性指定了要输出的表达式值。

  • escapeXml 属性可选,用于指定是否对 XML 特殊字符进行转义,默认为 true

  • scope 属性可选,用于指定变量的作用域,有效的作用域包括 page、request、session 和 application。如果没有指定作用域,则默认为 page。

以下是一些 <c:out> 的用法示例:

  1. 输出一个字符串:
    <c:out value="Hello Tom!" />
    //上述代码将在页面上输出字符串 "Hello Tom!"。

  2. 输出一个变量的值:
    <c:set var="message" value="Hello Tom!" />
    <c:out value="${message}" />
    //上述代码将在页面上输出变量 message 的值,即 "Hello Tom!"。

  3. 输出一个对象的属性值:
    <c:set var="product" value="{name:'shirt', price:10}" />
    <c:out value="${product.name}" />
    //上述代码将在页面上输出变量 product 的 name 属性值,即 "shirt"。

  4. 输出一个表达式的计算结果:
    <c:set var="discount" value="5" />
    <c:out value="${discount * 10}" />
    //上述代码将在页面上输出变量 discount 乘以 10 的结果,即 50。

  5. 在循环中使用 <c:out>
    <c:forEach var="item" items="${list}">
        <c:out value="${item.name}" />
    </c:forEach>
    //上述代码在循环中输出每个循环项的 name 属性值。

2、<c:set>:用于设置一个变量的值。

<c:set var="变量名" value="表达式" [scope="作用域"] />
  • var 属性指定了要设置的变量名。

  • value 属性指定了要设置的表达式值。

  • scope 属性可选,用于指定变量的作用域,有效的作用域包括 page、request、session 和 application。如果没有指定作用域,则默认为 page。

以下是一些 <c:set> 的用法示例:

  1. 字符串变量用法:
    <c:set var="message" value="Hello Tom!" />
    //上述代码将在 page 作用域中设置一个名为 message 的变量,其值为 "Hello Tom!"。

  2. 表达式变量用法:
    <c:set var="price" value="${product.price + discount}" />
    //上述代码将在 page 作用域中设置一个名为 price 的变量,其值为 product.price 和 discount 的和。

  3. 在条件判断中使用 <c:set>
    <c:set var="choie" value="${discount > 0 ? 'true' : 'false'}" />
    //上述代码将在 page 作用域中设置一个名为 choie 的变量,如果 discount 大于 0,则其值为 "true",否则为 "false"。

  4. 在循环中使用 <c:set>
    <c:forEach var="item" items="${list}">
        <c:set var="itemName" value="${item.name}" />
        <p>${itemName}</p>
    </c:forEach>
    //上述代码在循环中设置了 itemName 变量,其值为当前循环项的 name 属性值,然后在循环体中输出该变量的值。

3、<c:remove>:用于从作用域中移除变量

<c:remove var="变量名" [scope="作用域"] />
  • var 属性可选,指定要删除的变量名。

  • scope 属性可选,用于指定变量的作用域,有效的作用域包括 page、request、session 和 application。如果没有指定作用域,则默认为 page。

以下是一些 <c:remove> 的用法示例:

  1. 删除一个变量:
    <c:set var="message" value="Hello  Tom!" />
    <c:remove var="message" />
    //上述代码将在 page 作用域中删除名为 message 的变量

  2. 删除一个标签:
    <c:set var="message" value="Hello  Tom!" />
    <c:out value="${message}" />
    <c:remove var="message" />
    //上述代码将在 page 作用域中删除名为 message 的变量,首先输出该变量的值,然后将其从 page 作用域中删除。

  3. 在循环中使用 <c:remove>
    <c:forEach var="item" items="${list}">
        <c:out value="${item.name}" />
        <c:remove var="item" scope="request" />
    </c:forEach>
    //上述代码在循环中输出每个循环项的 name 属性值,并将当前循环项从 request 作用域中删除。注意每个循环项的 item 变量仅在当前的循环迭代中有效。

4、<c:if>:用于执行条件判断

<c:if test="条件表达式">
    <!-- 条件为真时执行的代码块 -->
</c:if>
  • test 属性指定了要进行条件判断的表达式。当表达式的结果为真时,会执行 <c:if> 标签内部的内容。

以下是一些用 <c:if> 的示例:

  1. 简单示例:
    <c:if test="${user.isAdmin}">
        <p>Welcome admin!</p>
    </c:if>
    //在上述示例中,如果 user 对象的 isAdmin 属性为真,那么将显示 "Welcome admin!" 文本。

  2. 在 <c:if> 中嵌套其他 JSTL 标签,以根据条件执行更复杂的操作:
    <c:if test="${user.isAdmin}">
        <p>Welcome admin!</p>
        <c:out value="${user.name}" />
    </c:if>
    <c:if test="${!user.isAdmin}">
        <p>Welcome guest!</p>
    </c:if>
    //在上述示例中,如果 user 对象的 isAdmin 属性为真,将显示 "Welcome admin!" 文本,并输出 user 对象的名称。如果 user 对象的 isAdmin 属性为假,则显示 "Welcome guest!" 文本。

5、<c:choose>,<c:when>,<c:otherwise>:用于实现多条件判断

<c:choose>
    <c:when test="${condition1}">
        <!-- 当 condition1 为真时执行的代码块 -->
    </c:when>
    <c:when test="${condition2}">
        <!-- 当 condition2 为真时执行的代码块 -->
    </c:when>
    <c:otherwise>
        <!-- 当以上条件都不满足时执行的代码块 -->
    </c:otherwise>
</c:choose>
  • 在这个示例中,<c:choose> 标签包含了一个或多个 <c:when> 标签和一个 <c:otherwise> 标签。当 condition1 或 condition2 为真时,相应的 <c:when> 标签中的代码块将被执行。如果 condition1 和 condition2 都不为真,则 <c:otherwise> 标签中的代码块将被执行。

以下是一个使用 <c:choose><c:when><c:otherwise> 的示例:

  1. 假设我们有一个 user 对象,它有一个 role 属性,我们可以根据这个属性的值来显示不同的信息:
    <c:choose>
        <c:when test="${user.role == 'admin'}">
            <p>Welcome Admin!</p>
        </c:when>
        <c:when test="${user.role == 'user'}">
            <p>Welcome User!</p>
        </c:when>
        <c:otherwise>
            <p>Welcome Guest!</p>
        </c:otherwise>
    </c:choose>
    //在这个示例中,如果 user.role 的值为 "admin",将显示 "Welcome Admin!";如果 user.role 的值为 "user",将显示 "Welcome User!";否则,将显示 "Welcome Guest!"。

6、<c:forEach>用于遍历集合或数组中的元素并执行指定的操作

<c:forEach var="变量名" items="集合或数组" [varStatus="变量状态"] [begin="起始索引"] [end="结束索引"] [separator="分隔符"] />
  • var 属性指定了要遍历的集合或数组中每个元素的变量名。

  • items 属性指定了要遍历的集合或数组。

  • varStatus 属性可选,用于指定一个变量来保存当前迭代的状态信息,如当前迭代索引、是否是第一个或最后一个元素等。

  • begin 和 end 属性可选,用于指定迭代的起始和结束位置,其中 begin 是可选的,而 end 是必须的。

  • separator 属性可选,用于指定每个元素之间的分隔符。

以下是一些 <c:forEach> 的使用示例:

  1. 遍历数组中的元素:
    <c:set var="numbers" value="1,2,3,4,5" />
    <c:forEach var="number" items="${numbers}">
        ${number}
    </c:forEach>
    //上述代码将输出数组中的每个数字,即 1,2,3,4,5。

  2. 遍历集合中的元素:
    <c:set var="list" value="${1,2,3,4,5}" />
    <c:forEach var="number" items="${list}">
        ${number}
    </c:forEach>
    //上述代码将输出集合中的每个数字,即 1,2,3,4,5。

  3. 遍历数组或集合中的元素并应用分隔符:
    <c:set var="numbers" value="1,2,3,4,5" />
    <c:forEach var="number" items="${numbers}" separator=", ">
        ${number}
    </c:forEach>
    //上述代码将输出数组或集合中的每个数字并用逗号分隔,即 1,2,3,4,5。

  4. 遍历数组或集合中的元素并使用 varStatus 属性:
    <c:set var="numbers" value="1,2,3,4,5" />
    <c:forEach var="number" items="${numbers}" varStatus="status">
        ${status.index + 1}.${number}
    </c:forEach>
    //上述代码将输出数组或集合中的每个数字,并显示当前迭代索引,即 1.1,2.2,3.3,4.4,5.5。

7、<c:import>用于在 JSP 页面中包含其他页面的内容。

<c:import url="URL" [charEncoding="字符编码"] [pageContext="页面上下文"] [requestContext="请求上下文"] />
  • url 属性指定要导入的资源的 URL。

  • charEncoding 属性可选,指定要使用的字符编码。

  • pageContext 属性可选,指定要使用的页面上下文。

  • requestContext 属性可选,指定要使用的请求上下文。

以下是 <c:import> 的使用示例:

  1. 导入资源文件并指定字符编码:
    <c:import url="/path/to/page.html" charEncoding="UTF-8" />
    //上述代码将导入路径为 /path/to/page.html 的 HTML 文件,并使用 UTF-8 编码,将其内容插入到当前位置。

  2. 具体用法:
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <!DOCTYPE html>
    <html>
    <head>
        <title><c:import> 标签示例</title>
    </head>
    <body>
        <h1>主页</h1>
        <p>这是主页的内容。</p>
    
        <!-- 使用 <c:import> 标签包含其他页面的内容 -->
        <c:import url="include.jsp" />
    
        <p>主页的其他内容。</p>
    </body>
    </html>
    /*在这个示例中,我们首先导入了 JSTL 核心标签库,以便使用 <c:import> 标签。
    
    然后,我们在主页中使用了 <c:import> 标签,将名为 include.jsp 的页面包含到主页中。
    
    <c:import> 标签的 url 属性指定了要包含的页面的 URL。在这个示例中,我们将 include.jsp 页面的内容嵌入到主页中。
    
    当您运行主页时,它将显示主页的内容,然后包含 include.jsp 页面的内容。这允许您在不同的页面之间共享或重用通用内容,以便更好地管理和维护您的 JSP 应用程序。*/

二、格式化标签库(Formatting Tags)

1、<fmt:formatDate>:用于格式化日期。

<fmt:formatDate value="Date对象" [format="日期格式"] />
  • value 属性指定要格式化的日期对象。

  • format 属性可选,指定日期对象的格式。如果未指定该属性,则默认使用 Java 的 SimpleDateFormat 类中的 short 格式。

以下是一些 fmt:formatDate 的使用示例:

  1. 将日期对象转换为默认格式的字符串:
    <fmt:formatDate value="${today}" />
    //上述代码中,${today} 是一个日期对象,它会被格式化为默认格式的字符串。

  2. 将日期对象转换为指定格式的字符串:
    <fmt:formatDate value="${today}" format="yyyy-MM-dd HH:mm:ss" />
    //上述代码中,${today} 是一个日期对象,它会被格式化为 "yyyy-MM-dd HH:mm:ss" 格式的字符串。

  3. 在表单中显示当前日期:
    <form>
      <fmt:formatDate value="${new java.util.Date()}" />
      <input type="submit" value="Submit" />
    </form>
    /*上述代码中,${new java.util.Date()} 创建了一个当前日期和时间的对象,它会被格式化为默认格式的字符串,并在表单中显示出来。当用户提交表单时,将发送一个请求,该请求将包含当前日期和时间的字符串。*/

2、<fmt:formatNumber>:用于格式化数字。

<fmt:formatNumber value="数字对象" [format="数字格式"] [currencyStyle="货币样式"] [pattern="模式"] [locale="地区"] />
  • value 属性指定要格式化的数字对象。

  • format 属性可选,指定数字对象的格式。如果未指定该属性,则默认使用 Java 的 DecimalFormat 类中的 DEFAULT 格式。

  • currencyStyle 属性可选,指定货币样式。如果指定了该属性,则将数字格式化为指定货币样式的字符串。

  • pattern 属性可选,指定自定义模式。如果指定了该属性,则使用指定的模式格式化数字。

  • locale 属性可选,指定地区。如果指定了该属性,则使用指定地区的格式规则进行格式化。

以下是一些 fmt:formatNumber 的使用示例:

  1. 将数字对象格式化为默认格式的字符串:
    <fmt:formatNumber value="${number}" />
    //上述代码中,${number} 是一个数字对象,它会被格式化为默认格式的字符串。

  2. 将数字对象格式化为百分比格式的字符串:
    <fmt:formatNumber value="${percentage}" format="0.00%" />
    /*上述代码中,${percentage} 是一个数字对象,它会被格式化为百分比格式的字符串,保留两位小数并显示为百分数形式。*/

  3. 将数字对象格式化为指定货币样式的字符串:
    <fmt:formatNumber value="${amount}" currencyStyle="Currency" />
    //上述代码中,${amount} 是一个数字对象,它会被格式化为指定货币样式的字符串,例如美元 ($)。

  4. 将数字对象按照自定义模式格式化:
    <fmt:formatNumber value="${price}" pattern="#,##0.00" />
    /*使用 <fmt:formatNumber> 标签,我们格式化了数字 12345.6789。value 属性指定了要格式化的数字,pattern 属性定义了格式化模式。在这个示例中,我们使用' #' 表示可选数字,', '表示千位分隔符,'0 '表示必填数字,'.00 '表示保留两位小数。
    
    <fmt:formatNumber> 标签将格式化后的结果存储在名为 formattedNumber 的变量中。
    
    在页面的其他部分,我们使用 ${formattedNumber} 来显示格式化后的数字。
    
    当您运行这个页面时,它将显示格式化后的数字,例如 12,345.68。这演示了如何使用 <fmt:formatNumber> 标签来格式化数字,使其更易于阅读和呈现。您可以根据需要调整 pattern 属性来满足不同的数字格式化要求。*/

  5. 将数字对象按照指定地区的格式规则进行格式化:
    <fmt:formatNumber value="${number}" locale="fr_FR" />
    /*上述代码中,${number} 是一个数字对象,它会被按照法国地区的格式规则进行格式化,例如可能使用逗号作为千位分隔符。*/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值