它的生命週期各個階段的具體執行過程如下:
(1)當JSP容器在解釋JSP頁面時,如果遇到自定義標籤的開始標記,將利用”標籤處理類“建立一個”標籤處理對象“。
在建立”標籤處理對象“的過程中,JSP容器會回調setPageContext()方法,然後根據自定義標籤的屬性值來初始
化“標籤處理對象”的屬性。
(2)接着JSP容器會運行doStartTag()方法內的程序代碼,但後根據此方法的返回值決定後續動作,如果返回SKIP_
BODY常量,表示要求JSP容器忽略此標籤主題的內容;如果返回EVAL_BODY_INCLUDE常量,表示要求JSP
容器執行標籤主體的內容,並將結果包括在響應中,然後再運行doAfterBody()方法。
(3)如果doAfterBody()方法傳回EVAL_BODY_AGAIN常量,表示要求JSP容器再次執行標籤主體的內容;如果返回
SKIP_BODY常量,JSP容器將會運行doEndTag()方法。
(4)最後,JSP容器會運行doEndTag()方法內的程序代碼,並根據此方法的返回值決定後續動作----如果返回SKIP_
PAGE常量,JSP容器會忽略自定義標籤以後的JSP內容;如果返回EVAL_PAGE常量,JSP容器會運行自定義
標籤以後的JSP內容。