TagSupport類的生命周期
它的聲明周期各個階段的具體執行過程:
(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內容。
總的歸納起來,TagSupport類的生命周期中需要的方法如下:
方法名
描述
返回值說明
doStartTag()
容器在遇到開始標簽時會調用這個方法
SKIP_BODY:忽略標簽主體的內容,這是默認值
EVAL_BODY_INCLUDE:要求JSP容器要執行標簽主體內容並將結果包括在響應中
doAfterBody()
如果標簽有主體內容,容器在執行完標簽主體後,會調用這個方法
SKIP_BODY:要求JSP容器忽略主體,進入標簽處理程序的下一步工作,是默認值
EVAL_BODY_AGAIN:要求JSP容器再次顯示標簽主體內容
doEndTag()
容器在遇到結束標簽時會調用這個方法
EVAL_PAGE:運行自定義標簽以後的JSP網頁內容,這是默認值
SKIP_PAGE:忽略自定義標簽以後的JSP網頁內容
release()
容器通過這個方法來釋放本標簽處理對象所占用的系統資源
沒有返回值
舉例說明:
JSP頁面:
Java部分:
摘自 like7xiaoben