Java JSP include指令和JSP include标记之间的区别之一
根据JSP规范: JSP容器可以包括一种机制,用于在 包括文件更改,因此容器可以重新编译JSP页面。 然而,JSP1.2规范没有一种指导方法 包含文件的JSP容器已更改 我在一个在线教程中发现了这一点: 如果包含的文件已更改,但包含它的JSP未更改 然后,只有当我们使用includeaction标记时,更改才会反映出来。这个 如果将include指令用作JSP,则不会反映更改 不会更改,因此不会对其进行翻译(仅在此阶段 当使用指令)进行请求处理时,会包含该文件 因此,这些变化不会反映 然后,我编写了一个示例来尝试:A.jsp、B.jsp和C.jsp A.jsp使用jsp include指令包含C.jsp:Java JSP include指令和JSP include标记之间的区别之一,java,jsp,servlets,Java,Jsp,Servlets,根据JSP规范: JSP容器可以包括一种机制,用于在 包括文件更改,因此容器可以重新编译JSP页面。 然而,JSP1.2规范没有一种指导方法 包含文件的JSP容器已更改 我在一个在线教程中发现了这一点: 如果包含的文件已更改,但包含它的JSP未更改 然后,只有当我们使用includeaction标记时,更改才会反映出来。这个 如果将include指令用作JSP,则不会反映更改 不会更改,因此不会对其进行翻译(仅在此阶段 当使用指令)进行请求处理时,会包含该文件 因此,这些变化不会反映 然后,我编
<%@ include file="/jsp/C.jsp" %>
B.jsp包含使用jsp包含标记的C.jsp:
<jsp:include page="/jsp/C.jsp" />
当我在borwser中访问A.jsp和B.jsp时,它们都会正常显示,
然后我更改了C.jsp,并引用了A.jsp和B.jsp,它们都可以显示C.jsp的更改。但是如果JSP规范为true,那么A.JSP不应该显示C.JSP的更改。
有什么问题吗?
<%@ include file="/jsp/C.jsp" %>
动态插入内容,
假设您在A.jsp
中包含C.jsp
,那么如果您在C.jsp
中声明了变量,那么您可以在编译和运行时在A.jsp
中引用它
但是如果你已经这样做了
然后C.jsp
的内容将进入A.jsp
(类似于复制和粘贴)(仅在运行时)
在此之后,如果您更改了
C.jsp
的内容,那么您需要再次调用A.jsp的刷新。
首先,我们将执行此操作
A.jsp
或C.jsp
中对静态内容进行了更改,它将与您所做的更改一起呈现李>
C.jsp
将
通过将请求和响应对象传递给它来执行
将执行的页面包含在A.jsp
中B.jsp
中
<c:out value="${value}"/>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="value" value="10"/>
<span>From @include <%@include file="B.jsp" %></span>
<span>From jsp:include <jsp:include page="B.jsp" /></span>
加载页面时,它将
From @include 10
From jsp:include
如果你检查看,它会像,
<span>From @include 10</span>
<span>From jsp:include <c:out value/></span>
<span>From @include 10</span>
<span>From jsp:include </span>
如果您检查并看到呈现的页面,它将如下所示:
<span>From @include 10</span>
<span>From jsp:include <c:out value/></span>
<span>From @include 10</span>
<span>From jsp:include </span>
From@include 10
来自jsp:include
变量value
的作用域仅在A.jsp
中
在jsp:include
范围是第页
在@中包含
范围是请求
JSP规范中关于此主题的实际文本为:
JSP容器可以包含一种机制,用于在包含的文件发生更改时收到通知,因此容器可以重新编译JSP页面。但是,JSP1.2规范没有一种方法来指导包含文件的JSP容器发生更改
同一文本在本规范的所有后续版本中与当前版本(在编写本规范时为2.3)保持不变(规范版本除外)
大多数JSP容器都会检测到包含文件中的更改,并在下次请求包含文件时触发重新编译。您能给我举一个代码示例“如果您在a.JSP和C.JSP中都有scriptlet,并且如果您在C.JSP中进行了更改,则不会反映为源JSP(a.JSP)没有更改。”?非常感谢。该初始引用不是取自JSP规范。这似乎是从一个在线教程。