第 10 章 : 自定义标签
编写步骤:
- 标签处理类
- 编写 tld 文件
- taglib 导入 tld 文件
javax.servlet
javax.servlet-api
4.0.1
provided
javax.servlet.jsp
javax.servlet.jsp-api
2.3.3
provided
定义无内容标签
package com.pengshiyu.taglibs;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
public class HelloTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
this.getJspContext().getOut().println("hello");
}
}
声明
1.0
2.0
Example TLD with Body
Hello
com.pengshiyu.taglibs.HelloTag
empty
引入声明文件并使用标签
定义有内容标签
package com.pengshiyu.taglibs;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
public class HelloTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
JspWriter out = this.getJspContext().getOut();
out.write("******");
this.getJspBody().invoke(out);
out.write("******");
}
}
你好
输出
****** 你好 ******
不再执行标签下面的内容
package com.pengshiyu.taglibs;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.SkipPageException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
public class HelloTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
this.getJspContext().getOut().write("以下内容不显示");
throw new SkipPageException();
}
}
带有属性的标签
标签类
package com.pengshiyu.taglibs;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
public class HelloTag extends SimpleTagSupport {
private String name = "";
public void setName(String name) {
this.name = name;
}
@Override
public void doTag() throws JspException, IOException {
this.getJspContext().getOut().write(this.name);
}
}
tld 配置
Hello
com.pengshiyu.taglibs.HelloTag
scriptless
name
true
true
使用