jsp自定義標籤

2022-06-28 11:18:12 字數 2260 閱讀 8450

主要步驟:

1.建立自定義標籤類,繼承tagsupport類,並覆蓋它的dostarttag(),doendtag()等方法。

2.在web-inf建立標籤庫描述檔案*.tld。

3.在web.xml中配置jsp標籤的uri和路徑。

4.在需要使用此標籤的jsp頁面頭部引入。

更詳細的開發步驟,例項講解以及注意事項,

部分內容講述:

1.jsp自定義標籤的處理過程:

(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內容

2.dostarttag() 以及 doendtag()等方法的返回值的作用:

skip_body

表示不用處理標籤體,直接呼叫 doendtag() 方法。

skip_page

忽略標籤後面的 jsp 內容。

eval_page

處理標籤後,繼續處理 jsp 後面的內容。

eval_body_buffered

表示需要處理標籤體。

eval_body_include

表示需要處理標籤體 , 但繞過 setbodycontent() 和 doinitbody() 方法

eval_body_again

對標籤體迴圈處理。

或者可以這樣理解:

標籤中靜態常量:

eval_body_include:告訴伺服器正文的內容,並把這些內容送入輸出流

skip_body:告訴伺服器不要處理正文內容

eval_page:讓伺服器繼續執行頁面

skip_page:讓伺服器不要處理剩餘的頁面

eval_body_again:讓伺服器繼續處理正文內容,只有doafterbody方法可以返回

eval_body_buffered:bodytag介面的字段,在dostarttag()返回

eval_body_include、skip_body一般由dostarttag()返回,而eval_papge、skip_page由doendtag()返回

3.載入bodytagsupport類的方法:

編寫標籤對應的實現類時,需要過載bodytagsupport類幾個方法:dostarttag(), setbodycontent(), doinitbody(), doafterbody(), doendtag();

他們執行順序如下:

dostarttag()→doinitbody()→setbodycontent()→doafterbody()→doendtag()

dostarttag()方法可返回eval_body_include或skip_body,

如果返回eval_body_include則繼續執行;

如果返回skip_body則接下來的doinitbody(),setbodycontent(), doafterbody()三個方法不會被執行,

而直接執行doendtag()方法。

setbodycontent()方法用於設定標籤體內容,如果在此之前要作一些初始化工作,則在doinitbody()方法中完成。

標籤體內容執行完後,會呼叫doafterbody()方法,此方法可返回eval_body_tag, skip_body,

eval_page或skip_page。

如果返回eval_body_tag則會再次設定標籤體內容,直到返回skip_body;

如果返回eval_page則標籤體執行完後會繼續執行jsp頁面中接下來的部分;

如果返回skip_page,則jsp頁面的後續內容將不再執行。

JSP自定義標籤

1.jsp自定義標籤組成部分 web.xml載入標籤庫,標籤庫描述檔案 tld 標籤處理程式類。2.在自定義標籤的起始和結束標籤之間的部分為標籤體 body 3.分別介紹一下jsp自定義標籤的三個組成部分,以輸出經典的 helloworld為例。修改web.xml載入標籤庫 描述標籤庫檔案 tld ...

JSP自定義標籤

1 開發自定義標籤庫 繼承父類 tagsupport重寫dotag 方法 2 建立tld檔案 1.0mytaglib web inf tlds diego.tld hellotag hellotag empty 3 使用標籤庫 taglib uri web inf tlds diego.tld pr...

JSP自定義標籤

測試環境 tomcat5.5 新增的jar包 jstl.jar standard.jar 自定義jsp標籤的處理過程 來自網上 1 在jsp中引入標籤庫 taglib prefix taglibprefix uri tagliburi 2 在jsp中使用標籤庫標籤 3 web容器根據第二個步驟中的p...