5

我已经使用 netbeans 准备了一个静态 html 页面。我可以将该页面导入另一个页面,以免再次重新编写代码,然后进行相应的更改。

4

3 回答 3

18

您可以使用include这样的指令将 JSP 页面合并到另一个页面中 -

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

或通过使用<jsp:include>像这样的标准动作 -

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

从上述两种方法中,第一种方法会导致yourfile.jsp在页面翻译时包含 的内容。也就是说,当页面被翻译成一个成熟的 servlet 类时, servlet 中yourfile.jsp的内容将被包含在内。因此,这种包含只会发生一次,在页面翻译时,仅在您的应用启动后的第一个用户请求时发生。

如果您使用第二种方法,那么对于每个用户请求,来自 的响应yourfile.jsp都将包含在运行时,而不是在页面翻译时。

当您使用include指令时,您基本上将目标文件的内容复制并粘贴到主文件中。如果目标文件包含任何生成动态内容的标签或EL,那么这些也将成为主文件的一部分,它们将相应地执行并生成动态内容。那里没问题。

但是这种方法有一些局限性。例如,已包含的页面include无法更改响应状态代码或设置标头,这意味着您无法addCookies()yourfile.jsp. 如果你这样做,你不会得到错误,你只是不会得到你想要的。如果您使用<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>or之类的 html 元素<body>,那么您最终会在最终呈现的页面中得到两个<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" />

此行将包含 google 主页的 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!!
于 2011-08-28T16:58:16.353 回答
0

你可以通过这些方法

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

或者

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

或者

 <c:import url="/path/to/yourfile.jsp" />
于 2013-01-09T16:53:00.880 回答
0

是的,您可以在另一个 jsp 中导入 jsp 页面。

      <jsp:include page="/jsp/old.jsp"/>

在 JSP 页面中包含内容

于 2011-08-28T12:36:37.573 回答