ogeh,
I support most of it. However, as regards Construct 3, if you look at page 77 of the JSP 1.2 specification it states that the default value for the flush attribute is false:
"The flush attribute controls flushing. If true, then, if the page output is buffered and the flush attribute is given a �true� value, then the buffer is flushed prior to the inclusion, otherwise the buffer is not flushed. The default value for the flush attribute is �false�"
As regards Construct 1, neither the Servlet 2.3 specification nor Javadocs specify that an automatic flush of the response output stream occurs before the content of the other component is included. I found through
testing that
Tomcat 4.1.24 indeed does not flush the buffer and send the status code and headers to the client. Specifically, after an rd.include() you can still do response.sendError(404, "Some error") without raising an exception. However, if you execute response.flushBuffer() then response.sendError(404, "Some error"), a java.lang.IllegalStateException will be raised.
Therefore, unless there is a hidden flush mechanism that does not commit the response, I still contend that the buffer is not flushed before the rd.include() and the empirical evidence as stated above seems to bear this out.
Let me know what you think.
Bob Kerfoot