程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> Taglib原理和實現之什麼是Taglib

Taglib原理和實現之什麼是Taglib

編輯:關於JSP

1、問題:Tag究竟是什麼?如何實現一個Tag?

一個tag就是一個普通的java類,它唯一特別之處是它必須繼承TagSupport或者BodyTagSupport類。這兩個類提供了一些方法,負責jsp頁面和你編寫的類之間的交互,例如輸入,輸出。而這兩個類是由jsp容器提供的,無須開發人員自己實現。換句話說,你只需把實現了業務邏輯的類繼承TagSupport或者BodyTagSupport,再做一些特別的工作,你的類就是一個Tag。並且它自己負責和jsp頁面的交互,不用你多操心。

“特別的工作”通常有以下幾個步驟:

1)提供屬性的set方法,此後這個屬性就可以在jsp頁面設置。以jstl標簽為例 <c:out value=""/>,這個value就是jsp數據到tag之間的入口。所以tag裡面必須有一個setValue方法,具體的屬性可以不叫value。例如

setValue(String data){this.data = data;}

這個“value”的名稱是在tld裡定義的。取什麼名字都可以,只需tag裡提供相應的set方法即可。

2)處理 doStartTag 或 doEndTag 。這兩個方法是 TagSupport提供的。 還是以<c:out value=""/>為例,當jsp解析這個標簽的時候,在“<”處觸發 doStartTag 事件,在“>”時觸發 doEndTag 事件。通常在 doStartTag 裡進行邏輯操作,在 doEndTag 裡控制輸出。

3)編寫tld文件。

4)在jsp頁面導入tld

這樣,你的jsp頁面就可以使用自己的tag了。

通常你會發現自己絕大多數活動都集中在 doStartTag 或 doEndTag 方法裡。確實如此,熟悉一些接口和類之後,寫taglib很容易。正如《jsp設計》的作者所言:裡面的邏輯稍微有點復雜,但畢竟沒有火箭上天那麼難。

2、一個簡單的例子:OutputTag
package diegoyun;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/**
* @author chenys
*/
public class OutputTag extends TagSupport
{
private String name=null;
public void setName(String name)
{
this.name = name;
}
public int doStartTag() throws JspException{
try
{
JspWriter out = pageContext.getOut();
out.print("Hello! " + name);
}
catch (Exception e)
{
throw new JspException(e);
}
return EVAL_PAGE;
}
}

簡要說明:

1、如何輸出到jsp頁面:

調用JspWriter JspWriter out = pageContext.getOut();out.print......

記住這個方法就可以了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved