開發body tag步驟: 一、開發tag類 (1)開發body tag類較爲便捷的方法是集成BodyTagSupport類,該類集成了TagSupport類與BodyTag接口,位於javax.servlet.jsp.tagext包下。 具體細節: ①編寫構造器(constructor):直接經過super();調用父類構造器; ②重寫setAttribute()、setBodyContent()、doStartTag()、doInitBody()、doAfterBody()、doEndTag()方法。帶標籤體標籤的類的方法後臺運行順序也是如此,上面的setBodyContent與doInitBody方法並不是必須重寫。注意:Attribute與接下來標籤描述文件(tld)文件中的<attribute>指向同一個屬性;doStartTag,doAfterBody,doEndTag方法須要返回一個int形參數,這些int型參數是預設的,並有各自的涵義: EVAL_PAGE:繼續計算JSP其它部分,通常用在doEndTag中指示是否繼續計算JSP其它部份內容; SKIP_PAGE:中止計算JSP其它內容; EVAL_BODY_INCLUDE:計算標籤體,通常用在doStartTag方法中 EVAL_BODY_BUFFERED:計算標籤體,用在doAfterBody方法中 EVAL_BODY_AGAIN:循環計算標籤體,用在doAfterBody方法中 SKIP_BODY:不計算標籤體; ③編譯類文件,並將編譯後的class文件連同其包結構一同放在WEB-INF下的classes文件夾下 二、編寫自定義標籤文件 模板: <?xml version="1.0" encoding="utf8"?> <taglib> <jsp-version>1.1</jsp-version> <tlib-version>1.2</tlib-version> <!--這個tlib挺繞口的,記住除了tld文件中的這裏用tlib,其它定義軍用taglib全程--> <uri>/myTag</uri> <tag> <name>bodyTag</name> <tag-class>包結構.類文件名</tag-class> <body-content>jsp</body-content> <attribute> <name>標籤類中的屬性,即setAttribute中的Attribute</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib> 注意這裏的uri是一個重要的屬性!uri是統一資源標識符,這裏的uri並不表明路徑,而僅是資源定位的標識,在web.xml中對應的標籤聲明也將定義uri,並於此處的uri相同,而jsp文件應用自定義標籤也須要提早聲明uri,jsp根據其中的uri找到web.xml文件中對應的tld文件,經過tld文件的uri進行驗證,若相同,則取tld文件中的類路徑並運行標籤類。 三、web.xml中聲明標籤 <web-app> <taglib> <tablib-uri>/myTag</taglib-uri> <taglib-location>tld文件的相對路徑</taglib-location> </taglib> 四、jsp文件中使用標籤 <%@ taglib uri="/myTag" prefix="test"%> ... <test:bodyTag 屬性名="...">標籤體</test:bodyTag> ... 須要注意的也就這麼多了,再細的細節須要本身去誤了!