如何用JSP将内容导入Web站点
|
JSTL转换粘结剂(redux) 清单 1. 经常转换索引页(请注意jsp:include元素) <%@ 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>
转换参数标记 由于已经转换了使用 c:import 而不是 jsp:include 标记的几乎整个索引文件,因此,我们最后的工作就是转变仍然传递 jsp:include 元素的参数,即采用 c:import 标记来模仿 jsp:include 的特性。如清单2所示,我们需要将 jsp:param 转换为 c:param ;因为 c:param 函数类似于JSP的相应功能,因而我们可以轻松处理。 清单2表明,清单1的索引文件已完全转换为JSTL:
清单 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><c:import url="header.jsp"><c:param name="pageTitle" value="newInstance.com"/><c:param name="pageSlogan" value=" " /></c:import><%@ include file="/navigation.jsp" %><c:import url="bookshelf.jsp" /><c:import url="/mt-blogs/index.jsp" /><%@ include file="/footer.jsp" %></body>jsp:include</html>
不过您一定要记着, c:param 和 jsp:param 非常相似。现在,让我们进一步研究 c:import 的更多新功能。 导入外部内容 让我们举一个实例。我把马达加斯加岛红木吉他的一些美丽图片放到我的Web站点。当我制作自己的网页并完成一些图像文件和相关链接之后,我可以轻松地引入另一个站点的内容,然后使其适合自己站点的外观和风格。清单3表明,使用 c:import 的 url 属性,可以多么容易地引入我所相中的吉他站点的图像文件: 清单 3. 导入外部内容 <%@ 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><c:import url="header.jsp"><c:param name="pageTitle" value="newInstance.com :: True North Guitars"/><c:param name="pageSlogan" value="...building it from scratch" /></c:import><%@ include file="/navigation.jsp" %><c:import url="bookshelf.jsp" /><c:import url="http://www.truenorthguitars.com/Clients/Richman/index.htm" /><%@ include file="/footer.jsp" %></body></html>
这些代码看上去没有问题 但是,如果您试着在自己站点运行,您很快就会发现问题。所有图像都不显示,并且相关链接全部出现故障。当然,如果仔细想想,原因很很简单。因为外部资源(本例中是图像文件)被解释(interpreted),而您将解释结果直接导入您的输出流。外部图像文件链接如 /images/guitar-01-24.jpg 将显示不存在。解决该问题的唯一方法是将原图像复制到您的站点,与简单的导入相比,这是一项完全不同(并且消耗更多时间)的技术。 因此,最好知道要导入的外部内容是否是纯文本。例如,要考虑连接到系统管理员的站点及其本身的头文件、脚注文件、外观和风格。该站点的网页详细说明如何设置 README 文件,以便用户可以查看如何使用该站点。您可以参考以下现有FTP站点的说明: <c:import url="ftp://ftp.oreilly.com/pub/README.ftp" />
请注意,这非常简单,就如同引入HTTP材料一样导入FTP服务器内容。您可以使用同样的HTTPS命令以及您的站点和目标站点可以识读的任何其它协议。 为什么要采用JSTL? (责任编辑:城尘) 源代码网供稿. |
