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