JSP实践:使用JSP include机制改进外观(1)(2)
JSP include
JSP include 伪指令与其 SSI 对等伪指令极其相似。清单 3 显示了清单 1 所示的 SSI 伪指令的 JSP 对等伪指令。任何支持 JSP 的 Web 容器都将处理该 JSP 页的显示同样,请参阅参考资料一节,以获得链接)。应该将该文件另存为 test-include.jsp。
清单 3. JSP include 伪指令
<![CDATA[ <%@ page language="java" contentType="text/html" %> <html> <head> <title>JSP include element test</title> </head> <body> This content is statically in the main JSP file.<br /> <%@ include file="included.html" %> </body> </html> ]]> |
include 伪指令使将统一的头文件和脚注文件合并到您的站点变得非常容易。清单 4 显示了具有几个被包含文件的主索引页。
清单 4. 主索引页的 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> ]]> |
通过查看代码,您将了解有关如何使用 JSP include 的各种方法。您还应该试验一下该代码,让自己掌握其工作原理。
添加动态内容
除了如头、脚注和导航文件之类的静态内容外,清单 4 还包括对 Weblog/mt-blogs/index.jsp)的调用,这涉及动态内容的主题。如同 SSI include 伪指令那样,当 JSP include 机制应用于动态内容时会出现问题。可以通过使用 JSP include 伪指令来引入动态内容,但将无法获得对该内容的更改。这是因为 Web 容器将被包含文件作为原始包含)页面的一部分读取。容器将结果高速缓存为单个文件,而不是多个 JSP 组件。因为 Web 容器不会针对更改去轮询被包含文件,所以它不会知道有任何更改发生,它将自动显示高速缓存的页面而不是刷新的页面。要了解它的工作原理,我们将做一个简单的练习。首先,将已保存的 included.html 页面更新为清单 5 中所示的那样。
清单 5. 修改包含的内容
<![CDATA[ This content is in another file, included.html. <br /> Some new content... ]]> |
接下来,保存这些更改,导航至 test-include.jsp 文件,刷新浏览器。您将注意到浏览器中没有显示 included.html 中的新内容。被包含文件的内容在更改发生之前就被高速缓存了,所以它不会显示出来。如果您的站点包含动态内容或可能被频繁修改的内容,那么这会是一个问题。幸运的是,有一个变通方法。在下一个部分中,我将向您演示如何使用 标记将动态内容加入 Web 页面。在此之前,请参考参考资料一节并试验这里提供的代码,我将在网上与您再见。
- 关于提高Jsp技能的几种简单有效的方法
用户点评