现在的位置: 首页 > 综合 > 正文

第十四章 自定义JSP标签(书摘)

2013年03月24日 ⁄ 综合 ⁄ 共 1484字 ⁄ 字号 评论关闭
    制作一个完整的Tag Library程序,包含3个步骤:
          1. 创建标签的处理类(Tag Handler Class)
          2. 创建标签库描述文件(Tag Library Descripter File)
          3. 在JSP文件中引入标签库

    JSP容器编译JSP网页时,如果遇到自定义标签,就会调用这个标签的处理类(Tag Handler Class)。处理标签的类必须扩展javax.servlet.jsp.TagSupport类或者javax.servlet.jsp.BodyTagSupport。

    在TagSupport的构造方法中不能访问pageContext成员变量,因为此时JSP容器还没有调用setPageContext方法对pageContext进行初始化。

    当JSP容器遇到自定义标签的起始标志,就会调用doStartTag()方法。doStartTag()方法返回一个整数值,用来决定程序后续流程。它有两个可选值:Tag.SKIP_BODY和Tag.EVAL_BODY_INCLUDE。前者表示标签之间的内容被忽略;后者表示标签之间的内容被正常执行。
    当JSP容器遇到自定义标签的结束标志,就会调用doEndTag()方法。doEndTag()方法也返回一个整数值,用来决定程序后续流程。它有两个可选值:Tag.SKIP_PAGE和Tag.EVAL_PAGE。前者表示立刻停止执行JSP网页,网页上处理的静态内容和JSP程序均被忽略,任何已有的输出内容立刻返回到客户的浏览器上;后者表示按正常的流程继续执行JSP网页。

    如果在标签中不包含自定义的属性,例如:
          <prefix:MyTag attributer1 = "value1">
          ......
          ......
          </prifix:MyTag>
    那么在标签处理类中应该将这个属性作为成员变量,并且分别提供设置和读取属性的方法。

    标签库描述(Tag Library Descriptor)文件,简称TLD,采用XML文件格式,定义了用户的标签库。TLD文件中的元素可以分为3类:
          <taglib>:标签库元素                                              用来设定标签库的相关信息
          <tag>:标签元素                                                      用来定义一个标签
          <attribute>:标签属性元素                                     用来定义标签的属性

    如果Web应用中用到了自定义标签,则必须在web.xml文件中加入<taglib>元素,它用于声明所引用的标签所在的标签库:
          <taglib>
             <taglib-uri>/mytaglib</taglib-uri>
             <taglib-location>/WEB-INF/mytaglib.tld</taglib-location>
          </taglib>
    在JSP文件中需要加入<%taglib uri = "/mytaglib" prefix = "mm"%>
    uri用来指定Tag Libaray的标识符,它必须和web.xml中的<taglib-uri>属性保持一致。prefix表示在JSP网页中引用这个标签库中的标签时的前缀。

   

抱歉!评论已关闭.