JSP最佳实践 使用JSTL来更新JSP页面
创始人
2024-03-23 12:10:40
0

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 部署描述符中。


  http://java.sun.com/jstl/core
  /WEB-INF/tlds/c.tld

#p#

重启Web容器。

这是JSTL设置的速成版本,它可以满足大多数情况。更详细信息请参阅 参考资料部分。

联合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﹥

在向JSP页面添加了JSTL taglib之后,您可以使用核心库中的任何标记,只需把标记的前缀改为 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﹥

【编辑推荐】

  1. 在JDBC设计中加速JSP访问数据库
  2. 对比JSP和ASP.NET的存储过程
  3. JSP和IIS的最佳解决方案实例分析

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...