2011-08-28 95 views

回答

0

是的,你可以在另一个JSP导入JSP页面。

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

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

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

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

Including Content in a JSP Page

14

您可以通过使用include指令,像这样结合了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><body>之类的html元素,则最终呈现页面中将包含两个<html>和两个<body>元素,这些元素无效。

欲了解更多信息,你可以看看herehere

编辑

还有就是包括使用JSTL页面中的第三条道路。您可以使用JSTL import标签用于此目的 -

<%-- 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

你可以这样做以这些方式,

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

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

<c:import url="/path/to/yourfile.jsp" /> 
相关问题