JSP标准标记库(JSTL)的介绍

时间:2018-11-15 12:53:51  来源:igfitidea点击:

JSP是为web应用程序中的表现层而设计的,但页面中需要包含逻辑或代码,以控制元素的显示。

自从JSP被发明以来,scriptlet开始被大量使用,HTML与JSP scriptlet、左大括号和右大括号的混合使得JSP页面很难扩展。JSP页面变得杂乱无章,难以维护。

2002年6月,JavaServerPages Standard Tag Library(JSTL)规范1.0首次发布。
JSTL为JSP的开发者们提供了使用标准友好的标记来处理不同元素的新方法。

JSP标准标记库(JSTL)被以下四个标记库:

  • 核心标记库
  • 国际化(i18l)和格式化标记库
  • 关系数据库访问标记库
  • XML处理标记库

通过提供友好的XML基标记简化编写JSP页面的任务,
在页面的表示层中提供了可复用的逻辑,
使JSP页面更易于阅读和维护。

核心标记库

顾名思义,核心标记库为JSP提供核心功能操作,使最常见的操作更容易更有效实现。

核心标记指定了几个操作,比如根据条件来显示内容、操作集合以及进行URL管理。

通过使用核心标记,您就不用再写小的scriptlet。(但是您仍然需要了解scriptlet的用法,以便维护遗留的web应用程序,或者在需要时将它们转换为JSTL)。

国际化(I18L)和格式化标记

国际化(I18L)和格式化标记指定了一系列操作,以使web应用程序支持多语言。这些操作包括管理资源包、地区以及基本名称。

关系数据库访问标记

访问数据库是web应用程序最主要的任务之一。JSTL提供了一个标准标记列表来帮助您操作数据,比如从关系数据库中进行select, insert, update 以及 delete等操作

XML处理标签

XML已成为企业web应用程序进行数据交换的的标准。因此,有效地操作XML对于大多数web应用程序非常重要,当然,JSTL还提供了一个标记列表,用于从XML解析到XML转换的处理。

JSTL示例

让我们来看一个示例,看看如何分别使用scriptlet和JSTL来实现相同的JSP页面。

使用 scriptlet

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>JSP scritlet</title>
        <style type="text/css">
            .odd{background-color:white}
            .even{background-color:gray}
        </style>
    </head>
    <body>
        <table border="1" width="100px">
            <% for (int c = 1; c < 10; c++) {
                    if (c % 2 == 0) {
            %>
 
            <tr class="even">
                <td><%= c%></td>
            </tr>
            <% } else {%>
            <tr class="odd">
                <td><%= c%></td>
            </tr>
 
            <%}
            }%>
        </table>
    </body>
</html>

使用 JSTL

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"
          prefix="c" %>
<html>
    <head>
        <title>JSTL page</title>
        <style type="text/css">
            .odd{background-color:white}
            .even{background-color:gray}
        </style>
    </head>
    <body>
        <table border="1" width="100px">
            <c:forEach begin="1" end="10" step="1" var="c">
                <c:choose>
                    <c:when test = "${c%2 ==0}">
                        <tr class="even">
                            <td><c:out value="${c}" /></td>
                        </tr>
                    </c:when>
                    <c:otherwise>
                        <tr class="odd">
                            <td><c:out value="${c}" /></td>
                        </tr>
                    </c:otherwise>
                </c:choose>
            </c:forEach>
        </table>
    </body>
</html>

使用JSTL的JSP页面看起来比使用scriptlet的JSP页面更具可读性。