自定义标签就是为了能封装一些公共代码。
目录
什么是jstl标签库 🧁🧁🧁
首先,什么是标签:
标签的概念:
- 是标记语言(Mark Language),是一种注释文本的语言,以便于计算机可以操作。很多与“ML”结尾的语言都是标记语言,比如:HTML,XML,XHTML,VML等等
- 标记语言与其他语言一样,也需要运行它们的环境,比如HTML的运行环境时浏览器,XML也要自己的解析和运行的环境
标签类型:
- UI标签, 输出页面元素
- 控制标签, 如if标签,foreach标签等
- 数据标签,用于向页面输入数据
基本结构:
- <开始标签>标签体</结束标签>
空标签(没有标签体的标签):
- <开始标签 属性名="属性值"/></结束标签>
- <br/><br/>
- <开始标签 属性名="属性值"/>
jstl标签库的概念:
是一个JSP标签集合,它封装了JSP应用的通用核心功能, 基于JSP标签我们可以理解为,是JSP应该通用功能的一种封装方式
jstl自定义标签的生命周期 🍥🍥🍥
要想自定义标签,首先要了解好jstl自定义标签的生命周期,因为我们自定义标签的步骤就是根据下图中的生命周期来的
自定义标签 🍨🍨🍨
1.自定义标签类(举例:out标签,if标签)
- out 标签类(继承BodyTagSupport)
/**
* out 标签作用:向JSP页面中写入数据
*/
public class OutTag extends BodyTagSupport{
private String val;
private String defaultVal;
public void setVal(String val) {
this.val = val;
}
//为空时设置默认值的方法
public void setDefaultVal(String defaultVal) {
this.defaultVal = defaultVal;
}
//标签的开始方法(需要给自定义的标签添加什么操作,就重写对应的生命周期中的方法)
@Override
public int doStartTag() throws JspException {
//this.pageContext:通过当前类获取pageContext对象
//pageContext对象中有一个getOut写出方法
JspWriter out = this.pageContext.getOut();
try {
if(val==null&&val.equals("")) {
out.println(this.defaultVal);
} else {
out.println(this.val);
}
} catch (Exception