IterationTag接口继承了Tag接口,增加了一个方法和一个静态常量分别是:
//javax.servlet.jsp.tag
public interface IterationTag extends Tag
{
public final static int EVAL_BODY_AGAIN = 2; //作为doAfterBody()的返回值,表示重复执行标签体内容
/*当容器执行标签体内容后,遇见结束标签前执行,根据返回值来确定流程
* 可选值:EVAL_BODY_AGAIN: 重复执行标签体
* SKIP_BODY:不再执行标签体
*/
int doAfterBody() throws JspException;
}
由此,当前接口中可供访问的就有5个静态的常量了。由此可见,IterationTag接口增加了重复执行标签体内容的功能,仅此而已哦.
根据tag对象的生命周期图,很容易知道该方法执行的时机和相关流程。在此不做描述。
类TagSupport实现了IerationTag接口,自己写的标签可以直接继承该类。
查询该类的源码:
package javax.servlet.jsp.tagext;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
public class TagSupport implements IterationTag, Serializable {
protected String id;
protected PageContext pageContext;
private Tag parent;
private Hashtable<String, Object> values;
public static final Tag findAncestorWithClass(Tag from, Class klass)
{
boolean isInterface = false;
if (from == null ||klass == null ||(!Tag.class.isAssignableFrom(klass) &&!(isInterface = klass.isInterface())))
{ return null;}
for (;;)
{
Tag tag = from.getParent();
if (tag == null)
{ return null;}
if ((isInterface && klass.isInstance(tag)) || klass.isAssignableFrom(tag.getClass()))
return tag;
else
from = tag;
}
}
//空的构造方法
public TagSupport() { }
//默认是返回 跳过标签体,子类需重写该方法
public int doStartTag() throws JspException {
return SKIP_BODY;
}
//默认是返回 执行标签后的JSP代码
public int doEndTag() throws JspException {
return EVAL_PAGE;
}
//默认是返回 不重复执行标签体
public int doAfterBody() throws JspException {
return SKIP_BODY;
}
//释放标签对象
public void release() {
parent = null; //父标签为空
id = null;
if( values != null )
{
values.clear();
}
values = null;
}
//设置父标签
public void setParent(Tag t) {
parent = t;
}
//返回父标签对象或者null
public Tag getParent() {
return parent;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
//设置当前页面上下文
public void setPageContext(PageContext pageContext) {
this.pageContext = pageContext;
}
public void setValue(String k, Object o) {
if (values == null)
{
values = new Hashtable<String, Object>();
}
values.put(k, o);
}
public Object getValue(String k) {
if (values == null){
return null;
}
else {
return values.get(k);
}
}
public void removeValue(String k) {
if (values != null) {
values.remove(k);
}
}
public Enumeration<String> getValues() {
if (values == null) {
return null;
}
return values.keys();
}
}
分享到:
相关推荐
- **接口**:自定义标签通常实现`javax.servlet.jsp.tagext.Tag`接口或者其子接口`javax.servlet.jsp.tagext.SimpleTag`。`Tag`接口用于简单的标签,而`SimpleTag`接口则适用于那些没有开始和结束标签的简单标签。 ...
2. **标签处理程序(Tag Handler)**:与自定义标签对应的Java类,实现了`javax.servlet.jsp.tagext.Tag`接口或其子接口。当JSP引擎遇到自定义标签时,会实例化这个类并调用相应的方法。 3. **标签文件(Tag File)...
在JavaServer Pages (JSP)技术中,自定义标签是扩展JSP功能的重要方式,它允许开发者创建可重用的组件,类似于HTML标签但具备更强大的功能。自定义标签可以包含复杂的业务逻辑,并且可以通过XML样式的语法进行调用,...
2. **标签处理类(Tag Handler Class)**:这是Java类,实现了`javax.servlet.jsp.tagext.Tag`接口或其子接口,如`SimpleTag`。这个类包含了自定义标签的逻辑实现。在`Demo1_JspTag`中,可能会有一个名为`...
博文链接:https://di201yao.iteye.com/blog/187584
自定义标签是JSP中的一个重要特性,它允许我们创建自己的标签库,以更直观、易读的方式来表达业务逻辑或复杂的功能。这些标签可以像HTML标签一样使用,但其行为由Java代码控制,从而提高了代码的封装性和可维护性。 ...
**JSP自定义标签**是JavaServer Pages(JSP)技术中的一个重要特性,它允许开发者扩展JSP语言,创建自己的可重用组件。通过自定义标签,开发人员可以编写更符合HTML语法、易于理解和维护的代码,同时隐藏复杂的Java...
2. **实现标签处理程序**:标签处理程序是Java类,实现了`javax.servlet.jsp.tagext.Tag`接口或者其子接口。这个类包含了标签的逻辑,当JSP容器遇到自定义标签时,会调用这些方法来执行相应的动作。 3. **在JSP页面...
自定义标签是Struts2框架中的一个重要特性,它允许开发者创建自己的标签库,以更直观、易读的方式在JSP页面中处理业务逻辑。下面将详细介绍Struts2自定义标签的相关知识点。 首先,理解自定义标签的作用。在传统的...
**JSP20Examples-自定义标签** JSP(JavaServer Pages)是Java技术中用于构建动态网页的应用程序,它允许开发者将静态HTML与动态Java代码结合在一起,以实现更灵活的网页设计。在JSP20Examples这个压缩包中,我们...
在这个“易语言源码易语言自定义打印源码.rar”压缩包中,包含的是一份使用易语言编写的自定义打印功能的源代码。这份源代码对于学习易语言的开发者来说,是非常有价值的参考资料,它可以帮助我们理解和掌握如何在...
【自定义TLD标签库源码加视频】这个主题涵盖了Java服务器端开发中的一个重要概念——自定义标签库(Tag Library)及其源代码分析。在Java Web应用开发中,TLD(Tag Library Descriptor)文件用于定义自定义JSP标签,...
2. **编写标签处理类**:在Java源代码中创建一个类,实现`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.SimpleTagSupport`接口。这个类负责处理标签的生命周期方法,如`doStartTag()`、`...
它们是JSP(JavaServer Pages)标准标签库(JSTL)的一种扩展,允许开发者创建符合特定业务逻辑的自定义组件,从而将视图层与业务逻辑分离,实现MVC架构。本文将深入探讨这两个概念以及如何使用`taglib`进行定义和...
微信开发学习总结(四)——自定义菜单——自定义菜单创建接口——项目源码; 博客:微信开发学习总结(四)——自定义菜单——自定义菜单创建接口; https://blog.csdn.net/qq_29914837/article/details/82928890
在Java Web开发中,自定义标签(Custom Tags)和简单标签(Simple Tags)是两种用于扩展JSP页面功能的重要机制。它们允许开发者创建可重用的、封装良好且易于维护的代码片段,从而提高开发效率和代码质量。下面将...
2. 标签处理类(Tag Handler Class):这是一个实现了`javax.servlet.jsp.tagext.Tag`接口或者其子接口的Java类,负责处理标签的逻辑。 3. JSP页面:在JSP页面中,通过使用自定义标签,可以调用标签处理类中的逻辑。...
基于java的开发源码-生成自定义控件源代码.zip 基于java的开发源码-生成自定义控件源代码.zip 基于java的开发源码-生成自定义控件源代码.zip 基于java的开发源码-生成自定义控件源代码.zip 基于java的开发源码-生成...