自定义标签处理器类的生命周期:
SimpleTag接口:
void setJspContext(JspContext pc)--设置pageContext对象,传入pageContext(一定调用)
通过getJspCotext()方法得到pageContext对象
void setParent(JspTag parent)--设置父标签对象,传入父标签对象,如果没有父标签,则不 调用此方法。通过getParent()方法得到父标签对象。
void setXXX(值) --设置属性值。
void setJspBody(JspFragment jspBody)--设置标签体内容。标签体内容封装到JspFragment对象 中,然后传入JspFragment对象。通过getJspBody()方法 得到标签体内容。如果没有标签体内容,则不会调 用此方法
void doTag()--执行标签时调用的方法。(一定调用)
第一个自定义开发类,
1)编写一个普通的java类,继承SimpleTagSupport类,得到的类叫做标签处理器类。
2)在web项目的WEB-INF目录下建立一个song.tld文件,这个tld文件叫做标签库的声明文件。(参考核心标签库的声明文件)
![](https://img.haomeiwen.com/i11035323/c1089f539adcb617.png)
3)在jsp页面头部导入自定义标签库
![](https://img.haomeiwen.com/i11035323/0f160ba8f0757c71.png)
4)在jsp中使用自定义标签库
![](https://img.haomeiwen.com/i11035323/48908795dc5a2466.png)
自定义标签的作用:
1)控制标签体是否输出
//控制标签体内容是否输出
JspFragment contentFragment=this.getJspBody();
/*JspWriter out=this.getJspContext().getOut();
contentFragment.invoke(out);*/
// contentFragment.invoke(null);
2)控制标签余下内容是否输出(默认标签体内容输出)
throw new SkipPageException();
3)控制重复输出标签体内容:重复调用invoke(null)内容
4)改变标签体内容
StringWriter writer=new StringWriter();
contentFragment.invoke(writer);
String contentString=writer.toString();
contentString=contentString.toLowerCase();
this.getJspContext().getOut().write(contentString);
5)带属性的标签
网友评论