自定义标签

来源:互联网 发布:ecnu公共数据库 编辑:程序博客网 时间:2024/05/18 09:39
主要用于一处Jsp页面中的java代码


移除jsp页面中的java代码公分两步骤:
1、标签处理器:实现Tag接口的类,覆盖doStartTag方法,把jsp页面中的java代码写到doStartTag方法中
2、编写.tld 标签库描述符文件,
2、在JSP页面中导入和使用自定义标签
<dhw:viemIp></dhw:viemIp>


Tage接口: doStartTag方法,解析标签的时候调用
getParent()获取父标签对象
setPageContext(PageContext pc)  在doStartTag之前调用,将pageContext传入此标签的类中


实现Tag接口的类  TagSupport   继承于此类,重新关心的方法




自定义标签功能扩展


可以移除Jsp的java代码。扩展功能


Tag接口
1、是否执行标签体 通过doStartTag()的返回值决定是否处理标签提的内容。
Tag.EVAL_BODY_INCLUDE   Tag.SKIP_BODY
2、是否执行后面的jsp页面的内容 通过doEndTag()的返回值决定是否继续执行jsp页面
Tag.SKIP_PAGE 表示不继续执行  Tag.EVAL_PAGE继续执行JSP页面剩下的内容


InterationTag接口  增加了 doAfterBody()
3、通过自定义标签 重复执行内容
(1)将标签实例化成对象
(2)调用标签处理器对象的setPageContext()将jsp页面的pageContext对象
(3)调用标签处理器对象的setParent将父标签对象做参数传递给标签处理
(4)调用doStartTag(),返回值决定是否要执行标签体
(5)标签体的处理
(6)调用doAfterBody()-返回值可以决定是否要重复执行标签体的内容
EVAL_BODY_AGAIN(重新处理标签体)  SKIP_BODY不重新处理
(7)调用doEndTag()


BodyTag接口 setBodyContent()(系统自动调用,把标签体的内容封装在对象里传给)  doInitBody()
(1)当doStartTag()返回值为EVAL_BODY_BUFFERED 
(2)系统自动调用 setBodyContent()  BodyContent对象存储标签体
(2)调用doEndTag()  访问BodyContent对象










SimpleTag接口


继承 SimpleBodyTagSupport
原创粉丝点击