1.標簽處理器的工作方式 a.導入javax.servlet.jsp和javax.servlet.jsp.tagext包。 b.實現javax.servlet.jsp.tagext包中的Tag接口或BodyTag接口。BodyTag是Tag的子接口。 c.繼續TagSupport類或BodyTagSuppoert類。它們是上述接口的缺省實現。 d.重載public int doStartTag()throws JspException方法。
2.標簽處理器的接口與實現 javax.servlet.jsp.tagext.Tag是實現標簽的最基本的接口。 javax.servlet.jsp.tagext.TagSupport是實現Tag接口的具體類。 通常情況下繼續tagSupport類而不直接實現Tag接口通常是有益的。除了對所有必需方法提供了缺省實現外、還保存了pageContext對象及對嵌套標簽的支持。 Tag接口包含4個常量,表示doStartTag()和doEndTag()方法可能的返回碼。 EVAL_BODY_INCLUDE 當doStartTag()返回時,指明servlet應對標簽體進行評估。 SKIP_BODY 當doStartTag()返回時,指明servlet應忽視標簽體。 EVAL_PAGE 當doEndTag()返回時,指明頁面其余部分應被評估。 SKIP_PAGE 當doEndTag()返回時,指明頁面其余部分就被跳過。 Tag接口的方法 public void setPageContext (PageContext ctx) 生成的servlet在請求處理器執行其它任務前首先調用此方法,實現類應保存上下文對象以便它可以在標簽生命期中使用。從頁面上下文中標簽處理器可以訪問所有JSP隱含對象。 public void setParent(Tag p) 使用一個標答可以找到操作棧中它上面的標簽。在setPageContext后立即調用。 public Tag getParent() 返回父標簽。 public int doStartTag() throws Jsp 在設置了頁面上下文、父標簽和開始標記中編碼的屬性后調用。返回碼表明JSP實現servlet是否就評估標簽體。 public int doEndTag()throws JspException 當碰到結否標記時調用。返回碼表明JSP是否就繼紐頁面的其余部份。 public void release() 確保在頁面退出前被調用。釋放資源并重置標簽處理器狀態。 TagSupport類的方法 public static Tag finAncestorWithClass(Tag thisTag, Class cls) 為所需的父標簽處理器查找運行時標簽棧。一個標簽處理器可以提供其范圍內子標簽調用的方法。 public void setId(String id) 保存和檢索在id屬性中指定的名字。 public void setValue(String name, Object o) 在本地哈希表中設置指定名字的值。 public Object getValue (String name) 從本地哈希表中獲取指定名稱的值。 public void removeValue (String name) 從本地哈希表中刪除指定名稱的值。 public Enumeration getValues() 返回哈希表中要害字的一個枚舉。