如果发现文章中的图片无法显示请点击这里:http://tony-action.blog.sohu.com/19732140.html
相信大家在编辑Jsp页面的时候用到过“自定义标签”,我简单的介绍一下自定义标签
javax.servlet.jsp.tagext
javax.servlet.jsp.tagext
javax.servlet.jsp.tagext
好了所需要的类和接口都看到了,大家一起看一下代码来一步一步的分析这些接口和类的作用。
非常简单的index.jsp页面
显示用户信息的Logon.jsp(名字是我之前做另外一个试验是的,没有改过来请见谅叫viewinfo.jsp比较好)
其中比较重要的是这一句
下面是util.tld文件,这是“自定义标签”和Jsp引擎通信所必须的文件
下面是实现标签功能的类TagUtil.java
所有的代码都在这里,还要再把关于下面是BodyTagSupport类的方法,这个类实现了Tag、BodyTag和InterationTag接口便于我们直接使用所有功能
javax.servlet.jsp.tagext
Class BodyTagSupport
java.lang.Object javax.servlet.jsp.tagext.TagSupport javax.servlet.jsp.tagext.BodyTagSupport
-
All Implemented Interfaces:
- BodyTag, IterationTag, JspTag, Serializable, Tag
一个成员变量bodyContent
Field Summary | |
protected BodyContent | bodyContent The current BodyContent for this BodyTag. |
方法
Method Summary | |
int | doAfterBody() After the body evaluation: do not reevaluate and continue with the page. |
int | doEndTag() Default processing of the end tag returning EVAL_PAGE. |
void | doInitBody() Prepare for evaluation of the body just before the first body evaluation: no action. |
int | doStartTag() Default processing of the start tag returning EVAL_BODY_BUFFERED. |
BodyContent | getBodyContent() Get current bodyContent. |
JspWriter | getPreviousOut() Get surrounding out JspWriter. |
void | release() Release state. |
void | setBodyContent(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 java.io.Writer javax.servlet.jsp.JspWriter javax.servlet.jsp.tagext.BodyContent
BodyContent的方法
Method Summary | |
void | clearBody() Clear the body without throwing any exceptions. |
void | flush() Redefined flush() so it is not legal. |
JspWriter | getEnclosingWriter() Get the enclosing JspWriter. |
abstract Reader | getReader() Return the value of this BodyContent as a Reader. |
abstract String | getString() Return the value of the BodyContent as a String. |
abstract void | writeOut(Writer out) Write the contents of this BodyContent into a Writer. |
还有一个接口就是Interface DynamicAttributes 这个接口的功能是用户可以随意设置标签的参数和值,也叫动态参数
javax.servlet.jsp.tagext
Interface DynamicAttributes
这个接口只有一个方法
Method Summary | |
void | setDynamicAttribute(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文件的属性配置情况。