java - java包含JSP包含指令的区别包括指令JSP包含操作和使用JSP标记文件?

  显示原文与译文双语对照的内容

看起来有两种使用JSP进行模板化的方法。 包含具有下列语句之一的文件


<%@ include file="foo.html" %>


<jsp:include page="foo.html"/>



或者使用JSP标记文件


//Save this as mytag.tag


<%@ tag description="Description" pageEncoding="UTF-8"%>


<html>


<head>


</head>


<body>


 <jsp:doBody/>


</body>


</html>



在另一个JSP页面中,


<%@ 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>



在我看来,这与使用包含参数和传递参数是一样的。 标记文件与包含的文件相同?

时间:

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

在 JSP 中包含内容的以下机制可以分为直接重用:
( 从 "头servlet和 JSP"引用的第一个 3机制)

1 ) 包含指令:


<%@ include file="header.html" %>



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

2 ) <jsp:include> 标准操作:


<jsp:include page="header.jsp"/>



动态: 将页面属性值的内容添加到当前页面请求时间。 更适合于来自jsp的动态内容。

3 ) <c:import> JSTL标记:


<c:import url="http://www.example.com/foo/bar.html"/>



动态: 从URL属性的值添加内容到当前页面,在请求时间为 它与 <jsp:include> 非常相似,但它更强大,更灵活: 其他两种不同,<c:import>的url可以来自web容器的外部 !

4 ) Preludes和 codas:

static: preludes和codas只能应用于页面的开始和结束。
通过将 preludes 。net和元素分别添加到Web应用程序的web.xml 部署描述符中的<jsp-property-group> 元素中,可以隐式地包括 ( 也称为标题) 和 codas ( 也叫页脚) 。 阅读更多内容:

标记文件是内容重用的间接间接方法,这是对可以重用内容库进行预处理的。 xml - xml标记文件是一个源文件,它包含一个JSP代码,可以重用为的自定义标记

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

标记文件 ( 用 JSP 2.0引入的概念) 是创建定制标签的选项之一。 这是一个快速而简单的方法来构建定制标签 。 ibm提供的定制标记是JSP元素,它是允许在JSP页面中插入其他Java组件的定制逻辑和输出。 通过定制标记提供的逻辑由名为标记处理程序的Java对象实现。

自定义标记可以执行的一些例子包括对隐式对象。处理表单。访问数据库和它的他企业服务。

关于你的编辑

在示例( 在你的) 中,直接包含和标记文件之间没有区别。 但是收费的定制标签有一组丰富的特性。 他们可以

  • 通过从调用页传递的属性进行自定义。

  • 将变量传递回调用页。

  • 访问JSP页面可用的所有对象。

  • 可以创建并初始化一个javabean组件,创建一个引用该bean的public 变量,然后在另一个标记中使用 bean 。

  • 通过 private 变量互相嵌套并进行通信。

还可以从"pro JSP 2"中读取: 了解JSP自定义标记

有用的阅读。

  • 包含指令和包含操作在 JSP 中的分位差。

  • 为使模板更加易于使用,

  • 非常丰富且易于理解的教程来自 coreservlet.com,带有美丽的解释,包括 <jsp:include> VS. <%@ include %> 比较表:
    包括在JSP页面中的文件和小程序,包括 。

  • 标记库和标记文件相关的另一个 coreservlets.com 教程:
    创建自定义JSP标记库的 : 基础

  • 正式的Java 5教程示例:
    使用标记文件封装可以重用的内容( ) 。

  • 本页面从正式的Java EE 5教程应该给你更多的理解:
    在JSP页面中重用内容

  • 本书中摘录的内容还讨论了为什么需要使用标记文件而不是使用 static 包含的原因:
    使用标记文件 重用内容的

结束语

为具体任务使用合适的工具。

使用标记文件 作为一种快速简便的方法来创建自定义标记。

关于 JSP ( 从这里引用 ) 中的内容:

  • 如果文件更改很少,请使用include指令 机制是最快的机制。如果容器不自动检测更改,则可以通过删除主页面类文件来强制更改生效。

  • 只有在经常更改内容的情况下,对经常更改的内容使用操作,并且如果要在请求主页面之前包含哪些页面,则。

...