JSP Processing
Just as a
web server needs a servlet container to provide an interface to
servlets, the server needs a
JSP
container to process JSP pages. The JSP
container is responsible for intercepting requests for JSP pages. To
process all JSP elements in the page, the container first turns the
JSP page into a servlet (known as the
JSP
page
implementation
class). The conversion is pretty
straightforward; all template text is converted to println(
)
statements similar to the ones in the handcoded servlet
shown in Example 3-1, and all JSP elements are
converted to Java code that implements the corresponding dynamic
behavior. The container then compiles the servlet class.
Converting the JSP page to a servlet and compiling the servlet form the translation phase. The JSP container initiates the translation phase for a page automatically when it receives the first request for the page. Since the translation phase takes a bit of time, the first user to request a JSP page notices a slight delay. The translation phase can also be initiated explicitly; this is referred to as precompilation of a JSP page. Precompiling a JSP page is a way to avoid hitting the first user with this delay. It is discussed in more detail in Chapter 17.
The JSP container is also responsible for invoking the JSP page implementation class (the generated servlet) to process each request and generate the response. This is called the request processing phase. The two phases are illustrated in Figure 3-3.
Get JavaServer Pages, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.