调用过程
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则是其后面的内容不输出