在JSP Spec 2.1中,我找到了一个关于JSP include指令和JSP include标记的示例:
有关更复杂的夹杂物的示例,请考虑以下内容 使用四个JSP文件构建的四种情况:A.jsp,C.jsp,dir / B.jsp和dir / C.jsp:
我不太明白这一点,特别是第一个也是最后一个情况,为什么C.jsp在第一种情况下没有被解析为C.jsp?为什么在最后一种情况下c.jsp没有解析为dir / c.jsp?
答案 0 :(得分:3)
使用此伪指令指定包含要在转换时插入JSP页面的文本或代码的资源。
例如:
<%@ include file="/jsp/userinfopage.jsp" %>
指定资源的页面相对或上下文相对路径。
有关页面相对路径和上下文相关路径的讨论,请参阅Requesting a JSP Page。
include指令(称为静态包含)在本质上与本章后面讨论的jsp:include
操作具有可比性,但jsp:include
在请求时生效而不是翻译-时间。请参阅Static Includes Versus Dynamic Includes。
include指令只能在同一个servlet上下文(应用程序)中的文件之间使用。
在JSP include指令中,路径可以相对于包含页面或绝对路径(然后它必须以/
开头并且属于Web应用程序根目录。)
有关详细信息,请查看另一篇帖子here
答案 1 :(得分:1)
<%@ include>
使用已评估的<%@>
指令填充>>所包含JSP的评估的文本。因此,嵌套的include将根据所包含的JSP的目录进行评估。<jsp:include>
调用所包含的jsp的已编译版本。因此,单个JSP会自行评估文本,首先触发包含评估。现在应该很清楚。
第一种情况:
答案 2 :(得分:1)
<%@ include file= ... >
。因此,它知道文件系统的上下文。这也称为静态包含,标签是方向。
<jsp:include page= ...>
。这也称为动态包含,标记是动作。这里,文件系统的上下文未知。
静态包含意味着将一大堆代码行复制到生成的最终文件中。动态包含意味着执行包含的页面,并将结果复制到生成的最终文件中。
以下是很好的消息来源: