我能否将自己的JSP页面导入另一个JSP页面中?

5

我用NetBeans准备了一个静态的HTML页面。我能够将该页面导入到另一个页面中,以免重复编写代码,并进行相应的更改吗?

3个回答

18
您可以使用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!!

使用“include”方法,您将无法完成此操作。
您应该根据您的设计选择来决定使用哪种方法。
您应该记住另一件事情 - 这两种方法都会将目标文件的内容包含到主文件中,但方式不同。因此,如果它们都包含像<html><body>这样的HTML元素,则最终呈现的页面中将出现两个<html>和两个<body>元素,这是无效的。
要了解更多信息,您可以查看这里这里
编辑
有第三种使用JSTL包含页面的方法。您可以使用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!!

0

0

你可以用以下方式来实现:

<%@ include file="/path/to/yourfile.jsp" %>

或者

<jsp:include page="/path/to/yourfile.jsp"/>

或者

 <c:import url="/path/to/yourfile.jsp" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接