編寫標籤對應的實現類時,需要過載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頁面的後續內容將不再執行。
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()返回。
mysql 函式過載 C 方法過載(函式過載)
在講解 c 構造方法 時提到定義構造方法時提到可以定義帶 0 到多個引數的構造方法,但構造方法的名稱必須是類名。實際上,這就是乙個典型的方法過載,即方法名稱相同 引數列表不同。引數列表不同主要體現在引數個數或引數的資料型別不同。在呼叫過載的方法時系統是根據所傳 遞引數的不同判斷呼叫的是哪個方法。例項...
c 輸入過載 輸出過載
首先,我們需要清楚,輸入輸出過載必須作為全域性函式,而不能作為類內宣告的函式,所以在類內宣告過載函式的時候需要使用友元函式的形式。include class test test friend std istream operator std istream in,test x friend std ...
動態過載與靜態過載
了解乙個概念 動態繫結和靜態繫結 下面看一段 include using namespace std class parent void foo1 class son public parent void foo1 intmain 執行之後,結果是 foo from son foo1 from pa...