JavaWeb学习笔记(十九)之自定义标签

自定义标签

开发步骤

1.编写标签处理类

(1)传统方式(JSP1.1):实现javax.servlet.jsp.tagext.Tag接口

  • doSatrtTag():标签处理类的核心方法
    该方法有以下2个返回值:0/1
    int SKIP_BODY=0;标签体不会被执行
    int EVAL_BODY_INCLUDE=1;标签体会被执行

(2)简单方式(JSP2.0):实现javax.servlet.jsp.tagext.SimpleTag接口

  • doTag():标签执行完毕之后的方法。例如可以让标签在执行完毕后,再执行一遍
    int SKIP_PAGE=5;后面的JSP页面内容不被执行
    int EVAL_PAGE=6;后面的JSP页面内容继续执行

如果jsp在编译阶段发现了自定义标签<xx:yyy>,就会交给doStartTag()或doTag()

传统方式的核心是有缓冲区,简单方式没有

2.编写标签描述符

编写建议:可以仿照一个其他标签语言(el,jstl)的tld文件
在这里插入图片描述

  • < body-content >的元素值共有4个
    在这里插入图片描述
  • Tag属性
    在这里插入图片描述
代码示例:

<?xml version="1.0" encoding="UTF-8" ?>  
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/jsee/web-jsptagLibrary_2_0.xsd"
    version="2.0">
    <tlib-version>1.2</tlib-version>
    <uri>标签库的url</uri>
    <short-name>zd</short-name><!--表示标签的前缀名字类似于<jsp:forward>中的jsp-->  
    <tag>
        <name>dict</name><!--表示标签的名字 类似于<jsp:forward>中的forward-->  
        <description>标签库描述</description>
        <tag-class>com.zd.control.tag.DitcTag</tag-class>  <!--标签所在类 -->  
        <body-content>empty</body-content>
        <!--是否存在标签体,简单标签是填scriptclass,传统标签填JSP-->
        <!-- 标签添加参数 -->
        <attribute>
            <name>id</name><!-- 给select定义一个id(必须) -->
            <required>true</required>
            <rtexprvalue>false</rtexprvalue><!-- 说明属性不可以是一个运行时表达式(必须是一个常量String) -->
     	</attribute>
     	<attribute>
            <name>name</name><!-- name映射(不是必须) -->
            <required>false</required>
            <rtexprvalue>false</rtexprvalue><!-- 说明属性不可以是一个运行时表达式(必须是一个常量String) -->
     	</attribute>
    </tag>
</taglib>
3.导入并使用

myTag.tld(即自定义标签文件)只能导入到WEB-INF或子目录下/WEB-INF/xxx(但是不能放在WEB-INF/lib、WEB-INF/classes里)

引用具体要使用的.tld文件:

<% @taglib url=“每个tld文件的唯一标识符” prefix=""使用tld标签时的前缀 %>

具体的使用:

1、空标签(没有标签体的标签)

(1)<d:foreach></d:foreach>
(2)<d:foreach/>

2、带标签体
<d:foreach>xxx</d:foreach>

3、带属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值