传智播客java web 学习,自定义标签的开发和使用

    自定义标签的开发和使用,张老师先讲在学jsp的时候已经接触过了jsp标签,和jsp标签带来的好处,引出了自定义标签的必要性。张老师又举了个简单的例子,让人还没有学自定义标签的内容就已经对它有了深层的认识,java程序员可以开发一个用于显示访问者IP的自定义标签,html设计人员就可以在jsp页面中使用这个自定义标签显示访问者的ip地址。这样,即使Html设计人员不懂java,也能开发JSP网页。


       自定义标签的几种形式:
          1.空标签  <tag:example/>
          2,带体的标签<tag:example>body</tag:example>
          3.嵌套标签 外层的称为父标签。里层的称为子标签
         <tag:example>
              <tag:example>
                   body
              </tag:example>
        </tag:example>
       4.带属性的标签,可以有多个属性
         <tag:example attribute1="" attribute2="">body</tag:example>


自定义标签的开发与应用包括四个步骤:
 (1)编写完成标签功能的java类,这个java类称为标签处理器。
         开发自定义标签的核心任务就是编写用作标签处理器的java类,它通常需要实现JSP API中的javax.servlet.jsp.tagext.Tag接口。Tag页面定义了jsp页面与标签处理器类之间的通信规则,如果jsp引擎在翻译jsp页面时遇到了自定义标签,就会查找并实例化自定义标签的标签处理器类,并按照JSP规范定义的自定义标签的通信规则依次调用标签处理器类中的方法。例如,如果JSP引擎在翻译JSP页面时遇到一个自定义标签的开始标记,它就会调用标签处理器类的doStartTag方法。jsp api提供了一个Tag接口的实现类TagSupport,标签处理器类继承TagSupport类也就实现了Tag接口,根据需要覆盖其中的方法即可。 

    
(2)编写标签库描述符(tld)文件,对自定义标签进行描述。它的作用就是让JSP引擎在遇到自定义标签时能够找到所对应的标签处理器类。tld文件采用xml的语法格式,以".tld"作为其后缀名。tld文件与标签处理器类的关系类似于web.xml文件与servlet之间的关系。一个标签处理器类要想被JSP引擎找到并进行调用,必须在tld文件中进行注册。一个tld文件中可以注册多个标签处理器类,个标签的名称不能相同。在一个tld文件中注册多个处理器标签类就形成了一个自定义标签类库。
tld文件中tag标签中的<body-content>元素很重要,它用于指定标签体的类型,有四个可选值:empty,JSP,scriptless和tagdependent,
   empty:表示在JSP页面中使用自定义标签时不能设置其标签体。
   JSP:用的时候必须为大写,表示自定义标签的标签体可以是任意JSP页面元素。
  scriptless:表示自定义标签的标签题可以包含除JSP脚本元素以外的任意JSP页面元素。
  tagdependent:表示JSP引擎对标签内容不进行任何语义的解析,而是直接把标签体内容原封不动地输出给客户端或传送给标签处理器。
   
  (3)在Web应用程序中部署和安装自定义标签库,tld文件需要放在WEB-INF目录或其子目录中,但不能放在classes和lib目录中。
 

 

  (4)在JSP页面中导入和使用自定义标签,语法格式如下:
<%@ taglib prefix=" " uri=" "%> taglib指令用于引入标签库描述符文件;prefix属性用于为引入的tld文件指定一个“引用代号”,并需要在tld文件中指定;uri用于指定所引入的标签库描述符文件中的uri,通常是标签库描述符文件中定义的<uri>元素的内容。
   例子代码敲了一遍,明天继续学习。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值