JSP 最佳实践: 使用JSTL来更新JSP页面
2007-05-14 00:48
501 查看
2003 年 7 月 31 日
JSP 标准标记库(Standard Tag Library,JSTL)是一组以标准化格式实现许多通用的Web站点功能的定制标记。在 JSP 最佳实践这一部分,Brett McLaughlin将向您介绍JSTL,阐述如何转变JSP页面来使用高功能性的标记。
JSP技术的优势之一在于其定制标记库工具。除了核心JSP标记,如
JSTL实际上是一组标准化用于JSP 1.2的定制标记库。许多JSTL标记都与核心JSP标记类似,但它们可以提供更多的功能。例如,
在 JSP最佳实践这一部分,我们将使用
JSTL 设置
虽然JSTL计划捆绑到下一波Web容器中,但您目前必须自己进行设置。按以下步骤操作以将JSTL装载到Web容器中:
从 apache.org下载
解压缩下载的文件。
将
将
将以下显示的条目添加到
重启Web容器。
这是JSTL设置的速成版本,它可以满足大多数情况。更详细信息请参阅 参考资料部分。
联合 JSTL标记
如果您希望在JSP页面上使用任何JSTL标记,您首先必须在该页面上声明标记库前缀和URL。我们正在使用核心JSTL库,因此使用的标准前缀是
表1:索引文件的taglib指令
在向JSP页面添加了JSTL taglib之后,您可以使用核心库中的任何标记,只需把标记的前缀改为
表2:转为JSTL
这一段程序与前面一段JSP程序之间唯一的区别是我们在c中使用了
如果您进行了仔细研究,您可能注意到我避免改变表2中的header inclusion程序代码。header程序代码包含参数,它增加了在此讨论的复杂性。在 JSP 最佳实践的下一部分,您将了解如何使用
参考资料
您可以参阅本文在 developerWorks 全球站点上的 英文原文.
从JSP技术开始? 参阅Brett McLaughlin撰写的 JSP最佳实践 第一部分 。您可以参阅
您可能还希望考虑使用JSP-标准IDE。您可以选择:
JEdit
NetBeans
Eclipse
Noel Bergman的“ JSP 标记库:着意设计的更好的可用性”( developerWorks, December 2001)介绍定制标记库工具,它可以用于创建JSTL。
Mark Kolb的“ JSTL 入门:表达式语言” ( developerWorks, February-May 2003)全面介绍JSP标准标记库。
JSP技术的指导性介绍,参阅Noel Bergman的“ JavaServer页面技术简 介”指南( developerWorks, August 2001)。
For the nitty-gritty details of JSP technology, your best bet is to read the JSP specification.
Hans Bergsten的 JavaServer 页面 (O'Reilly & Associates, 2002)是了解JSP技术必不可少的参考资料。
参阅 developerWorksJava技术教程 了解developerWorks提供的免费Java技术教程。
在 developerWorksJava 技术专区 可以找到数百篇关于Java技术的参考资料(包括更多关于JSP技术的文章)
关于作者
JSP 标准标记库(Standard Tag Library,JSTL)是一组以标准化格式实现许多通用的Web站点功能的定制标记。在 JSP 最佳实践这一部分,Brett McLaughlin将向您介绍JSTL,阐述如何转变JSP页面来使用高功能性的标记。
JSP技术的优势之一在于其定制标记库工具。除了核心JSP标记,如
jsp:include之外,定制标记库工具使您能够创建唯一的标记来描述以站点或应用程序为导向的操作。一旦您创建了定制标记库(简称 taglib),当您扩展项目或转向另一个项目时您可以重复使用这些标记。您还可以将taglib传递给其它开发人员,从而他们可以在自己的网站上使用,或者在您Web应用程序的其它部分使用。在这一系列的下一部分,我将向您展示如何创建自己的定制标记库,但现在我们将重点关注JSP标准标记库(JSTL)。
JSTL实际上是一组标准化用于JSP 1.2的定制标记库。许多JSTL标记都与核心JSP标记类似,但它们可以提供更多的功能。例如,
c:import标记与我们在前一部分中介绍的
include和
jsp:include指令极其类似(见 参考资料)。 与include指令一样,
c:import可以帮助您读取(populate)您Web站点或Web应用程序的页面,但其功能性扩展超出了核心JSP标记的范畴。
在 JSP最佳实践这一部分,我们将使用
c:import标记来了解如何将Web页面从JSP转变成JSTL。但是,在开始使用新标记之前,我们需要将JSTL装载到Web容器中。
JSTL 设置
虽然JSTL计划捆绑到下一波Web容器中,但您目前必须自己进行设置。按以下步骤操作以将JSTL装载到Web容器中:
从 apache.org下载
jakarta-taglibs-standard-current.tar.gz。
解压缩下载的文件。
将
jakarta-taglibs/standard-1.0.3/tld/c.tld拷贝到
WEB/INF/tlds目录。
将
jakarta-taglibs/standard-1.0.3/lib中的所有JAR文件拷贝到
WEB-INF/lib目录。
将以下显示的条目添加到
WEB-INF/web.xml部署描述符中。
<taglib> <taglib-uri>http://java.sun.com/jstl/core</taglib-uri> <taglib-location>/WEB-INF/tlds/c.tld</taglib-location> </taglib> |
这是JSTL设置的速成版本,它可以满足大多数情况。更详细信息请参阅 参考资料部分。
|
如果您希望在JSP页面上使用任何JSTL标记,您首先必须在该页面上声明标记库前缀和URL。我们正在使用核心JSTL库,因此使用的标准前缀是
c(代表 核心)。表1显示增加了
taglib指令的Web站点索引文件:
表1:索引文件的taglib指令
<%@ page language="java" contentType="text/html" %> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> <html> <head> <title>newInstance.com</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link href="/styles/default.css" rel="stylesheet" type="text/css" /> </head> <body> <jsp:include page="header.jsp" flush="true"> <jsp:param name="pageTitle" value="newInstance.com"/> <jsp:param name="pageSlogan" value=" " /> </jsp:include> <%@ include file="/navigation.jsp" %> <jsp:include page="bookshelf.jsp" flush="true" /> <jsp:include page="/mt-blogs/index.jsp" flush="true" /> <%@ include file="/footer.jsp" %> </body> </html> |
c。为了了解这一流程,我们将尝试把页面从
jsp:include标记转换成
c:import标记。 表2显示了本系列第二部分介绍的
jsp:include实例(见 参考资料)转为使用新
c:import标记。
表2:转为JSTL
<%@ page language="java" contentType="text/html" %> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> <html> <head> <title>newInstance.com</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link href="/styles/default.css" rel="stylesheet" type="text/css" /> </head> <body> <jsp:include page="header.jsp" flush="true"> <jsp:param name="pageTitle" value="newInstance.com"/> <jsp:param name="pageSlogan" value=" " /> </jsp:include> <%@ include file="/navigation.jsp" %> <c:import url="bookshelf.jsp" /> <c:import url="/mt-blogs/index.jsp" /> <%@ include file="/footer.jsp" %> </body> </html> |
url属性,而不是在
jsp:include中使用
page属性。非常简单,是不是?做一个娱乐性练习,尝试自己转换一个页面,只需运行我们在“使用jsp:include管理动态内容”(本系列第二部分,参阅 参考资料)中使用的JSP程序代码并将其转换成JSTL,如表2所示。
如果您进行了仔细研究,您可能注意到我避免改变表2中的header inclusion程序代码。header程序代码包含参数,它增加了在此讨论的复杂性。在 JSP 最佳实践的下一部分,您将了解如何使用
c:import来传递参数。我还将向您介绍
c:import标记的一些特性,它可以提供比简单的
jsp:include标记更多的功能。那时,您可以实践此处了解到的简单的JSTL转换技术,到时候见!
参考资料
您可以参阅本文在 developerWorks 全球站点上的 英文原文.
从JSP技术开始? 参阅Brett McLaughlin撰写的 JSP最佳实践 第一部分 。您可以参阅
include.jsp表,在本系统第二部分“ JSP 最佳实践:用 jsp:include 控制动态内容"我们将它转换成JSTL。
您可能还希望考虑使用JSP-标准IDE。您可以选择:
JEdit
NetBeans
Eclipse
Noel Bergman的“ JSP 标记库:着意设计的更好的可用性”( developerWorks, December 2001)介绍定制标记库工具,它可以用于创建JSTL。
Mark Kolb的“ JSTL 入门:表达式语言” ( developerWorks, February-May 2003)全面介绍JSP标准标记库。
JSP技术的指导性介绍,参阅Noel Bergman的“ JavaServer页面技术简 介”指南( developerWorks, August 2001)。
For the nitty-gritty details of JSP technology, your best bet is to read the JSP specification.
Hans Bergsten的 JavaServer 页面 (O'Reilly & Associates, 2002)是了解JSP技术必不可少的参考资料。
参阅 developerWorksJava技术教程 了解developerWorks提供的免费Java技术教程。
在 developerWorksJava 技术专区 可以找到数百篇关于Java技术的参考资料(包括更多关于JSP技术的文章)
关于作者
Brett McLaughlin自从 Logo 时代(还记得小三角形吗?)开始就一直从事计算机方面的工作。目前,他专门从事用 Java 语言和与 Java 相关的技术构建应用程序基础结构。最近几年,他在 Nextel Communications 和 Allegiance Telecom, Inc. 从事这些基础结构的实现。Brett 是 Java Apache Turbine 项目的共同创始人之一,该项目通过使用 Java servlet 为 Web 应用程序开发构建可重用的组件体系结构。他还是 EJBoss 项目(一种开放源码 EJB 应用程序服务器)和 Cocoon(一种开放源码 XML Web 发布引擎)的志愿开发人员之一。您可以通过 brett@oreilly.com与 Brett联系。 |
相关文章推荐
- JSP 最佳实践: 使用JSTL来更新JSP页面
- JSP 最佳实践: 使用JSTL来更新JSP页面
- JSP 最佳实践: 使用JSTL来更新JSP页面
- JSP 最佳实践: 使用JSTL来更新JSP页面 ------标准化JSTL标记为您的Web页面带来更多的功能
- 使用JSTL来更新JSP页面使用JSTL来更新JSP页面
- jstl标签在MyEclipse中的jsp页面使用报错
- JSP页面中实现使用taglib导入库时自动提示(JSTL 库安装)
- 如何在JSP页面使用JSTL标签获取List的元素个数
- jsp页面中使用JSTL标签库的<c:redirect>的一些疑问?
- 【JSP】JSTL使用core标签总结(不断更新中)
- 关于jsp页面使用jstl的异常分析
- idea下Maven项目的webapp下的jsp页面无法使用el或者jstl表达式
- 在JSP页面中使用JSTL表达式所需要的包
- jstl标签在MyEclipse中的jsp页面使用报错
- 关于jsp页面使用jstl的异常分析
- JSP页面使用JSTL fmt 格式化时间
- MAVEN项目中JSP页面使用JSTL标签
- JSP页面中使用JSTL标签出现无法解析问题解决办法
- jsp页面使用jstl获取当前时间
- 如何在JSP页面中使用JSTL标签实现if-else判断