自定义标签入门
bodytagsupport执行顺序
载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页面的后续内容将不再执行。
标签中静态常量:
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()返回
摘自 耗子的程序员之路