1、自定义标签文件准备
1.2标签库导入
2、自定义标签
2.1为什么学习自定义标签
节省写代码的时间,减少代码冗余,使代码更简洁,可读性更强
2.2特点
<开始标签 属性="属性值">标签体</结束标签>
空标签:<开始标签><开始标签/>
2.3分类
标签类型 作用 举例
ui标签 专门用来展示内容 from,select
控制标签 做流程控制 if,foreach
数据标签 对数据进行操作 set
2.4JSP自定义标签生命周期图
3、实例效果
3.1效果图
<!-- set out if -->
<c:set var="name" value="zs"></c:set>
<c:out value="${name }"></c:out>
<c:if test="true">男</c:if>
<c:if test="false">女</c:if>
<hr>
<t:demo>demo标签内容</t:demo>
<t:set var="sex" value="男"></t:set>
<t:out value="${sex }"></t:out>
<t:if test="true">男</t:if>
<t:if test="false">女</t:if>
3.2资料文件与配置
uri的值是对应的tld文件的uri的值
name------>标签名前缀
testtag-class----->处理业务的助手类的完整类名
attribute------>属性
rtexprvalue----->是否支持特殊表达式
required----->是否必填
3.3setTag类
set 设置值 页面无输出
package com.tanjie.jsp;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class setTag extends BodyTagSupport{
private String var;
private Object value;
public String getVar() {
return var;
}
public void setVar(String var) {
this.var = var;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
@Override
public int doStartTag() throws JspException {
pageContext.setAttribute(var, value);
return SKIP_BODY;
}
}
3.4outTag类
out 输出指定值
package com.tanjie.jsp;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class outTag extends BodyTagSupport{
private Object value;
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
@Override
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
try {
out.print(value);
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_BODY_INCLUDE;
}
}
3.5ifTag类
if 做判断用的
package com.tanjie.jsp;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class ifTag extends BodyTagSupport{
private Boolean test;
public Boolean getTest() {
return test;
}
public void setTest(Boolean test) {
this.test = test;
}
@Override
public int doStartTag() throws JspException {
System.out.println("dostart");
return test ?EVAL_BODY_INCLUDE:SKIP_BODY;
}
}
谢谢大家观看!!