jsp标签中的bodyContent和jspBody

    JSP有两种标签,一类是继承自TagSupport或者BodyTagSupport的传统标签,一种是继承自SimpleTagSupport的简单标签。        

  bodyContent是BodyTagSupport里面的实例变量,其类型是javax.servlet.jsp.tagex.BodyContent,而javax.servlet.jsp.tagex.BodyContent继承自javax.servlet.jsp.JspWriter,因此bodyContent实际上就是一个输出流。在传统标签中,由Servlet容器主动负责执行标签的主体类容,标签处理类不用理会标签主体的执行,而执行结果就会缓存到bodyContent里面(如果自定义标签继承自BodyTagSupport的话)。通过BodyContent.getString()方法我们可以取到最终的执行结果。

    jspBody是SimpleTagSupport里面的实例变量,其类型是javax.servlet.jsp.tagex.JspFragment。JspFragment封装了页面的一段jsp代码。在调用简单标签的doTag方法之前,Servlet容器把标签主体封装成JspFragment存到jspBody之中,由于Servlet容器并不主动执行简单标签的主体,所以必须有我们在标签处理类的doTag方法中调用JspFragment.invoke()方法来使得标签主体得以执行。

你可能感兴趣的:(content)