调用过程
1.创建一个自定义tag类实现Tag接口
package cn.lonecloud.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
/**
* 自定义标签库继承与Tag
* @Title: SelfTag.java
* @Package cn.lonecloud.tag
* @Description:
* @author lonecloud
* @date 2016年10月18日 下午4:21:51
*/
public class SelfTag implements Tag{
private Tag parent;
private PageContext context;
@Override
public int doEndTag() throws JspException {
return SKIP_BODY;
}
/**
* 在这个方法中写你需要的东西
*/
@Override
public int doStartTag() throws JspException {
JspWriter out = context.getOut();
try {
out.print("我是标签");
} catch (Exception e) {
e.printStackTrace();
}
return EVAL_PAGE;
}
@Override
public Tag getParent() {
return parent;
}
@Override
public void release() {
}
@Override
public void setPageContext(PageContext context) {
this.context=context;
}
@Override
public void setParent(Tag parent) {
this.parent=parent;
}
}
再WEB-INF下面建立一个taglib.tld的标签描述文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"> 5 <tlib-version>1.0</tlib-version> 6 <!-- 声明首选的短名字 --> 7 <short-name>taglib</short-name> 8 <!-- 引入url --> 9 <url>http://www.loneclud.cn/SelfTag</url> 10 <!-- 所选功能的类 --> 11 <tag> 12 <name>self</name><!-- taglib:self --> 13 <tagclass>cn.lonecloud.tag.SelfTag</tagclass><!-- 实现类名 --> 14 <bodycontent>JSP</bodycontent><!--配置JSP才有效 --> 15 </tag> 16 </taglib>
在web.xml下进行申明
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 5 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 6 <!-- 在Web.xml下进行申明 --> 7 <jsp-config> 8 <taglib> 9 <taglib-uri>http://www.loneclud.cn/SelfTag</taglib-uri> 10 <taglib-location>/WEB-INF/taglib.tld</taglib-location> 11 </taglib> 12 </jsp-config> 13 <display-name>Archetype Created Web Application</display-name> 14 </web-app>
在jsp页面中引入
<%@ taglib uri="http://www.loneclud.cn/SelfTag" prefix="taglib"%>
使用
<taglib:self></taglib:self>
dostartTag中如果选择的是SKIP_BODY则其里面的xmlbody内部不在输出
doEndTag中SKIP_PAGE则是其后面的内容不输出