• JSP自定义标签开发接口与实现类方法的解读


    一、Tag接口中主要的方法与字段
    1、字段:
    static int EVAL_BODY_INCLUDE
        通过输出流输出标签体中的内容。
    static int EVAL_PAGE
        继续执行页面其余部分内容。
    static int SKIP_BODY
        忽略标签体内容。
    static int SKIP_PAGE
        忽略页面内容。
    
    2、方法:
    int doEndTag()
        执行实例对象的结束标签。
    int doStartTag()
        执行实例对象的开始标签。
    Tag getParent()
        为标签处理类获取自定义标签的父标签。
    void release()
        调用标签处理类去等待释放当前存在的状态。
    void setPageContext(PageContext pc)
        设置当前页面的内容。
    void setParent(Tag t)
        设置标签处理类的父标签。.
    
    Tag接口方法详解:
        JSP引擎将遇到自定义标签时,首先创建标签处理器类的实例对象,然后按照JSP规范定义的通信规则依次调用它的方法。
    
    1、public void setPageContext(PageContext pc)
    	JSP引擎实例化标签处理器后,将调用setPageContext方法将JSP页面的pageContext对象传递给标签处理器,标签处理器以后可以通过这个pageContext对象与JSP页面进行通信。   
    2、public void setParent(Tag t)
    	setPageContext方法执行完后,WEB容器接着调用的setParent方法将当前标签的父标签传递给当前标签处理器,如果当前标签没有父标签,则传递给setParent方法的参数值为null。
    3、public int doStartTag()
    	调用了setPageContext方法和setParent方法之后,WEB容器执行到自定义标签的开始标记时,就会调用标签处理器的doStartTag方法。
    4、public int doEndTag()
    	WEB容器执行完自定义标签的标签体后,就会接着去执行自定义标签的结束标记,此时,WEB容器会去调用标签处理器的doEndTag方法。
    5、public void release()
    	通常WEB容器执行完自定义标签后,标签处理器会驻留在内存中,为其它请求服务器,直至停止web应用时,web容器才会调用release方法。
     
    
    二、IterationTag接口中主要的方法与字段
    	IterationTag接口继承了Tag接口所以其字段与方法除了自己独有的外还保留了从父接口中继承来的。
    1、IterationTag接口中的字段:
    static int EVAL_BODY_AGAIN
        请求重新执行某一部分的标签体。
    2、IterationTag接口中的方法:
    int doAfterBody()
        执行或重复执行标签体。
    
    从Tag接口中继承的字段:
        EVAL_BODY_INCLUDE, EVAL_PAGE,SKIP_BODY, SKIP_PAGE
    从Tag接口中继承的方法:
        doEndTag, doStartTag, getParent, release,setPageContext, setParent
    
    	
    	
    三、BodyTag接口中主要的方法与字段
        BodyTag接口继承了Iteration接口,除了保有从它的父接口中继承来的字段和方法外还有自己独有的字段和方法。
    
    1、 BodyTag接口中的字段
    static int EVAL_BODY_BUFFERED
        创建一个新的缓冲区去存放标签体的主体内容。
    static int EVAL_BODY_TAG
        不赞成使用的字段。在Java JSP API 1.2后已用BodyTag.EVAL_BODY_BUFFEREDor IterationTag.EVAL_BODY_AGAIN替代了该字段的使用。
    
    2. BodyTag接口中的方法
    void doInitBody()
        对标签体内容进行初始化。
    void setBodyContent(BodyContent b)
        设置标签体内容的值。
    从其直接父接口ItrationTag中继承来的字段:
        EVAL_BODY_AGAIN
    从Tag接口中继承来的字段:
    	EVAL_BODY_INCLUDE,EVAL_PAGE,SKIP_BODY,SKIP_PAGE
    从其直接父接口ItrationTag中继承来的方法:
        doAfterBody
    从Tag接口中继承来的方法:
       doEndTag,doStartTag,getParent,release,setPageContext,setParent
       
       
    四、TagSurpport类中主要的方法与字段
    1、TagSurpport类中的字段:
    protected  java.lang.String id
        自定义标签的id属性值,或空值
    protected PageContext pageContext
        页面内容。
    2. TagSurpport类中的方法:
    int doAfterBody()
        默认的执行标签体。
    int doEndTag()
        默认的执行结束标签并返回 EVAL_PAGE.
    int doStartTag()
        默认的执行开始标签并返回 SKIP_BODY.
    static Tag findAncestorWithClass(Tag from,java.lang.Class klass)
        查找一个最接近被给定类型的实例         
    java.lang.String getId()
        获取标签id属性的值否则值为空。
    Tag getParent()
        获取自定义标签的父标签。
    java.lang.Object getValue(java.lang.String k)
        根据给定的键获取值。
    java.util.Enumeration getValues()
        通过标签处理类获取枚举值。
    void release()
        等待释放当前的状态。.
    void removeValue(java.lang.String k)
        移除所给定键的值。
    void setId(java.lang.String id)
        为标签设置id属性。
    void setPageContext(PageContextpageContext)
        设置页面内容。
    void setParent(Tag t)
        设置父标签的值。
    void setValue(java.lang.String k, java.lang.Object o)
        根据所给定的键设置值。
    从Itration接口中继承的字段:
    	EVAL_BODY_AGAIN
    从Tag接口中继承的字段:
    	EVAL_BODY_INCLUDE,EVAL_PAGE,SKIP_BODY,SKIP_PAGE
    从Object中继承的方法:
    	clone, equals, finalize, getClass,hashCode, notify, notifyAll, toString, wait, wait, wait
    
    	
    五、TagSurpport类中主要的方法与字段
    1、TagSurpport类中主要字段
    protected BodyContent bodyContent
        当前标签体的内容。
    2、 TagSurpport类中主要方法
    int doAfterBody()
        当执行完标签体后不再重复执行标签体内容,而是继续执行页面内容。
    int doEndTag()
        默认执行结束标签体返回值为 EVAL_PAGE.
    void doInitBody()
    	当第一次执行标签体时就初始化标签体。
    int doStartTag()
        默认执行开始标签返回值为 EVAL_BODY_BUFFERED.
    BodyContent getBodyContent()
        获取当前的页面内容。
    JspWriter getPreviousOut()
        获取之前的输出。
    void release()
        释放当前状态。
    void setBodyContent(BodyContent b)
        设置页面内容。
    	
    用BodyTagSupport类主要方法详解:
    BodyTagSupport类中增加了两个方法:
    setBodyContent(BodyContent bc)
    	容器在执行这个标签处理类的实例时,将调用该方法,把标签主体返回的内容缓存在BodyContent类的实例中。BodyContent除了从父类JspWriter继承提供用于向响应体中写入文本的方法,还提供了用于获取它缓冲的标签体内容。
    doInitBody()
    	计算标签主体之前调用该方法进行初始化共,可以向bodyContent对象中写入初始内容,这些内容会放置在标签主体内容之前。
    
     
    BodyContent类专门用于缓存标签主体返回的内容,包括静态文本以及由嵌套标签或脚本元素所创建的动态内容。
    
    从TagSupport类中继承的字段:
    	id,pageContext
    从BodyTag类中继承的字段:
    	EVAL_BODY_BUFFERED,EVAL_BODY_TAG
    从BodyTag接口中继承的字段:
    	EVAL_BODY_AGAIN
    从Tag接口中继承的字段:
    	EVAL_BODY_INCLUDE,EVAL_PAGE,SKIP_BODY,SKIP_PAGE
    从TagSupport类中继承的方法:
    	findAncestorWithClass,getId,getParent,getValue,getValues,removeValue,setId,setPageContext,setParent,setValue
    从Object类中继承的方法:
    	clone,equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait,wait
    从Tag接口中继承的方法:
    	getParent,setPageContext,setParent
    

  • 相关阅读:
    总结7.19 laravel验证码
    java学习day74--Redis常用命令
    java学习day74--JT项目12(Redis缓存/spring boot整合redis)
    java学习day73-JT项目11(数据库高可用/读写分离/负载均衡)
    疯狂学java的第27天
    xtrabackup全备+binlog模拟slave恢复到某一时间点-启用GTID
    读写文件
    goroutine、chan、select、互斥、读写互斥
    接口

  • 原文地址:https://www.cnblogs.com/lizhangqu/p/4234554.html
Copyright © 2020-2023  润新知