jsp taglib与jsp页面之间的根本区别是什么?

时间:2008-09-29 17:33:16

标签: jsp taglib jspinclude

我有几个常见的元素(组件),会产生一些html。似乎我的选择是创建一个taglib,或者只是将该逻辑放入一个jsp页面并包含jsp。

有什么区别?积极与消极?

4 个答案:

答案 0 :(得分:6)

Taglibs允许您定义可以记录的(类型化)参数。 taglibs也可以知道它们在对象树中的位置,因此在不同的上下文中表现不同;或反复调用特定模板以创建迭代器或语句结构。

您是否意识到taglib不一定要用Java编写?还有一个名为tagfiles的概念,它允许您在JSP中编写taglib;通常更适合扁平组件......非常接近包括。

答案 1 :(得分:4)

当您通常使用taglib容器时:

  • 从_jspService
  • 中编写并调用辅助方法
  • 在辅助方法中,创建了一个标记类的实例,并调用了标准方法(setParent(),doStartTag(),doEndTag()等...)

这使所有代码保持在同一资源中(请求不会传递到另一个组件),因此允许您构建循环行为并访问当前页面上的其他组件。

学习标记库存在开销。但是,一旦你的第一个标签工作全部下坡。此外,最终结果将使非开发人员更容易理解(假设您为标签选择了良好的名称)。

答案 2 :(得分:1)

标签(包括易于使用的类似JSP的标记文件机制)支持使用强类型的命名参数进行调用。

JSP标记的另一个令人难以置信的有用且经常被忽视的特性是JspFragment属性类型。这允许您将一大块JSP代码作为参数传递给要调用的标记,可能是重复的。

包含缺乏这些强大的参数化功能。

答案 3 :(得分:-2)

taglibs可以更容易地定义和处理参数,但是开发它们需要很大的开销。包含更简单,但功能更弱。很大程度上取决于你的风格。

根据我的经验,人们通常只使用包含因为他们不想花时间学习创建tablib。导致一个混乱。只要你的团队很小而你的团队不太复杂,那也不算太糟糕。但它是一种代码味道。