创建自定义标签库

调用过程

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

原文地址:https://www.cnblogs.com/lonecloud/p/5973863.html