四、自定义标签
1.传统标签
1).写一个类去实现Tag接口
2).写一个tld文件描述写好的标签处理器类
2.简单标签
1).开发步骤
1'.写一个类去实现simpletag接口,也可以去继承simpletag的默认实现类simpleTagSupport,覆盖父类
中的doTag方法,在其中写处理的代码
2'.写一个tld文件描述
2).简单标签的执行过程
1'.每一个简单标签被使用到时,都会去创建一个简单标签处理类对象
2'.创建出来后调用setJspContext方法将代表当前jsp页面的JspContext对象传入
3'.检查是否有父标签,如果有父标签则调用setParent方法将父标签对象传入
4'.如果当前标签具有属性,则调用属性对应的setXXX方法,将属性设置到标签处理器类中
5'.如果标签具有标签体,则调用setJspBody方法,将代表标签体的JSPFragment对象传入
6'.最终调用doTag方法执行简单标签要执行的操作
3).简单标签实现基本功能
控制标签体是否执行 c:if
控制标签之后的剩余页面是否执行
控制标签体重复执行 c:foreach
控制标签体修改后输出 c:out
4).开发带有属性的标签
1'.在标签体处理类中,写一个javabean属性,提供setXXX方法
2'.在tld文件中描述这个属性
<tag>
<!-- 指定标签的名字,在jsp页面中使用这个名字调用此标签 -->
<name>if</name>
<!--标签处理器类-->
<tag-class>com.itheima.tag.ItheimaIF</tag-class>
<!--标签体类型,JSP表示任意jsp内容;scriptless表示除了java源码外的任意jsp内容;
empty表示空标签体;tagdepedent表明当前标签的标签体是给后台使用的,不进行任何输出-->
<body-content>scriptless</body-content>
<!--对属性进行描述-->
<attribute>
<!--属性的名称-->
<name>test</name>
<!--属性是否是必须存在的-->
<required>true</required>
<!--属性是否支持el-->
<rtexprvalue>true</rtexprvalue>
<!--属性的java类型-->
<type>boolean</type>
</attribute>
</tag>
1.传统标签
1).写一个类去实现Tag接口
2).写一个tld文件描述写好的标签处理器类
2.简单标签
1).开发步骤
1'.写一个类去实现simpletag接口,也可以去继承simpletag的默认实现类simpleTagSupport,覆盖父类
中的doTag方法,在其中写处理的代码
2'.写一个tld文件描述
2).简单标签的执行过程
1'.每一个简单标签被使用到时,都会去创建一个简单标签处理类对象
2'.创建出来后调用setJspContext方法将代表当前jsp页面的JspContext对象传入
3'.检查是否有父标签,如果有父标签则调用setParent方法将父标签对象传入
4'.如果当前标签具有属性,则调用属性对应的setXXX方法,将属性设置到标签处理器类中
5'.如果标签具有标签体,则调用setJspBody方法,将代表标签体的JSPFragment对象传入
6'.最终调用doTag方法执行简单标签要执行的操作
3).简单标签实现基本功能
控制标签体是否执行 c:if
控制标签之后的剩余页面是否执行
控制标签体重复执行 c:foreach
控制标签体修改后输出 c:out
4).开发带有属性的标签
1'.在标签体处理类中,写一个javabean属性,提供setXXX方法
2'.在tld文件中描述这个属性
<tag>
<!-- 指定标签的名字,在jsp页面中使用这个名字调用此标签 -->
<name>if</name>
<!--标签处理器类-->
<tag-class>com.itheima.tag.ItheimaIF</tag-class>
<!--标签体类型,JSP表示任意jsp内容;scriptless表示除了java源码外的任意jsp内容;
empty表示空标签体;tagdepedent表明当前标签的标签体是给后台使用的,不进行任何输出-->
<body-content>scriptless</body-content>
<!--对属性进行描述-->
<attribute>
<!--属性的名称-->
<name>test</name>
<!--属性是否是必须存在的-->
<required>true</required>
<!--属性是否支持el-->
<rtexprvalue>true</rtexprvalue>
<!--属性的java类型-->
<type>boolean</type>
</attribute>
</tag>