建立自定義標籤庫

lonecloud發表於2016-10-18

呼叫過程

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

相關文章