跳至内容

XML - 数据交换管理/JSTL

来自维基教科书,开放的书籍,开放的世界



上一章 下一章
RPC RDF - 资源描述框架



JavaServer Pages 标准标签库(简称:JSTL)是四个自定义标签库的集合,扩展了 JSP 规范。作为组件,它被分配到 Java EE Web 应用程序开发平台中。JSTL 在 Java 社区进程 (JCP) 052 的环境中进行管理。在 Jakarta-Project 中,这些规范有参考实现。


在 1.1 版本中,以下库是预期的

  • core:迭代、条件、URL 特定和一般标签
  • xml:来自 XML 领域和 XML 转换的标签
  • sql:用于直接数据库管理的标签
  • i18n:用于格式化和国际化的标签

在其最初的 1.0 版本中,与 1.1 版本相比,一个“表达式语言”是预期的。随着 JSP 2.0,JSP-EL 被纳入 JSP 规范本身。因此,JSTL 1.1 的主要目标是使库适应 JSP 2.0 的 JSP-EL。随着 1.2 版本的库,JSTL 在 JSP 2.1 和 JSF-1.2 规范的表达式语言统一方面是最新的。此外,1.2 版本的 JSTL 是 Java-EE-5 平台的一部分。

JSTL 1.1 的使用

[编辑 | 编辑源代码]

至于 JSTL 1.1 的使用,需要 JSP-EL,一个 servlet 容器必须至少符合 JSP 2.0 规范才能使用它。参考实现由两个 JAR 归档文件“standard.jar”和“jstl.jar”组成。在大多数容器中,它们通常只需要位于 Web 应用程序的 lib 路径中。为了确保向后兼容性,JSTL 1.1 由 URI "http://java.sun.com/jsp/jstl/fmt“ 引用,而 JSTL 1.0 使用 "http://java.sun.com/jstl/fmt“


XML 表示法 (JSPX) 中的示例 JSP 页面

<?xml version="1.0" encoding="utf-8" ?>
<jsp:root
  xmlns:jsp="http://java.sun.com/JSP/Page"
  xmlns:c="http://java.sun.com/jsp/jstl/core"
  xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
version="2.0">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <title>JSTL 1.1</title>
</head>
<body>

<h1>Iteration</h1>
<ul>
  <c:forEach var="num" begin="1" end="10">
    <li>Number<c:out value="${num}"/></li>
  </c:forEach>
</ul>

<h1>Formatting</h1>
<p>
  Currency: <fmt:formatNumber value="10000" type="currency" currencyCode="EUR" />
</p>

</body>
</html>
</jsp:root>

代码说明

jsp:root 元素中,指明了使用来自 JSTL 的基础和 I18N 标签库(core 和 fmt),并链接到相应的 XML 命名空间。在 Iteration 标题下,使用来自 core 库的 forEach-Tag:它显示标签体(即标签的内容)十次。在这个循环中,使用 ${num} 可以找到 JSP 表达式。在每次循环周期中,这里都会显示来自 num 的当前数据。在 Formatting 标题下,使用来自 JSTL fmt 库的 formatNumber 标签。根据调整的语言(例如,可以通过 fmt:setLocale 设置),数字 10000 将被格式化(例如,在德语中为“EUR 10.000,00”,在英语中为“EUR 10,000.00”)。

JSTL 的替代方案

[编辑 | 编辑源代码]

Struts 与 JSTL:实际上,在许多情况下,Struts 标签和 JSTL 标签将执行等效的功能。与 Struts 框架不同,JSTL 不链接到特定架构范式,例如 模型-视图-控制器 分离。与 struts 标签相比,JSTL 标签功能更强大,因为 JSTL 是 J2EE 规范的更标准部分,同时还有许多选项可用,例如条件检查、比较字符串、去除空格、转换为大写或小写等。两个库都拥有名称相同的标签。因此,如果这些库在应用程序中混合使用,这是可能的,则需要注意使用唯一的前缀(JSP)或命名空间(JSPX)。

示例应用程序和教程

[编辑 | 编辑源代码]
[编辑 | 编辑源代码]
华夏公益教科书