JSP入门 taglib

时间:2022-03-02 10:50:50

自定义标签库(taglib),将原本需要写在jsp中的java代码封装起来,成为可复用的组件。

taglib的写法和jsp动作(action)很相似,是由taglib前缀,冒号,标签名三者的组合体。其中taglib前缀是用jsp指令(direction)定义的。

<%@ taglib uri="WEB-INF/tld/lingirl.tld" prefix="lingirl" %>

1.第一步,让ForTag继承BodyTagSupport。

BodyTagSupport专门用来制作带内容的taglib,它为我们提供了几个好用的方法来处理数据。

2.第二步,为ForTag设置两个自定义参数:var和items。

对应标签中的<lingirl:for var="contact" items="${list}">

3.第三步,让ForTag处理标签内容。

    public int doStartTag() throws JspException {
this.index = 0;
if (this.process()) {
return EVAL_BODY_INCLUDE;
}
else
{
return EVAL_PAGE;
}
} public int doAfterBody() { if(this.process()) { return EVAL_BODY_AGAIN;
}
else
{
return EVAL_PAGE;
}
}

为了实现循环,我们需要监听两个事件。

doStartTag()方法在标签开始时执行,要记住每次都要对类进行初始化,避免上一次的遗留数据对操作造成影响。然后判断是否

有数据需要处理,如果有,则返回EVAL_BODY_INCLUDE开始处理标签里的内容,如果没有,返回

EVAL_PAGE跳过标签内容执行标签下面的内容。

doAfterBody()方法在每次处理完标签内部内容后执行,判断循环是否已经结束,如果可以继续循环,返回

EVAL_BODY_AGAIN用循环得到新的数据再次处理标签内部内容,如果循环结束就返回

EVAL_PAGE结束标签。

第四步,进行循环时的处理

经过如此一番周折,ForTag可以从标签获得参数,并对数据进行循环处理了。

最后一步还要为它编写tld(taglibdefinition)标签库定义文件,提供给jsp指令(direction)引用。

sun就为标签库定义了一套标准,叫做jstl(java standard taglib)

java标准标签库,可以去http://jakarta.apache.org/taglibs/index.html下载apache实现的jstl