呼叫過程
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則是其後面的內容不輸出