自定义标签

来源:互联网 发布:海尔32电视网络售价 编辑:程序博客网 时间:2024/05/29 16:34
 

自定义标签

1、自定义JSP标签的执行过程

当一个自定义标签的JSP页面被JSP引擎(Web容器)转译成Servlet时,JSP引擎遇到自定义的标签,会把这个自定义标签转化成对一个成为“标签处理类”的调用。之后,当这个JSP页面被执行时,JSP引擎就回调用这个“标签处理类”对象,并执行其内部定义的相应操作方法,从而完成相应的功能。

从这个执行过程来看,自定义标签就是把原来编写的JSP页面的Java代码单独封装到一个Java类中,当调用自定义标签时,其实是映射调用相应的“标签处理类”来完成这个工作的。

2、自定义JSP标签的开发流程,主要步骤如下:

   1)创建标签的处理类。

   2)创建标签库描述文件。

   3)在web.xml文件中声明TLD的位置。

   4)在JSP文件中用taglib指令引入标签库,然后使用标签库描述文件中指定的标签名来使用它。

3、JSP标签API

          要使用Java处理类来完成自定义标签的功能,就需要使用JSP的标签扩展机制,即继承或实现一组JSP标签API提供的类或接口。

规范中常用的接口主要有以下三个:

1)        Tag:此接口定义对于所有标签处理类都需要实现的方法。

2)        IterationTag:此接口扩展了Tag接口,增加了控制重复执行标签主体的方法。

3)        BodyTag:此接口扩展了IterationTag接口,并增加了访问和操作标签主体内容的方法。

4、标签库描述符

当JSP容器处理一个页面时,它会将页面中的自定义标签转换成Java代码,这些代码创建和调用适当的类。

标签库描述符文件是一个以“.tld”结尾的标准XML文档,用来记录一个标签库内拥有哪些标签、每个标签包含哪些属性。取得这些信息后,JSP容器才能正确处理并运行JSP所包含的自定义标签。

5、TagSupport类的生命周期

1)当JSP容器在解释JSP页面时,如果遇到自定义标签的开始标记,将利用“标签处理类”建立一个“标签处理对象”。在建立“标签处理对象”的过程中,JSP容器会回调setPageContext()方法,然后根据自定义标签的属性值来初始化“标签处理对象”的属性。

2)接着JSP容器会运行doStartTag()方法内的程序代码,然后根据此方法的返回值决定后续动作,如果返回SKIP_BODY常量,表示要求JSP容器忽略此标签主体的内容;如果返回EVAL_BODY常量,表示要求JSP容器执行主体的内容,并将结果包括在响应中,然后再运行doAfterBody()方法。

3)如果doAfterBody()方法返回EVAL_BODY_AGAIN常量,表示要求JSP容器再次执行标签主体的内容;如果返回SKIP_BODY常量,JSP容器将会运行doEndTag()方法。

4)JSP容器会运行doEndTag()方法内的程序代码,并根据此方法的返回值决定后续动作——如果返回SKIP_PAGE常量,JSP容器会忽略自定义标签以后的JSP内容;如果返回EVAL_PAGE常量,JSP容器会运行自定义标签以后的JSP内容。

原创粉丝点击