自定義標籤 使用SimpleTag接口

 自定義標籤,使用SimpleTag接口 

第一步  要創建自定義的JSP標籤,你首先必須創建處理標籤的Java類。寫個自己的標籤類

MyTag.java

package cn.test.tag;

import java.io.IOException;

import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.JspTag;
import javax.servlet.jsp.tagext.SimpleTag;
/**
 * 自定義標籤
 * @author hp
 *
 */
public class MyTag implements SimpleTag{

	private PageContext pageContext;
	private JspFragment body;
    /**
     * 所有的set方法 都會在 doTag 方法之前被tomcat 調用
     * dotag中 就可以使用tomcat 傳遞過來的對象了
     */

	@Override
	public void doTag() throws JspException, IOException {
		pageContext.getOut().print("Hello  Tag!");
		
	}

	@Override
	public JspTag getParent() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void setJspBody(JspFragment jspBody) {
		this.body=jspBody;
		
	}

	@Override
	public void setJspContext(JspContext context) {
	    this.pageContext=(PageContext)  context;
		
	}

	@Override
	public void setParent(JspTag parent) {
		// TODO Auto-generated method stub
		
	}

}

 在配置tld文件

tld目錄

 .tld文件

<?xml version="1.0" encoding="UTF-8"?>

<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
     version="2.1">
 <tlib-version>1.0</tlib-version>
 <short-name>xiaoquan</short-name>
 <uri>http://www.xiaoquan.cn/tags/1.0</uri>
 
 <tag>
 <name>myTag</name>
 <tag-class>cn.test.tag.MyTag</tag-class>
 <body-content>empty</body-content>
 </tag>
</taglib>

 使用標籤   在需要的頁面裏面導入標籤

<%@ taglib prefix="xiaoquan" uri="/WEB-INF/tlds/xiaoquan-tag.tld"%>

將上面的指令寫在 jsp 中

 

 

運行效果 

 

以上類有些複雜 可以使用SimpleTagSupport類

SimpleTagSupport 實現了simpleTag接口  它已經把所有的tomcat傳遞數據都保存起來了  而且還提供了get方法供子類使用

public class MyTag2 extends   SimpleTagSupport{
     @Override
     public void doTag() throws JspException,IOException{
      
      this.getJspConText().getOut().print("hello tag");


     }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章