【Java 进阶篇】用JSTL玩转Java:了解JSTL常用标签

这篇具有很好参考价值的文章主要介绍了【Java 进阶篇】用JSTL玩转Java:了解JSTL常用标签。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

java jstl,Java 进击高手之路,java,python,开发语言,算法,前端,windows,git

JavaServer Pages标准标签库(JavaServer Pages Standard Tag Library,简称JSTL)是Java Web应用程序中常用的标签库之一。它提供了一组标签,使得在JSP页面中处理数据、控制流程、以及显示内容变得更加便捷和高效。本文将带领你深入了解JSTL的常用标签,无论你是初学者还是有一定经验的开发者,都能从中受益。

JSTL概述

在深入研究JSTL的常用标签之前,让我们先了解一下JSTL是什么以及为什么我们需要它。

什么是JSTL?

JSTL是JavaServer Pages的标准标签库,旨在简化在JSP页面中执行常见任务的编程。它包含了一组标签,用于处理数据、控制流程和动态生成内容。JSTL的主要优势在于它的可读性和可维护性,使开发者能够更轻松地将业务逻辑与界面分离,提高了代码的可重用性。

为什么使用JSTL?

JSTL的使用有诸多好处,其中一些主要原因包括:

  • 降低耦合度:JSTL使开发人员能够将业务逻辑从页面中分离出来,从而降低了代码的耦合度。这使得代码更易于维护和扩展。

  • 提高可读性:JSTL标签的语法与HTML和XML非常相似,这使得代码更易于阅读和理解。

  • 增加可维护性:通过将逻辑与界面分开,JSTL有助于减小代码的规模,并且使得代码更易于维护。这对于长期项目的可维护性非常重要。

  • 提高开发效率:JSTL提供了许多常用操作的标准标签,从而减少了开发工作量。这意味着你可以更快速地构建功能齐全的Web应用程序。

现在,让我们深入研究JSTL的一些常用标签。

输出标签

输出标签用于将内容显示在JSP页面上。这些标签可以用于输出文本、表达式的值、变量等。

<c:out>

<c:out>标签用于输出文本或表达式的值。它的语法如下:

<c:out value="expression" />
  • value属性:指定要输出的表达式或变量的值。
示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSTL Output Tag</title>
</head>
<body>
    <c:out value="Hello, JSTL!" />
</body>
</html>

在这个示例中,<c:out>标签将"Hello, JSTL!"输出到页面上。

<c:if>

<c:if>标签用于在JSP页面中执行条件判断。它的语法如下:

<c:if test="expression">
    <!-- 在条件为true时显示的内容 -->
</c:if>
  • test属性:指定一个条件表达式,如果表达式为真,标签内的内容将被执行。
示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSTL Conditional Tag</title>
</head>
<body>
    <c:if test="${5 > 3}">
        5 is greater than 3.
    </c:if>
</body>
</html>

这个示例中,<c:if>标签检查条件${5 > 3}是否为真,如果为真,则显示"5 is greater than 3."。

<c:choose>, <c:when>, <c:otherwise>

<c:choose>标签用于创建多个条件分支,类似于Java中的switch语句。在<c:choose>内部,可以使用<c:when>标签来定义条件,如果条件满足,则执行相应的内容,而<c:otherwise>标签定义了所有条件都不满足时执行的内容。

<c:choose>
    <c:when test="condition1">
        <!-- 条件1满足时执行的内容 -->
    </c:when>
    <c:when test="condition2">
        <!-- 条件2满足时执行的内容 -->
    </c:when>
    <c:otherwise>
        <!-- 所有条件都不满足时执行的内容 -->
    </c:otherwise>
</c:choose>
  • <c:when>标签有一个test属性,用于定义条件。
  • <c:otherwise>标签没有属性,用于定义默认情况。
示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSTL Conditional Tags</title>
</head>
<body>
    <c:choose>
        <c:when test="${5 > 10}">
            5 is greater than 10.
        </c:when>
        <c:when test="${5 < 10}">
            5 is less than 10.
        </c:when>
        <c:otherwise>
            5 is equal to 10.
        </c:otherwise>
    </c:choose>
</body>
</html>

这个示例中,<c:choose>标签根据条件的结果选择不同的分支执行。

迭代标签

迭代标签用于在JSP页面中迭代处理数据,例如遍历集合、数组或Map等。

<c:forEach>

<c:forEach>标签用于遍历集合、数组或Map,并在每次迭代中执行特定的操作。它的语法如下:

<c:forEach items="collection" var="item">
    <!-- 在每次迭代中执行的内容 -->
</c:forEach>
  • items属性:指定要迭代的集合、数组或Map。
  • var属性:指定当前迭代的元素。
示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSTL forEach Tag</title>
</head>
<body>
    <c:forEach items="${requestScope.students}" var="student">
        Student Name: <c:out value="${student.name}" /><br/>
    </c:forEach>
</body>
</html>

在这个示例中,我们使用<c:forEach>标签遍历名为"students"的集合,然后输出每个学生的姓名。

<c:forTokens>

<c:forTokens>标签用于迭代一个字符串中的子字符串,通常用于分隔符分隔的字符串。它的语法如下:

<c:forTokens items="string" delims="delimiter" var="item">
    <!-- 在每次迭代中执行的内容 -->
</c:forTokens>
  • items属性:指定要迭代的字符串。
  • delims属性:指定用于分隔字符串的分隔符。
  • var属性:指定当前迭代的子字符串。
示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSTL forTokens Tag</title>
</head>
<body>
    <c:forTokens items="apple,banana,cherry" delims="," var="fruit">
        Fruit: <c:out value="${fruit}" /><br/>
    </c:forTokens>
</body>
</html>

在这个示例中,我们使用<c:forTokens>标签遍历以逗号分隔的水果列表,然后输出每个水果。

设置标签

设置标签用于在JSP页面中创建和设置变量。这些变量可以是本地变量、页面范围变量或会话范围变量。

<c:set>

<c:set>标签用于创建或设置变量的值。它的语法如下:

<c:set var="variableName" value="expression" [scope="scope"] />
  • var属性:指定要创建或设置的变量名。
  • value属性:指定变量的值,可以是一个表达式。
  • scope属性(可选):指定变量的范围,可以是"page"(页面范围)、“request”(请求范围)、“session”(会话范围)或"application"(应用程序范围)。如果不指定,默认为"page"。
示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSTL set Tag</title>
</head>
<body>
    <c:set var="message" value="Hello from JSTL!" />
    <c:out value="${message}" />
</body>
</html>

这个示例中,我们使用<c:set>标签创建一个名为"message"的变量,并设置它的值为"Hello from JSTL!",然后使用<c:out>标签输出这个变量的值。

<c:remove>

<c:remove>标签用于移除变量,以释放资源。它的语法如下:

<c:remove var="variableName" [scope="scope"] />
  • var属性:指定要移除的变量名。
  • scope属性(可选):指定变量的范围,可以是"page"(页面范围)、“request”(请求范围)、“session”(会话范围)或"application"(应用程序范围)。如果不指定,默认为"page"。
示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSTL remove Tag</title>
</head>
<body>
    <c:set var="message" value="Hello from JSTL!" />
    <c:out value="${message}" /><br/>
    
    <c:remove var="message" />
    
    <c:if test="${empty message}">
        Message has been removed.
    </c:if>
</body>
</html>

这个示例中,我们首先使用<c:set>标签创建一个名为"message"的变量,然后使用<c:remove>标签将其移除。最后,我们使用<c:if>标签检查变量是否为空,以确认它已被成功移除。

URL标签

URL标签用于在JSP页面中生成URL链接,包括相对路径和绝对路径。

<c:url>

<c:url>标签用于生成一个相对于当前上下文路径的URL。它的语法如下:

<c:url value="URL" [var="variableName"] [scope="scope"] />
  • value属性:指定要生成的URL,可以是相对路径或绝对路径。
  • var属性(可选):指定要创建的变量名,以保存生成的URL。
  • scope属性(可选):指定变量的范围,可以是"page"(页面范围)、“request”(请求范围)、“session”(会话范围)或"application"(应用程序范围)。如果不指定var属性,则将URL输出到页面。
示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSTL URL Tag</title>
</head>
<body>
    <c:url value="/page.jsp" var="pageUrl" />
    <a href="<c:out value="${pageUrl}" />">Go to Page</a>
</body>
</html>

这个示例中,我们使用<c:url>标签生成了一个指向"/page.jsp"的相对路径URL,并将其保存在名为"pageUrl"的变量中。然后,我们在页面上使用<a>标签将这个URL链接显示出来。

<c:import>

<c:import>标签用于在JSP页面中引入其他页面或资源。它的语法如下:

<c:import url="URL" [var="variableName"] [scope="scope"] />
  • url属性:指定要引入的URL,可以是相对路径或绝对路径。
  • var属性(可选):指定要创建的变量名,以保存引入的内容。
  • scope属性(可选):指定变量的范围,可以是"page"(页面范围)、“request”(请求范围)、“session”(会话范围)或"application"(应用程序范围)。如果不指定var属性,则引入的内容将直接显示在页面上。
示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSTL Import Tag</title>
</head>
<body>
    <c:import url="http://example.com" var="externalContent" />
    <c:out value="${externalContent}" />
</body>
</html>

这个示例中,我们使用<c:import>标签引入了外部网站"http://example.com"的内容,并将其保存在名为"externalContent"的变量中,然后使用<c:out>标签将内容显示在页面上。

遍历集合

在实际的Web应用中,我们经常需要遍历集合并显示其中的数据。JSTL提供了一些标签来帮助我们完成这个任务。

<c:forEach>

前面已经介绍过<c:forEach>标签,它可以用来遍历集合、数组或Map。

示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>Iterating Over a List with JSTL</title>
</head>
<body>
    <c:forEach items="${requestScope.students}" var="student">
        Student Name: <c:out value="${student.name}" /><br/>
    </c:forEach>
</body>
</html>

在这个示例中,我们遍历了一个名为"students"的集合,显示每个学生的姓名。

<c:forTokens>

<c:forTokens>标签也可用于遍历一个以特定分隔符分隔的字符串。

示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>Iterating Over a Comma-Separated String with JSTL</title>
</head>
<body>
    <c:forTokens items="apple,banana,cherry" delims="," var="fruit">
        Fruit: <c:out value="${fruit}" /><br/>
    </c:forTokens>
</body>
</html>

在这个示例中,我们遍历了一个以逗号分隔的水果字符串,并显示每个水果的名称。

控制流程标签

控制流程标签用于控制页面的执行流程,例如条件判断、循环等。

<c:if>

前面已经介绍过<c:if>标签,它用于执行条件判断。

示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>Conditional Rendering with JSTL</title>
</head>
<body>
    <c:if test="${5 > 3}">
        5 is greater than 3.
    </c:if>
</body>
</html>

在这个示例中,我们使用<c:if>标签检查条件${5 > 3}是否为真,如果为真,显示"5 is greater than 3."。

<c:choose>, <c:when>, <c:otherwise>

前面已经介绍过<c:choose>, <c:when>, <c:otherwise>标签,它们用于创建多个条件分支。

示例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>Multiple Conditions with JSTL</title>
</head>
<body>
    <c:choose>
        <c:when test="${5 > 10}">
            5 is greater than 10.
        </c:when>
        <c:when test="${5 < 10}">
            5 is less than 10.
        </c:when>
        <c:otherwise>
            5 is equal to 10.
        </c:otherwise>
    </c:choose>
</body>
</html>

在这个示例中,<c:choose>标签根据条件的结果选择不同的分支执行。

使用JSTL实现条件渲染

在实际开发中,我们经常需要根据条件来动态渲染页面上的内容。使用JSTL的条件标签可以轻松实现这一点。

示例:根据用户登录状态渲染内容

假设我们有一个Web应用,根据用户是否已登录来渲染不同的欢迎消息。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>Conditional Rendering Based on User Login with JSTL</title>
</head>
<body>
    <c:choose>
        <c:when test="${empty sessionScope.user}">
            <p>Welcome, Guest! Please <a href="login.jsp">log in</a>.</p>
        </c:when>
        <c:otherwise>
            <p>Welcome, <c:out value="${sessionScope.user.name}" />! <a href="logout.jsp">Log out</a></p>
        </c:otherwise>
    </c:choose>
</body>
</html>

在这个示例中,我们使用<c:choose>标签根据用户是否已登录来渲染不同的欢迎消息。如果sessionScope.user为空(即用户未登录),则显示欢迎消息和登录链接。否则,显示欢迎消息和注销链接,以及用户的姓名。

使用JSTL处理表单数据

JSTL还可以用于处理表单数据,例如接收用户输入并在页面上显示或处理提交的表单数据。

示例:处理用户输入并显示

假设我们有一个简单的用户输入表单,用户可以在其中输入姓名并提交。我们可以使用JSTL来接收并显示用户的输入。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>Handling Form Data with JSTL</title>
</head>
<body>
    <form action="processForm.jsp" method="post">
        Enter your name: <input type="text" name="name" />
        <input type="submit" value="Submit" />
    </form>
    
    <c:if test="${not empty param.name}">
        <p>You entered: <c:out value="${param.name}" /></p>
    </c:if>
</body>
</html>

在这个示例中,我们创建了一个简单的表单,用户可以输入姓名并提交。然后,使用JSTL的<c:if>标签来检查表单参数param.name是否存在,如果存在,则显示用户输入的姓名。

示例:处理表单数据并执行操作

除了显示用户输入,我们还可以使用JSTL来处理表单数据并执行相应的操作。假设我们有一个表单,用户可以选择操作类型并输入数据,然后根据操作类型执行不同的操作。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
    <title>Processing Form Data with JSTL</title>
</head>
<body>
    <form action="processData.jsp" method="post">
        Select an operation:
        <select name="operation">
            <option value="add">Add</option>
            <option value="subtract">Subtract</option>
            <option value="multiply">Multiply</option>
            <option value="divide">Divide</option>
        </select>
        <br/>
        Enter a number: <input type="text" name="number" />
        <br/>
        <input type="submit" value="Submit" />
    </form>
    
    <c:choose>
        <c:when test="${param.operation == 'add'}">
            <c:set var="result" value="${param.number + 10}" />
            <p>Result of addition: <c:out value="${result}" /></p>
        </c:when>
        <c:when test="${param.operation == 'subtract'}">
            <c:set var="result" value="${param.number - 5}" />
            <p>Result of subtraction: <c:out value="${result}" /></p>
        </c:when>
        <c:when test="${param.operation == 'multiply'}">
            <c:set var="result" value="${param.number * 2}" />
            <p>Result of multiplication: <c:out value="${result}" /></p>
        </c:when>
        <c:when test="${param.operation == 'divide'}">
            <c:set var="result" value="${param.number / 3}" />
            <p>Result of division: <c:out value="${result}" /></p>
        </c:when>
    </c:choose>
</body>
</html>

在这个示例中,我们创建了一个表单,用户可以选择不同的操作类型,并输入一个数字。然后,根据所选的操作类型使用<c:choose>标签执行不同的操作,并将结果显示在页面上。

JSTL的其他标签

除了上面介绍的常用标签外,JSTL还提供了一些其他标签,用于处理日期时间、本地化、格式化等任务。以下是一些常用的JSTL标签:

  • <c:forEach>:用于迭代集合、数组或Map。
  • <c:forTokens>:用于迭代分隔符分隔的字符串。
  • <c:set>:用于创建和设置变量的值。
  • <c:remove>:用于移除变量。
  • <c:url>:用于生成URL链接。
  • <c:import>:用于引入其他页面或资源。
  • <c:when><c:choose><c:otherwise>:用于条件判断和多条件分支。
  • <c:out>:用于输出文本或表达式的值。
  • <c:if>:用于执行条件判断。
  • <c:param>:用于设置URL参数。
  • <c:redirect>:用于执行页面重定向。
  • <fmt:formatDate>:用于格式化日期。
  • <fmt:formatNumber>:用于格式化数字。
  • <fmt:setLocale>:用于设置本地化。
  • <fmt:setTimeZone>:用于设置时区。

结语

在本文中,我们深入了解了JavaServer Pages标准标签库(JSTL)的常用标签,包括输出标签、迭代标签、设置标签、URL标签、遍历集合、控制流程标签以及处理表单数据。通过使用这些标签,我们可以更轻松地开发Java Web应用程序,实现动态渲染页面和处理用户输入。

无论你是新手还是有经验的开发人员,掌握JSTL的常用标签将使你的Web开发工作更加高效和易于维护。希望本文对你有所帮助,鼓励你深入学习和实践JSTL,以构建强大的Web应用程序。文章来源地址https://www.toymoban.com/news/detail-832279.html

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

到了这里,关于【Java 进阶篇】用JSTL玩转Java:了解JSTL常用标签的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【已解决】无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]

    解决时间:2023/3/31,我使用的tomcat是8.5版本的,在整合SSM项目时在jsp中使用JSTL的核心标签库 - core,也就是使用 c:forEach 标签遍历出现了这个问题: 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri 不知道该怎么说明这个bug,因为我已经在网上试过很多方法了。 比如

    2024年02月07日
    浏览(68)
  • 进阶JAVA篇-了解 File 文件的常用API

    🔥博客主页:  小扳_-CSDN博客 ❤感谢大家点赞👍收藏⭐评论✍ 目录         1.0 File 文件的说明         2.0 如何创建 File 类的对象         2.1 需要注意的事项         3.0 File 类的常用 API         3.1 如何创建文件或文件夹         3.2 如何查询文件和文件夹的信

    2024年02月06日
    浏览(32)
  • Tomcat8 jstl下载jstl-1.2.jar standard-1.1.2.jar

    下载jstl-1.2.jar 网址:https://mvnrepository.com/artifact/javax.servlet/jstl/1.2   下载standard-1.1.2.jar 网址:https://mvnrepository.com/artifact/taglibs/standard/1.1.2    

    2024年02月12日
    浏览(55)
  • EL与JSTL

    目录 EL EL语法 EL运算符 JSTL JSTL标签分类 JSP脚本:代码结构混乱、脚本与HTML 混合易出错、代码不易维护。 EL表达式:优化程序代码,增加程序可读性。 EL表达式 ${ EL 表达式 } EL操作符 操作符“  .  ” 获取对象的属性,eg:${ news.title } 操作符\\\"[ ] \\\" 获取对象的属性, eg:${ n

    2024年02月11日
    浏览(29)
  • javaee jstl表达式

    jstl是el表达式的扩展 使用jstl需要添加jar包

    2024年02月16日
    浏览(28)
  • javaee idea创建maven项目,使用el和jstl

    这是因为maven创建项目时,web.xml头部声明默认是2.3,这个默认jsp关闭el表达式 办法1 在每个需要用到el和jstl的页面上面加一句: 改为 3.0(2.4以后都可以,太高也不行,要注意配合tomcat支持的版本)

    2024年02月10日
    浏览(31)
  • JAVAWeb11-服务器渲染技术 -JSP-03-JSTL(会使用)

    JSTL 标签库 是指 JSP Standard Tag Library :JSP 标准标签库 EL 表达式是为了替换 jsp 中的表达式脚本, JSTL 是为了替换代码脚本。这样 jsp 页面变得更佳简洁 JSTL 由 五个标签库组成 使用 JSTL,需要导入相关的 jar 包 注意细节 ● taglib 引入标签,要放在行首 ● 导入 jstl jar 包后,要重

    2024年02月03日
    浏览(43)
  • Jakarta 的 Servlet 下BeanUtils的日期处理 和JSTL 的使用

    jsp优于性能等问题已经不被spring boot等支持,如果想使用jsp和jstl标签库需要引入一下依赖。 org.apache下的BeanUtils工具对表单的处理比较简单,但是不能处理日期类型,需要引入下面的代码进行转换:

    2024年02月12日
    浏览(41)
  • javaweb入门版学生信息管理系统-增删改查+JSP+Jstl+El

    dao    servlet 部分。。。 

    2024年02月10日
    浏览(42)
  • 掌握JavaWeb开发的必备技能:Servlet、JSP、Cookie、Session、EL、JSTL详解 ~~~~B站老杜--Servlet-JSP-课堂笔记

    🚀🚀1. 什么时间直播? 晚上8:00到10:00 🚀🚀2. 每周直播几天? 3天(周一、周三、周五) 本周比较特殊:周四周五周六三天直播,从下周开始就是一三五直播。 🚀🚀3. 直播什么内容? 从JavaWEB开始。(Servlet为核心,从Servlet开始学习。) JSP(JSP使用较少了,但是还有用,

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包