The Javadocs of the Servlet spec (javax.servlet.jsp.tagext) give a pretty good idea of the lifecycle of the different tag classes. However, you might indeed be best of reading a book first.
Martin -----Oorspronkelijk bericht----- Van: Derek [mailto:[EMAIL PROTECTED] Verzonden: dinsdag 27 april 2004 4:09 Aan: Tag Libraries Users List Onderwerp: Re: Tag Object Model? Ok, I would highly recommend O'Reilly's Java Server Pages -- it's half JSP and half how to write custom JSPs. It goes through the life-cycle of the various custom tag implementations. Derek On Apr 26, 2004, at 8:09 PM, Steven J. Owens wrote: >> --- Glenn Nielsen <[EMAIL PROTECTED]> wrote: >>> It sounds like you are referring to how the Java source code >>> for a JSP is generated. This is based on the JSP spec and >>> the vendors implementation of it. If you are using Tomcat > > Somewhat; while I'm most particularly interested in the taglib > object model, I imagine it'd only make sense in the context of the > general jsp object model. > >>> you might want to ask on the tomcat-user or tomcat-dev >>> lists if such a thing exists for Jasper which implements >>> JSP pages in Tomcat. >>> >>> If you are interested in writing custom tags the JSP >>> spec is your best source of information. > > The spec does cover this topic, specifically in chapter 11, the > JSP Container, and chapter 12, the Core API, it's a bit too much > trees, not enough forest. Chapter 12 especially discusses each of the > various objects but doesn't provide a coherent overview of how they're > typically set up and invoked. Likewise, chapter 13, the Tag Extension > API, details each of the objects, but doesn't give a summary of how > the objects are set up and invoked. > > Don't get me wrong, I live sun's specs, they're a dream compared > to most other vendor docs, but I'm still looking for something a bit > more organizational in approach. > > On Mon, Apr 26, 2004 at 07:16:11AM -0700, Derek wrote: >> Of course, there are JavaDocs available for JSP in Tomcat: >> >> http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jspapi/index.html > > Yup, I'm looking for something that would discuss these objects > and how they interact with each other and with their container. For > example, in the servlet world what I'm looking for would look sort of > like this: > > 1) The browser sends a request for a given URL to the servlet engine. > > 2) The servlet engine checks the URL mappings which are defined in > each webapp's WEB-INF/web.xml to see which servlet should answer the > request. > > 3) If that servlet hasn't been invoked before, the servlet engine > instantiates the servlet class, otherwise it gets the existing instance > of the servlet class. > > 4) When a servlet is first instantiated, the engine invokes > servlet.init() method, passing in a ServletContext object that > contains the servlet engine configuration information. The servlet's > init() method does any setup necessary. If it can't do the setup > necessary, it can throw ServletException to tell the engine > something's wrong. > > There's a corresponding servlet.destroy() method that gets called when > the servlet engine is shutting down or otherwise taking the servlet > out of service. > > 5) The servlet engine wraps the incoming request in an > HttpServletRequest object, which includes properties for various > headers and attributes, parameter parsing, methods for using the > servlet engine session and other scaffolding, and the input stream of > the request. > > The servlet engine wraps the output stream in an HttpServletResponse, > which includes the output stream, properties for setting response > headers, > and controlling how output sent to the output stream will be buffered, > and > the output stream itself. > > 6) The servlet engine invokes the servlet's appropriate doFoo() method, > which is usually doGet() or doPost(), but depends on what HTTP action > the request specified. The HttpServletRequest and HttpServletResponse > are passed in as parameters in the method call to doFoo(). > > Note that the servlet's doFoo() methods MUST be multi-thread-safe, > since they will be hit by multiple threads simultaneously. In a > nutshell this means that the servlet shouldn't touch any instance > variables (unless you know what you're doing). Multi-threaded > programming is not trivial to explain, but there are several tactics > that the servlet spec is designed to make it easier, we'll get into > those later. > > 7) The servlet can do whatever processing it needs to do, and then > send back response headers by using HttpServletResponse's setHeader() > method, and send back HTML using the java.io.PrintWriter returned by > HttpServletResponse's getWriter() method. > > Note that generally you have do any header setting before you start > sending output back through the PrintWriter. This is because the > HttpServletResponse object is modeling the underlying process, and to > a degree obscuring it. Normally with HTTP you send back to the > browser a set of header lines, followed by a blank line as a > separator, followed by the body content (the result looks much like a > typical email). > > A lot of actions, like client-side redirects, are handled by sending > specific headers back to the browser. You can't send body content > without sending the blank line separator. Once the blank line is > sent, you can't send any more headers. So do any header manipulation > and figure out if you'll need to redirect before you start sending > body content to the browser. If you mess this up, various methods > like response.sendRedirect() will throw IllegalStateException. > > Note: Servlet engines may buffer body content output, but you can't > control that or count on it. > > 8) When the servlet's doFoo() method is done sending output, it just > returns. > > > -- > Steven J. Owens > [EMAIL PROTECTED] > > "I'm going to make broad, sweeping generalizations and strong, > declarative statements, because otherwise I'll be here all night and > this document will be four times longer and much less fun to read. > Take it all with a grain of salt." - Me at http://darksleep.com > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]