当前位置: 首页 > 知识库问答 >
问题:

JSP包含指令和JSP包含标签的区别之一

邬良才
2023-03-14

根据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的更改。有什么问题吗?

共有3个答案

向弘懿
2023-03-14
<%@ include file="/jsp/C.jsp" %> 

动态插入内容,假设您在A.jsp中包含了C.jsp,那么如果您在C.jsp中声明了变量,您可以在编译和运行时在A.jsp中引用它。

但是如果<代码>

然后您的C. jsp的内容将进入A. jsp(如复制和粘贴)(仅在运行时)。

在此之后,如果您更改C. jsp的内容,则需要再次调用A. jsp的刷新。

沈博涉
2023-03-14

JSP规范中关于此主题的实际文本是:

JSP容器可以包含一种机制,用于在包含的文件发生更改时收到通知,因此容器可以重新编译JSP页面。但是,JSP 1.2规范没有一种方法可以指示包含文件已更改的JSP容器。

在规范的所有后续版本到当前版本(撰写本文时为2.3)中,相同的文本保持不变(规范版本除外)。

大多数JSP容器将检测包含文件中的更改,并在下次请求包含文件时触发重新编译。

拓拔辰钊
2023-03-14

首先我们要拿这个,

<代码>

  1. include指令会将页面粘贴到使用此语句的位置。
  2. 如果您在A. jspC. jsp中对静态内容进行了更改,它将与您所做的更改一起呈现。

<代码>

  1. 此包含操作标签用于插入静态或动态内容。
  2. 因此更改将按原样反映,即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 方法。 对你们所有人来说都是一样的吗?我的代码有问题吗?是否有其他工作方式来完成相同的