浅谈JSP自定义标签实现过程
(一) 没有正文的JSP自定义标签实现
(1):定义JSP自定义标签处理类
(2) 定义tld文件
(3) JSP页面动态引用
注意:动态引用和静态引用的区别。
为了进行静态引用,首先必须将下面的项加入到web.xml 文件中:
然后,将JSP 声明加入到所有需要使用自定义标记库的页面中:
指定的uri 属性与在web.xml 文件中指定的taglib-uri 值相匹配。
在进行标记库的静态引用时,JSP 声明必须查询 web.xml 文件以执行库查询。这意味着如果移动或者重命名了库,或者希望在 web.xml 文件中加入更多的库,就必须停止服务器、更新 web.xml 文件、然后重新启动服务器。动态方法让JSP页直接指向 TLD 位置,因而是在解释JSP页面时进行处理。
(二)? 没有正文的但带有属性的JSP自定义标签标签实现
(1):定义JSP自定义标签处理类
(2) 定义tld文件
(3)JSP页面动态引用
(三) 有正文的且带有属性的JSP自定义标签实现
(1):定义JSP自定义标签处理类
(2) 定义tld文件
(3) jsp 页面动态引用
效果图:

执行顺序
doStartTag()->setBodyContent()->doInitBody()->doAfterTag()->doEndTag()
如果doStartTag()返回的是EVAL_BODY_INCLUDE执行doAfterTag()方法,
如果它返回SKIP_BODY就执行doEndTag()方法。
setBodyContent()方法用于设置标签体内容,如果在计算BodyContent时需要进行一些初始化工作,
则在doInitBody()方法中完成。标签体内容执行完后,会调用doAfterBody()方法
在doAfterTag()方法中返回EVAL_BODY_AGAIN来重复执行doAfterTag()方法
返回SKIP_BODY值则执行doEndTag()方法。
在doEndTag()方法中返回EVAL_PAGE值,则执行此标签的后的其它代码,
返回SKIP_PAGE则不执行此页面的其它代码。