【问题标题】:Is there any difference between a JSP file and a JSP page?JSP 文件和 JSP 页面之间有什么区别吗?
【发布时间】:2014-08-16 04:47:15
【问题描述】:

我在看JSP Specification 2.1,关于JSP include指令和JSP include标签的章节,很多地方都是分开讲“JSP文件”和“JSP页面”的,比如:

它们之间有什么区别吗?

【问题讨论】:

  • 不,没有区别
  • @JigarJoshi 页面上下文属性呢?它们的作用域不只与当前的 JSP 页面有关吗?此外,可以在 JSP 文件 A 中声明更高范围的变量,并在该文件 A 中包含的 JSP 文件中使用。
  • @JigarJoshi:如果这是真的,那么整句话的目的是什么?

标签: java jsp servlets


【解决方案1】:

通常,当我们谈论 jsp 文件或 jsp 页面时没有区别,但 LuiggiMendoza 的一个很好的观察是:

JSP 文件是存储在硬盘中的物理文件,而 JSP page 是从应用程序评估 JSP 文件的结果 服务器。

但是在使用指令的时候还是有区别的:

<jsp:include page="page.html" /><%@include file="page.html"%>

你可以找到一篇关于它的有趣帖子:

What is the difference between <jsp:include page = ... > and <%@ include file = ... >?

这里有一个很好的解释:

是 JSP 包含指令。在 JSP 页面翻译时间,include中给出的文件内容 指令按原样“粘贴”在 JSP 包含的位置 使用指令。然后将源JSP页面转换成java 小服务程序类。包含的文件可以是静态资源或 JSP 页。通常 JSP 包含指令用于包含标头 横幅和页脚。 JSP的编译过程是这样的,源码 仅当该页面已更改时,才会编译 JSP 页面。如果有一个 在包含的 JSP 文件中更改,源 JSP 文件将不会 编译,因此修改不会反映在 输出。

是 JSP 包含动作元素。 jsp:include 动作元素就像一个函数调用。在运行时, 包含的文件将被“执行”,结果内容将是 包含在原始 JSP 页面中。当包含的 JSP 页面是 调用时,请求和响应对象都被传递为 参数。如果需要传递额外的参数,那么 jsp:param 元素可以使用。如果资源是静态的,则其内容 被插入到调用 JSP 文件中,因为没有处理 需要。

【讨论】:

  • 从文本中,您仍然引用 JSP 文件和 JSP 页面,将它们显示为不同的概念。 IMO JSP 文件是存储在硬盘中的物理文件,而 JSP 页面是从应用服务器评估 JSP 文件的结果。
  • @LuiggiMendoza 好点!没注意那个。我会用这个更新我的答案。谢谢
【解决方案2】:

JSP 页面指的是“顶级 JSP 文件”,如 JSP.1.1.8 中所定义:

由客户端直接调用或由另一个页面或 servlet 动态包含

JSP 文件 可能指的是例如静态包含的文件。

为了说明您的报价,请考虑以下目录结构:

  • 目录/
    • file1.jsp
    • file2.jsp
  • file2.jsp
  • index.jsp

假设您的 index.jsp 中有 &lt;%@include file="dir/file1.jsp" %&gt;。如果你把&lt;%@include file="file2.jsp" %&gt;放在dir/file1.jsp中,它会包含dir/file2.jsp,而如果你把&lt;jsp:include page="file2.jsp" /&gt;放在index.jsp旁边,它会包含file2.jsp。

【讨论】:

    【解决方案3】:

    单个JSP 页面 可以由多个JSP 文件 构建。

    所以JSP页面和JSP文件是不一样的。

    【讨论】:

    • 有什么问题?我明白了…… JSP 文件和 JSP 页面之间有什么区别吗?如果它们不相同,则表示存在差异。
    【解决方案4】:

    我相信跟随就是这个意思 -

    • JSP 文件 - 实际的.jsp 文件,文件系统中的文件。
    • JSP 页面 - .jsp 文件的编译结果,当前正在处理请求

    请在此处查看此答案 - https://stackoverflow.com/a/14763794/738746

    1. 包含指令:

      &lt;%@ include file="header.html" %&gt;

    静态:将文件属性值中的内容添加到 翻译时的当前页面。该指令最初是 用于静态布局模板,例如 HTML 标头。

    1. &lt;jsp:include&gt; 标准动作

      &lt;jsp:include page="header.jsp" /&gt;

    动态:将页面属性值中的内容添加到 请求时的当前页面。更多用于动态内容 来自 JSP。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      相关资源
      最近更新 更多