« 上一篇下一篇 »

编写标签处理器

一个标签的行为在称为标签处理器的JAVA类中实现JSP容器创建保存标签处理器实例,这些类中的预定义方法从JSP页面生成的servlet直接调用。在实例标签中,需要取得web服务器的名字(例如Apache、IIS、Netscape Enterprise等)。Servlet API并不提供取得此信息的明显方式。请求对象对web客户端内容比较了解,servlet上下文则知道servlet引擎的内容,但这些对象都不知道正在侦听端口80的软件产品。然而,此信息可由web服务器本身当其向web客户端发回HTTP响应时提供。这里采取的方案是在标签处理器中进行一个伪HTTP请求,然后从返回的HTTP头标中抽取服务器信息。

在编写代码的时候,第一行标识了包名。不是必须在一个包中放入代码,但这将有助于组织起相关的类,形成更有意义的Javadoc文档。另外,一些JSP引擎不能对定制标签正确生成import语句,因此没有包名的类可能在生成servlet中引起编译错误。一个标签处理器需要实现Tag接口或BodyTag接口,它们都在javax.servlet.jsp.tagext包中。BodyTag是Tag的子接口。标签作者可以随意直接利用这些接口,扩展缺省实现类TagSupport或BodyTagSupport的其中一个,覆盖任务所需手工加入的那些方法通常更加方便。

« 上一篇下一篇 »