java_2008_4_4
java_2008_4_4
2010-01-19 11:26

Tomcat 中的一些类的存在是否有意义

  • tomcat

在 Tomcat 6 有 org.apache.jasper.tagplugins.jstl.core 包。这个包下有一些类,如 Catch.java,If.java,Choose.java,When.java 等等。它们好像和“核心标签库”有着什么关系。且都实现了 org.apache.jasper.compiler.tagplugin.TagPlugin 接口的 doTag(TagPluginContext ctxt) 方法。看了下 Tomcat 的 API。 其中对 TagPlugin 接口的说明是:
This interface is to be implemented by the plugin author, to supply an alternate implementation of the tag handlers. It can be used to specify the Java codes to be generated when a tag is invoked. An implementation of this interface must be registered in a file named "tagPlugins.xml" under WEB-INF

对 doTag 方法的说明是:
Generate codes for a custom tag.

按照接口和其方法的说明做了测试。发现 JSP 转译成的 Java 文件中,产生的代码不同。
其不同在于:
如果没有使用 TagPlugins 那么对标签的处理是在“标签类”中
如果使用了 TagPlugins 只不过是将处理的代码转译到了 JSP 所对应的 Java 文件中。
且如果要使用 TagPlugins ,“标签类”和对应的 tld 文件并不能缺少。且功能,效果完全和纯使用 “标签” 一样。

于是便产生了疑问:这些类的存在到底有着怎样的意义。在什么情况下使用?

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

4条回答

为你推荐