JSP页面的已编译JAVA类中的invoke()方法的说明

时间:2018-03-06 03:13:03

标签: jsp jsp-tags custom-tags

在探索JSP页面的已编译Java文件时,我遇到了 invoke()方法。这个方法简单有一个switch case,根据discriminator变量的值,它执行 invoke0() invoke1()方法。这种调用方法的意图是什么,它调用仅由单位数后缀区分的方法?下面是 invoke()方法的编译代码(仅供参考)。

public void invoke( java.io.Writer writer )
  throws javax.servlet.jsp.JspException
{
  javax.servlet.jsp.JspWriter out = null;
  if( writer != null ) {
    out = this.jspContext.pushBody(writer);
  } else {
    out = this.jspContext.getOut();
  }
  try {
    Object _jspx_saved_JspContext = this.jspContext.getELContext().getContext(javax.servlet.jsp.JspContext.class);
    this.jspContext.getELContext().putContext(javax.servlet.jsp.JspContext.class,this.jspContext);
    switch( this.discriminator ) {
      case 0:
        invoke0( out );
        break;
      case 1:
        invoke1( out );
        break;
    }
    jspContext.getELContext().putContext(javax.servlet.jsp.JspContext.class,_jspx_saved_JspContext);
  }
  catch( java.lang.Throwable e ) {
    if (e instanceof javax.servlet.jsp.SkipPageException)
        throw (javax.servlet.jsp.SkipPageException) e;
    throw new javax.servlet.jsp.JspException( e );
  }
  finally {
    if( writer != null ) {
      this.jspContext.popBody();
    }
  }
}

此外, invoke()方法的出现只有一次。在JSP页面中调用此方法在哪里?

0 个答案:

没有答案