(1)當jsp容器中在解釋jsp頁面時,如果遇到自定義標簽的開始標記,將利用"標簽處理類"建立一個"標簽處理對象".在建立"標簽處理對象"的過程中,jsp容器會回調setPageContext()方法,然後根據自定義標簽的屬性值來初始化"標簽處理對象"的屬性.
(2)接著jsp容器會運行doStartTag()方法內的程序代碼,然後根據此方法的返回值決定後續動作,如果返回SKIP_BODY常量,表示要求jsp容器忽略此標簽主體內容;如果返回EVAL_BODY_INCLUDE常量,表示要求jsp容器執行標簽主體的內容,並將結果包括在相應中,然後再運行doAfterBody()方法.
(3)如果doAfterBody()方法傳回EVAL_BODY_INCLUDE常量,表示要求jsp容器再次執行標簽主體的內容;如果返回SKIP_BODY常量,jsp容器建會運行doEndTag()方法.
(4)最後,jsp容器會運行doEndTag()方法內的程序代碼,並根據此方法的返回值決定後續動作----如果返回SKIP_BODY常量,jsp容器會忽略自定義標簽以後的jsp內容;如果返回EVAL_BODY_INCLUDE常量,jsp容器會運行自定義標簽以後的jsp內容.
摘自 潇灑哥的專欄