JSP:include 用于构建动态网站的简单 JSP 标记

2008-02-23 09:32:13来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

本文是 Java Brett McLaughlin 继第一篇 JSP 最佳实践文章后的后续文章,在文中,作者向您演示了如何扩展 JSP 技术中用于动态内容的包含功能。了解静态 include 伪指令和动态 jsp:include 元素之间的差异,搞清楚如何混合搭配这二者以获取最优性能。

在新的 JSP 最佳实践系列的前一篇文章中,您了解了如何使用 JSP include 伪指令将诸如页眉、页脚和导航组件之类的静态内容包含到 Web 页面中。和服务器端包含一样,JSP include 伪指令允许某个页面从另一个页面提取内容或数据。清单 1 重温了 include 伪指令。

清单 1. JSP include 伪指令

<![CDATA[

<%@ page language="java" contentType="text/html" %>

<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>

<%@ include file="header.jsp" %>

<%@ include file="navigation.jsp" %>

<%@ include file="bookshelf.jsp" %>

<%@ include file="/mt-blogs/index.jsp" %>

<%@ include file="footer.jsp" %>

</body>

</html>

]]>

您需要什么
本系列中的所有最佳实践都基于 JavaServer Pages 技术。要运行其中的任何最佳实践,都需要在您的本地机器或测试服务器上安装符合 JSP 技术的 Web 容器。您还需要使用文本编辑器或 IDE 来对 JSP 页面编码。

虽然 include 非常适于将静态内容并入 Web 页面,但对于动态内容却不尽如人意。我们在前一篇文章中在试图重新装入高速缓存文件时发现了这一问题。与大多数页眉文件及页脚文件不同,动态内容变化频繁,必须时刻更新。我们将首先扼要地重述一下 include 伪指令的局限性,然后我将向您演示如何用 jsp:include 标记来扩展 JSP 的包含能力。

高速缓存问题
JSP include 伪指令的不足之处有一个是:它会导致 Web 浏览器高速缓存所有页面。在处理诸如页脚、版权声明或一组静态链接之类的静态组件时,这是有意义的。这些文件不会改变,因此没有理由让 JSP 解释器不断地重新轮询其中的数据。凡是可能的地方,都应该实现高速缓存,因为它改善了应用程序的性能。

JSP 测试和开发
在构建 Web 应用程序或网站时,可能需要大量更新页眉、页脚和导航链接。仅仅为了看到对所包含文件所做的更改,而被迫不断地关闭浏览器或清除其高速缓存,这可能是件痛苦的事情。另一方面,为了结束开发周期,而不得不彻底检查一遍并修改数百个使用了 include 伪指令的页面,这也是一件痛苦的事情。我的建议是,在测试期间禁用浏览器高速缓存。在大多数情形下,这样做能够彻底解决问题。也有极少数情形,这样做并不奏效,这时可以在浏览器或服务器上不断地重新启动 Web 容器来确保不进行高速缓存。

但是,有时侯,进行高速缓存会得不偿失。如果提入的内容来自使用动态数据(如 Weblog 或数据库驱动的 JSP 文件)的程序,甚至如果所包含的内容是经常变化的 HTML(如时间戳记),那么每当装入 Web 页面时,都需要显示这些文件或程序的最新版本。遗憾的是,JSP include 伪指令并不具备这一功能。在测试和开发周期(请参阅侧栏“ JSP 测试和开发”)中,在浏览器中禁用高速缓存通常能够解决这一问题。但是,对于实际使用的应用程序而言,性能是任何设计决策过程中的一项重要因素,禁用高速缓存并不是一种可行的长远之计。更好的解决方案是使用 jsp:include 标记。

jsp:include 标记
jsp:include 只不过是一个不同于 include 的伪指令而已。 jsp:include 的优点在于:它 总是会检查所含文件中的变化。过一会儿我们将研究这一新标记的工作方式。但首先看一下两种 include 各自的代码,以便能够看到二者之间的异同。

清单 2 显示了一个简单页面,它使用了原始的 JSP include 伪指令。

清单 2. JSP include 伪指令

<![CDATA[

<%@ page language="java" contentType="text/html" %>

<html>

<head>

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Struts中两个相似类的解释DispatchAction

下一篇:你会重载Equals么?about how to override Equals