我用NetBeans准备了一个静态的HTML页面。我能够将该页面导入到另一个页面中,以免重复编写代码,并进行相应的更改吗?
我用NetBeans准备了一个静态的HTML页面。我能够将该页面导入到另一个页面中,以免重复编写代码,并进行相应的更改吗?
include
指令将JSP页面合并到另一个页面中,如下所示 -<%@ include file="/path/to/yourfile.jsp" %>
或者通过使用<jsp:include>
标准操作,像这样 -
<jsp:include page="/path/to/yourfile.jsp"/>
yourfile.jsp
的内容。也就是说,在页面被翻译为一个完整的servlet类时,yourfile.jsp
的内容将会被包括在servlet中。因此,这种包含仅会在页面翻译时发生,而该过程仅在应用启动后的第一次用户请求时发生。yourfile.jsp
的响应,而不是在页面翻译时。include
指令时,您实际上将目标文件的内容复制并粘贴到主文件中。如果目标文件包含任何生成动态内容的标签或EL,则它们也将成为主文件的一部分,并且它们将执行相应的操作并生成动态内容。没有问题。include
包含的页面不能更改响应状态代码或设置标头,这意味着您无法从yourfile.jsp
调用addCookies()
或其他设置标头的方法。如果您这样做了,您不会得到错误,只是您得不到您希望得到的结果。如果您使用<jsp:include>
,那么所有这些都可以在包含的页面中完成,并且它们将按预期工作。include
方法,您无法优雅地完成此操作。但是使用<jsp:include>
方法,您可以做到这一点 -<jsp:include page="/path/to/yourfile.jsp">
<jsp:param name="myContextSensitiveText" value="Context Sensitive!!" />
</jsp:include>
yourfile.jsp
指定一个新的请求参数,然后可以从该文件中访问并相应地呈现它。${param.myContextSensitiveText} - Context Insensitive Text!!
<html>
或<body>
这样的HTML元素,则最终呈现的页面中将出现两个<html>
和两个<body>
元素,这是无效的。import
JSTL标记来实现此目的 -<%-- You need to declare this at the top of your jsp page--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...............
...............
<c:import url="/path/to/yourfile.jsp" />
<jsp:include>
完全相同,只是更加强大。您可以包含来自应用程序目录之外甚至容器之外的页面内容!以一个例子为例 -<c:import url="http://www.google.com" />
这一行将包含谷歌主页的HTML内容。
如果您需要像<jsp:include>
一样向您的包含页面传递参数,则可以使用param
标签 -
<c:import url="/path/to/yourfile.jsp">
<c:param name="myContextSensitiveText" value="Context Sensitive!!" />
</c:import>
并以同样的方式访问它 -
${param.myContextSensitiveText} - Context Insensitive Text!!
你可以用以下方式来实现:
<%@ include file="/path/to/yourfile.jsp" %>
或者
<jsp:include page="/path/to/yourfile.jsp"/>
或者
<c:import url="/path/to/yourfile.jsp" />