深入浅出自定义标签(一)入门

 如果发现文章中的图片无法显示请点击这里:http://tony-action.blog.sohu.com/19732140.html
相信大家在编辑Jsp页面的时候用到过“自定义标签”,我简单的介绍一下自定义标签

 

好了所需要的类和接口都看到了,大家一起看一下代码来一步一步的分析这些接口和类的作用。

非常简单的index.jsp页面

 

显示用户信息的Logon.jsp(名字是我之前做另外一个试验是的,没有改过来请见谅叫viewinfo.jsp比较好)

 

其中比较重要的是这一句

下面是util.tld文件,这是“自定义标签”和Jsp引擎通信所必须的文件

下面是实现标签功能的类TagUtil.java

所有的代码都在这里,还要再把关于下面是BodyTagSupport类的方法,这个类实现了Tag、BodyTag和InterationTag接口便于我们直接使用所有功能


javax.servlet.jsp.tagext
Class BodyTagSupport

java.lang.Object
  extended byjavax.servlet.jsp.tagext.TagSupport
      extended byjavax.servlet.jsp.tagext.BodyTagSupport
All Implemented Interfaces:
BodyTag, IterationTag, JspTag, Serializable, Tag

 


 

一个成员变量bodyContent

Field Summary
protected  BodyContentbodyContent
          The current BodyContent for this BodyTag.

 方法

 

Method Summary
 intdoAfterBody()
          After the body evaluation: do not reevaluate and continue with the page.
 intdoEndTag()
          Default processing of the end tag returning EVAL_PAGE.
 voiddoInitBody()
          Prepare for evaluation of the body just before the first body evaluation: no action.
 intdoStartTag()
          Default processing of the start tag returning EVAL_BODY_BUFFERED.
 BodyContentgetBodyContent()
          Get current bodyContent.
 JspWritergetPreviousOut()
          Get surrounding out JspWriter.
 voidrelease()
          Release state.
 voidsetBodyContent(BodyContent b)
          Prepare for evaluation of the body: stash the bodyContent away.

  此时我们还要用到BodyContent这个类,这个类包装了JspWriter,BodyContent类的内部存放了我们标签体中间的内容如:

<tony:tag>标签体中的内容</tony:tag> 

我们可以调用BodyContent类的getString方法来得到标签体中的内容。


javax.servlet.jsp.tagext
Class BodyContent

java.lang.Object
  extended byjava.io.Writer
      extended byjavax.servlet.jsp.JspWriter
          extended byjavax.servlet.jsp.tagext.BodyContent

BodyContent的方法

 

Method Summary
 voidclearBody()
          Clear the body without throwing any exceptions.
 voidflush()
          Redefined flush() so it is not legal.
 JspWritergetEnclosingWriter()
          Get the enclosing JspWriter.
abstract  ReadergetReader()
          Return the value of this BodyContent as a Reader.
abstract  StringgetString()
          Return the value of the BodyContent as a String.
abstract  voidwriteOut(Writer out)
          Write the contents of this BodyContent into a Writer.

  还有一个接口就是Interface DynamicAttributes 这个接口的功能是用户可以随意设置标签的参数和值,也叫动态参数


javax.servlet.jsp.tagext
Interface DynamicAttributes


这个接口只有一个方法

Method Summary
 voidsetDynamicAttribute(String uri, String localName, Object value)
          Called when a tag declared to accept dynamic attributes is passed an attribute that is not declared in the Tag Library Descriptor.

 

下面看一下运行的结果

使用了自定义标签后打印出了提交的“人员信息”。

在下一篇中我将详细介绍这些功能是如何实现的,并且说明tld文件的属性配置情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值