JSTL c:import 总结学习

为什么要采用JSTL?

   在核心JSP标记上使用JSTL有以下几大优势。

   首先,JSTL现在采用独立于JSP标记的规范来定义。因此,即使JSP规范发生改动,也可以保证JSTL标记的一致性。容易受到JSP容器变更影响的许多应用程序都将受益于JSTL规范.

   其次,JSTL具有比核心JSP标记更强大的功能,正如您在最佳实践系列中所视, c:import不仅 可以导入其它站点的URL,而且,它还可以导入 jsp:include 标记不可用的更为复杂的内容。

   最后,JSTL使用自己的表达式语言(通常简称为EL)。JSTL EL可以相当灵活地写入JSP代码,是对核心JSP语言的有力补充。

  

JSTL的 c:import 在模仿JSP的include原理。但是,如果深入研究 c:import (或任何JSTL标记),您将发现许多其它功能。除了分配参数并管理本地文件内容以外, c:import 还可以引入外部站点的内容。

   类似于 jsp:include , c:import 使用各种参数以便可在Web站点灵活移动内容。但与include指令不同,c:import 并不限制访问本地文件。

 

 

jsp:include:

 

<jsp:include page="header.jsp" flush="true">
     <jsp:param name="pageTitle" value="newInstance.com"/>
     <jsp:param name="pageSlogan" value=" " />
</jsp:include>

JSTL C:import

<c:import url="header.jsp">
     <c:param name="pageTitle" value="newInstance.com"/>
     <c:param name="pageSlogan" value=" " />
</c:import>

 

c:param 和 jsp:param 非常相似。

 

导入外部内容

     使用 c:import 的真正优势在于,它可以引入外部Web站点的内容或Web应用程序。在前面学习jsp:includes时,您可能已经注意到,我们使用file(文件)属性来为include指定静态内容。file(文件)属性正如其名称所示:使您可以引入本地文件的内容。 c:import 的相应属性为 url ,它也正如其名称所示:使您能够引入任何URL。c:import 不仅可以使用本地文件的内容来填充您的站点网页,而且还允许您引入任何URL的内容,使其它站点的内容可以真正灵活地适应您自己站点的外观和风格。

 

<%@ 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 文件,以便用户可以查看如何使用该站点。

原文地址:https://www.cnblogs.com/chenying99/p/2652390.html