Added a parent field to the Tag class to provide a runtime stack.
Added pushBody() and popBody() to PageContext .
Added appendix with an example of compiling a simple JSP page into a servlet that is delivered within a WAR.
Upgraded the javadoc documentation.
Upgraded all the examples.
Added a precompilation protocol.
Reserved all request parameters starting with "jsp."
JSP.E.3.2 Changes
Most Info classes are not to be subclassed; instead their information is now derived completely from the TLD file; TagExtraInfo is the exception.
BodyEvaluation is now called BodyJspWriter and it is a subclass of JspWriter .
Tag is now an abstract class; TagSupport has been removed. NodeData is now called TagData .
Split doBody() into doBeforeBody() and doAfterBody() to simplify programming.
The semantics of the nested JspWriter have changed: now there is only at most one BodyJspWriter per invocation of the action, regardless of how many times the body is evaluated.
Return type of doStartTag() is now an int for better documentation and ease of extensibility.
Added initialize() and release() methods to Tag class; clarified life-cycle requirements.
Substantial cleanup of presentation; revisions to many classes.
JSP.E.3.3 Deletions
Removed the ChildrenMap mechanism.
Removed the flush="false" option in jsp:include as it cannot be implemented on Servlet 2.2.
Removed the proposal for a standard servlet tag for now. Will probably be available in a " utils " tag library.