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

时间:2020-03-06 14:53:10  来源:igfitidea点击:

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

有什么不同?正面还是负面?

解决方案

使用标记库可以更轻松地定义和处理参数,但开发它们会产生大量开销。包含内容较为简单,但功能较弱。在很大程度上取决于风格。

根据我的经验,人们通常只使用include,因为他们不想花时间学习创建tablib。导致一团糟。只要团队规模小,并且团队也不太复杂,那就还不错。但这是一种代码气味。

使用标签库,我们可以定义(类型化)可以记录的参数。同样,taglib可以知道它们在对象树中的位置,因此在不同的上下文中采取不同的行动。或者一遍又一遍地调用特定模板来创建迭代器或者语句构造。

我们是否知道不一定必须用Java编写taglib?还有一个叫做tagfiles的概念,它允许我们在JSP中编写taglib。通常更适合于扁平组件...非常接近于包含。

使用taglib时,容器通常:

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

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

学习标签库有开销。但是,一旦第一个标签开始工作,它就会全速前进。最终结果也将使非开发人员更容易理解(假设我们为标签选择了好名字)。

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

JSP标记的另一个非常有用且令人惊讶的经常被忽略的功能是" JspFragment"属性类型。这使我们可以将JSP代码块作为参数传递到要调用的标记中,也许重复进行。

包括缺少这些强大的参数化功能。