Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17494
  • 博文数量: 21
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 211
  • 用 户 组: 普通用户
  • 注册时间: 2015-12-09 16:47
文章分类

全部博文(21)

文章存档

2017年(1)

2016年(9)

2015年(11)

我的朋友
最近访客

分类: Java

2016-03-19 10:02:22

jsp2.0之前,定义标签需要继承TagSupport或者BodyTagSupport.jsp2.0引入了SimpleTagSupport简化了编程,那么他们有什么区别呢?首先要说TagSupport和BodyTagSupport的区别。首先需要建立一个tld(tag library define)文件,这个文件主要有以下几个关键要素

点击(此处)折叠或打开

  1. <uri>http://hufei.com.cn</uri>
  2.   <description>
  3.     A simple tab library for the examples
  4.   </description>
  5.      <tag>
  6.          <name>hello</name>
  7.          <tag-class>cn.hufei.tag.HelloTag</tag-class>
  8.          <body-content>empty</body-content>
  9.          <attribute>
  10.              <name>content</name>
  11.              <required>false</required>
  12.              <fragment>false</fragment>
  13.          </attribute>
  14.      </tag>
如以上代码可以看到uri元素是整个标签库的区分,在页面是通过<%>其中的uri对应这里边的uri.其他的属性就不一一介绍了,本文章主要是讲解继承不同类,调用的不同方法的时机。
如果我们的类继承的是TagSupport类,那么首先会调用 setPageContext(),setParent(),SetAttribute().然后调用dostartTag();根据dostartTag的返回值确定是否要输出到当前页面的输出流(为EVAL_BODY_INCLUDE输出),紧接着调用doEndTag();根据返回值确定是否要执行页面的以下部分(如果是EVAL_PAGE执行),最后release;
如果继承了BodyTagSupport了,在实现了doStartTag()之后会出现两个分支,如果返回EVAL_BODY_INCLUDE,则走第一条分支,如果是EVAL_BODY_BUFFERED.走第二条
1:计算标签体的内容输入到客户端,调用doEndTag,release;
2:setBodyContent,doInitBody,计算标签体并输入到缓冲区中。。
如果是继承的SimpleTagSupport,只要重写doTag方法就行了,在里边配置执行的过程
阅读(273) | 评论(0) | 转发(0) |
0

上一篇:SSH整合

下一篇:java虚拟机与内存溢出

给主人留下些什么吧!~~