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

本文介绍如何创建自定义的JSP标签库,包括标签处理类、标签库描述文件及在JSP文件中的使用方法。同时解释了标签处理类中的关键方法如doStartTag()和doEndTag()的作用。
    制作一个完整的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网页中引用这个标签库中的标签时的前缀。

   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值