文章目录
一、标签语言特点
二、自定义标签
1)步骤
2)实例
三、标签生命周期
一、标签语言特点:
形式:<开始标签 属性="属性值">标签体结束标签>
分类:空标签 例:br、hr
UI标签 例:out标签
控制标签 例:if、foreach
数据标签 例:input、table
二、自定义标签
1)步骤
①助手类(继承BodyTagSupport)
源码:
package com.hemingxiang.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class DemoTag1 extends BodyTagSupport{
@Override
public int doStartTag() throws JspException {
System.out.println("-------------开始标签-----------");
return EVAL_BODY_INCLUDE;
}
@Override
public int doAfterBody() throws JspException {
System.out.println("------------标签体--------------");
return super.doAfterBody();
}
@Override
public int doEndTag() throws JspException {
System.out.println("------------结束标签-------------");
return super.doEndTag();
}
}
②标签库描述文件tld(tld文件必须保存到WEB-INF目录或其子目录)
JSTL 1.1 core library JSTL core 1.1 x http://jsp.veryedu.cn Provides core validation features for JSTL tags. org.apache.taglibs.standard.tlv.JstlCoreTLV demo1 com.hemingxiang.tag.DemoTag1 JSP var false false if com.hemingxiang.tag.IfTag JSP test true true set com.hemingxiang.tag.SetTag JSP var true false value true true out com.hemingxiang.tag.OutTag JSP value true true
③JSP通过taglib指令导入标签库
2)实例
先创建一个tld文件:
再创建一个助手类:
在有标签体的情况下,默认会调用助手类的doStartTag,doAfterBody,doEndTag方法
三、标签生命周期
看上面的实例得出3点结论:1.如果将doStartTag的返回值改为SKIP_BODY,那么doAfterBody就不调用执行(路线1)
2.如果将doStartTag的返回值改为EVAL_BODY_INCLUDE,那么doAfterBody会调用执行(路线2)
3.如果将doAfterBody的返回值改为EVAL_BODY_AGAIN,那么会一直调用doAfterBody,进入循环(路线3)
以下的返回值在实例中有用到,具体方法看实例
标签开发场景,以标注为例:



