在探索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页面中调用此方法在哪里?