根据JSP规范:
JSP容器可以包含一种机制,用于在包含的文件发生更改时收到通知,因此容器可以重新编译JSP页面。但是,JSP 1.2规范没有一种方法可以指示包含文件已更改的JSP容器。
我在一个在线教程中发现了这一点:
如果包含的文件发生了更改,但包含它的JSP没有发生更改,那么这些更改只会在我们使用包含动作标记时反映出来。如果您使用include指令,这些更改将不会反映出来,因为JSP没有更改,因此它不会被翻译(在这个阶段中,只有文件在使用指令时被包含)用于请求处理,因此这些更改不会反映出来。
然后,我编写了一个示例来尝试:A.jsp、B.jsp和C.jsp,
A. jsp包括使用JSP include指令的C. jsp:
<%@ include file="/jsp/C.jsp" %>
B、 jsp包含C.jsp,使用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的刷新。
JSP规范中关于此主题的实际文本是:
JSP容器可以包含一种机制,用于在包含的文件发生更改时收到通知,因此容器可以重新编译JSP页面。但是,JSP 1.2规范没有一种方法可以指示包含文件已更改的JSP容器。
在规范的所有后续版本到当前版本(撰写本文时为2.3)中,相同的文本保持不变(规范版本除外)。
大多数JSP容器将检测包含文件中的更改,并在下次请求包含文件时触发重新编译。
首先我们要拿这个,
<代码>
A. jsp
或C. jsp
中对静态内容进行了更改,它将与您所做的更改一起呈现。<代码>
C. jsp
将通过将请求和响应对象传递给它来执行,并将执行的页面包含在A. jsp
中。编辑:
例如
在.jsp中,
<c:out value="${value}"/>
在.jsp中,
<%@ 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>
这是因为,在渲染开始之前,@include将把B.jsp的内容替换为A.jsp,其中对于jsp:include,A.jsp和B.jsp将分别执行。
由于未在B.jsp中导入标记库,因此未执行标记。
将B.jsp更改为
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:out value="${value}"/>
如果您检查并看到呈现的页面,它将看起来像,
<span>From @include 10</span>
<span>From jsp:include </span>
变量
值
的作用域仅在.jsp中。
在jsp中:包含
范围为第页
在
@include
范围是请求
并在另一个JSP上调用它 在我看来,这与使用include并向其传递参数是一样的。那么标记文件和includes是一样的吗?
问题内容: 似乎有两种使用JSP进行模板制作的方法。包含具有以下语句之一的文件 或使用JSP标记文件 然后在另一个JSP页面中使用 那么我应该使用哪种方法?现在是否已弃用一个,或者它们既有效又涵盖不同的用例? 编辑 使用此标记文件与使用包含文件不一样吗? 并在另一个JSP上调用它 在我看来,这与使用include并将参数传递给它完全相同。标记文件和包含的文件一样吗? 问题答案: 有几种重用JSP文
本文向大家介绍请说明一下JSP中的静态包含和动态包含的有哪些区别?相关面试题,主要包含被问及请说明一下JSP中的静态包含和动态包含的有哪些区别?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JSP 静态包含是通过JSP的include指令包含页面,动态包含是通过JSP标准动作jsp:forward包含页面。静态包含是编译时包含,如果包含的页面不存在则会产生编译错误,而且两个页面的"conte
我正在使用J2EE(使用spring和JSP)建立一个网站。我有像client.jsp和user.jsp的多页。每一页都有一个页眉、一个内容和一个页脚。 因此,我想做的是在每个jsp文件(客户机或用户)中包含页眉和页脚,但每个文件都有一个特定的页眉和脚注。比方说,header_client。jsp和header_footer.jsp。 为了包括这个,我正在做的: 但是,如果此标头不存在,我想加载一
问题内容: 最近又了解了JavaScript计时事件。我注意到一个我从未遇到过的奇怪人物。他们使用双引号,然后调用该函数。 例: 我知道JavaScript中的双引号和单引号表示字符串。 我也看到我可以做同样的事情: 带有括号的是指,没有括号的是复制的。当我使用引号和括号时,它越来越疯狂了。 如果有人可以向我解释这三种使用方式之间的区别,我将感到非常高兴setTimeout: 带括号: 没有引号和
我试图通过Ajax调用将jsp页面包含在另一个页面中。问题是,如果要包含的页面在html元素之间有一些空格,它将使插入失败。 例如,下面是我的演示index.jsp: 下面是要包含的 hello.jsp 页面(元素标记之间没有空格,否则包含将失败): 而这个 servlet 只有一个什么都不做(目前)doGet 方法。 对你们所有人来说都是一样的吗?我的代码有问题吗?是否有其他工作方式来完成相同的