我可以将自己的jsp页面导入另一个jsp页面吗?

时间:2011-08-28 10:11:20

标签: jsp jspinclude

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

3 个答案:

答案 0 :(得分:14)

您可以使用{ - 1}}指令将JSP页面合并到另一个页面 -

include

或使用<%@ include file="/path/to/yourfile.jsp" %> 这样的标准动作 -

<jsp:include>

从上述两种方法中,第一种方法将使<jsp:include page="/path/to/yourfile.jsp"/> 的内容包含在翻译页面时。也就是说,当页面被翻译成一个完整的servlet类时,yourfile.jsp的内容将包含在servlet中。因此,只有在应用程序启动后第一次用户请求才会发生的页面翻译时,此包含只会发生一次。

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

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

但这种方法有一些局限性。例如,使用include包含的页面无法更改响应状态代码或设置标题,这意味着您无法从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>等html元素,那么最终呈现的页面中最终会有两个<body>和两个<html>元素不合格。

有关详细信息,请查看herehere

修改

使用JSTL包含页面的第三种方法。您可以使用import JSTL标记来实现此目的 -

<body>

这种方法与<%-- 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>

此行将包含Google主页的HTML内容。

如果您需要将参数传递到所包含的网页,例如<c:import url="http://www.google.com" /> ,那么您可以使用param代码 -

<jsp:include>

以相同的方式访问它 -

<c:import url="/path/to/yourfile.jsp">
    <c:param name="myContextSensitiveText" value="Context Sensitive!!" />
</c:import>

答案 1 :(得分:0)

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

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

Including Content in a JSP Page

答案 2 :(得分:0)

你可以用这些方式来做,

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

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

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