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

用JSP include指令、JSP include动作包含文件和使用JSP标记文件有什么区别?

鲁羽
2023-03-14
<%@ include file="foo.html" %>
<jsp:include page="foo.html" />
// Save this as mytag.tag
<%@ tag description="Description" pageEncoding="UTF-8"%>
<html>
<head>
</head>
<body>
    <jsp:doBody/>
</body>
</html>
<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>

<t:mytag>
    <h1>Hello World</h1>
</t:mytag>
// Save this as product.tag
<%@ tag description="Product templage" pageEncoding="UTF-8"%>
<%@ tag import="com.myapp.Product" %>
<%@ attribute name="product" required="true" type="com.myapp.Product"%>

Product name: ${product.name} <br/>
Quantity: ${product.quantity} <br/>

并在另一个JSP上调用它

<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>

<t:product>
    <c:forEach items="${cart.products}" var="product">
        <t:product product="${product}"/>
    </c:forEach>
</t:product>

在我看来,这与使用include并向其传递参数是一样的。那么标记文件和includes是一样的吗?

共有1个答案

钱建本
2023-03-14

首先,为了使事情更清楚,这里是对JSP语法元素的简短概述:

  • 指令:这些指令传达关于整个JSP页面的信息。
  • 脚本元素:这些是Java编码元素,如声明、表达式、scriptlets和注释。
  • 对象和作用域:JSP对象可以显式或隐式创建,并且可以在给定的作用域内访问,例如从JSP页面或会话的任何地方访问。
  • 操作:这些操作创建对象或影响JSP响应中的输出流(或两者)。

有几种机制可以重用JSP文件中的内容。

<%@ include file="header.html" %>
<jsp:include page="header.jsp" />
<c:import url=”http://www.example.com/foo/bar.html” />

静态:前言和代码只能应用于页面的开头和结尾。
通过在Web应用程序Web.xml部署描述符中的 元素中分别添加 元素,可以隐式地包含一组JSP页面的前言(也称为头)和代码(也称为页脚)。在此阅读更多内容:
•在JSP的开头和结尾配置隐式包含
•定义隐式包含

标记文件是一种间接的内容重用方法,封装可重用内容的方式。标记文件是包含可作为自定义标记重用的JSP代码片段的源文件。

包含和标记文件的用途是不同的。

标记文件(JSP 2.0引入的一个概念)是创建自定义标记的选项之一。这是一种构建自定义标记的更快更容易的方法。自定义标记,也称为标记扩展,是允许其他Java组件提供的自定义逻辑和输出插入到JSP页面中的JSP元素。通过自定义标记提供的逻辑由称为标记处理程序的Java对象实现。

可以由自定义标记执行的任务的一些示例包括对隐式对象进行操作、处理表单、访问数据库和其他企业服务(如电子邮件和目录)以及实现流控制。

也许在您的示例中(在您的“编辑”段落中),使用直接include和一个标记文件没有区别。但是自定义标记有一组丰富的特性。他们可以

互相交流。您可以创建并初始化JavaBeans组件,在一个标记中创建引用该bean的公共EL变量,然后在另一个标记中使用该bean。

相互嵌套并通过私有变量进行通信。

请参阅“Pro JSP 2”:理解JSP自定义标记。

>

  • JSP中include指令和include操作之间的区别

    为每项任务使用正确的工具。

    使用标记文件作为创建自定义标记的一种快速简便的方法,可以帮助您封装可重用的内容。

    至于JSP中包含的内容(此处引用):

      null

  •  类似资料:
    • 问题内容: 似乎有两种使用JSP进行模板制作的方法。包含具有以下语句之一的文件 或使用JSP标记文件 然后在另一个JSP页面中使用 那么我应该使用哪种方法?现在是否已弃用一个,或者它们既有效又涵盖不同的用例? 编辑 使用此标记文件与使用包含文件不一样吗? 并在另一个JSP上调用它 在我看来,这与使用include并将参数传递给它完全相同。标记文件和包含的文件一样吗? 问题答案: 有几种重用JSP文

    • 根据JSP规范: JSP容器可以包含一种机制,用于在包含的文件发生更改时收到通知,因此容器可以重新编译JSP页面。但是,JSP 1.2规范没有一种方法可以指示包含文件已更改的JSP容器。 我在一个在线教程中发现了这一点: 如果包含的文件发生了更改,但包含它的JSP没有发生更改,那么这些更改只会在我们使用包含动作标记时反映出来。如果您使用include指令,这些更改将不会反映出来,因为JSP没有更改

    • 它们之间有什么区别吗?

    • 本文向大家介绍在JSP中include动作和include指令之间有什么区别?,包括了在JSP中include动作和include指令之间有什么区别?的使用技巧和注意事项,需要的朋友参考一下 包含操作可让您将文件插入到正在生成的页面中。语法看起来像这样- 与include指令不同,include指令在将JSP页面转换为servlet时插入文件,而该动作则在请求页面时插入文件。

    • 我正在尝试创建一个安装在sling中的捆绑包,并使用自定义TagLib。我想使用标记文件,而不是使用扩展TagSupport的java类。这样,我可以使用Sling模型来表示JCR,使用JSP标记文件来表示标记。 这是我的标记文件,它是一个非常基本的锚,没有什么特别的,我只是想测试一下: 我创建了一个TLD文件,我在WEB-INF/tags和META-INF/tags文件夹中都尝试了该文件(我去掉

    • 我对docker比较陌生,我想知道docker-compose.yml文件和简单的docker文件有什么基本区别。