它的生命週期各個階段的具體執行過程如下:
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內容。