基本步驟:
1.首先編寫class類,extends TagSupport類,重寫自己需要的方法。
(注:若繼承SimpleTagSupport類,則必須將處理代碼都放到doTag()方法中 )
2.配置
編寫tld檔案,配置web.xml檔案
3.jsp調用
註:tomcat內建的example是很好的模仿例子
如果class類繼承自SimpleTagSupport,則所有操作都要放到doTag()方法中;
如果class類繼承自BodyTagSupport,
在BodyTagSupport類別中,doStartTag()預設是傳回EVAL_BODY_BUFFERED,然後執行setBodyContent()與doInitBody()方法,setBodyContent()會設定BodyContent物件,它包括了一些標籤本體文字資訊,及在處理標籤過程中寫出資料至response的物件,在這之後會進入doAfterBody()方法,您可以傳回EVAL_BODY_AGAIN或是SKIP_BODY,如果傳回前者,則照以上的流程再執行一次。
繼承SimpleTagSupport類的可以參加tamcat內建例子。
public class PageDivide extends BodyTagSupport {
public Iterator iterator;
public Object element;
public int doStartTag() throws JspException {
try {
Database db = new Database();
db.init();
iterator = db.getCourse().iterator();
} catch (Exception e) {
e.printStackTrace();
}
if (iterator.hasNext()) {
element = iterator.next();
pageContext.setAttribute("course", element);
}
return EVAL_BODY_BUFFERED;
}
public int doAfterBody() {
try {
bodyContent.writeOut(this.getPreviousOut());
} catch (IOException e) {
e.printStackTrace();
}
bodyContent.clearBody();
if (iterator.hasNext()) {
element = iterator.next();
pageContext.setAttribute("course", element);
return EVAL_BODY_AGAIN;
} else
return EVAL_PAGE;
}
}