JSP标签库 
除了JSP预定义动作之外,开发者还可以使用JSP标签扩展API添加他们自定义的动作。开发者写一种实现一个标签的界面和一个标签库的XML描述文件的JAVA类,这就能指定标签和实现标签的JAVA类请看如下JSP: <%@ taglib uri="mytaglib.tld" prefix="myprefix" %>
 ...
<myprefix:myaction> <%-- the start tag %>
 ...
</myprefix:myaction> <%-- the end tag %>
...
JSP编译器将会载入mytaglib.tld这个XML文件,然后可以看到标签myaction由JAVA类MyActionTag实现。当该标签首次在文件中使用时,将会创建一个MyActionTag的实例。然后(而且当每次该标签被使用时),当出现开始标签时,将会调用doStartTag()方法,根据开始标签的结果,来决定如何处理标签的主体。主体是指开始标签和结束标签之间的文本。这个doStartTag()方法将会返回如下之一: SKIP_BODY - 标签之间不做处理。 
EVAL_BODY_INCLUDE - 对标签之内主体进行赋值。 
EVAL_BODY_TAG - 对标签之内主体进行赋值并把结果输出到流(保存在标签的主体内容属性中)。 
注意: 如果标签扩展了 BodyTagSupport 类,当主体被执行时会在调用doEndTag()之前调用doAfterBody()方法。该方法用于实现循环结构。 
当结束标签出现时,它会调用doEndTag()方法,该方法会返回如下两做之一: EVAL_PAGE - 表示JSP文件的剩余部份将会被执行。this indicates that the rest of the JSP file should be processed. 
SKIP_PAGE - 表示将不会再有更多执行操作。当前JSP页交出控制权。就象在转发动作中的作用一样。 
上述 myaction 标签tag 会有一个类似下面例子的用于实现的类: public class MyActionTag extends  TagSupport {
    //Releases all instance variables.
    public void release() {...}    public MyActionTag() { ... }    //called for the start tag
    public int doStartTag() { ... }    //called at the end tag   
}
Add Body Tag description. 拷贝自:http://wiki.ccw.com.cn/JSP

解决方案 »

  1.   

    EVAL_BODY_BUFFERED表示标签体的内容应该被处理,所有处理结果都将保存在BodyContent类中。
    SKIP_BODY表示忽略标签体内容,将操作权交给doEndTag()方法。
    EVAL_BODY_AGAIN表示重复执行标签体内容,会再次调用doAfterBody()方法,直到出现SKIP_BODY为止。
    EVAL_BODY_INCLUDE表示正常执行标签体操作,但不处理任何运算。
    SKIP_PAGE表示所有的JSP上的操作都将停止,会将所有的输出内容立刻显示在浏览器上。
    EVAL_PAGE表示正常执行JSP页面。
    EVAL_BODY_TAG表示对标签之内主体进行赋值并把结果输出到流(保存在标签的主体内容属性中)。