<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
	"docbook4.4/docbookx.dtd">
<!--http://www.docbook.org/xml/4.4/docbookx.dtd-->
<article id="jspservletlifecycle">
	
	<articleinfo>
		<title>JSP &amp; Servlet Life Cycle</title> <author>
		<firstname>Kevin</firstname>
		<surname>Nilson</surname>
		
		<affiliation>
			<orgname>http://www.javaclimber.com</orgname>
		</affiliation> </author>
		
		<abstract>
			<simpara>Interview Presentation for: Part-time - Computer and Information
				Science Instructor, Monday December 19th, 2005</simpara>
		</abstract>
		
	</articleinfo>
	
	<sect1 id="resources">
		<title>Additional Resources</title>
		<itemizedlist id="links">
			<listitem>
				<simpara><ulink
						url="http://java.sun.com/j2ee/1.4/docs/api/index.html">
					JavaTM 2 Platform Enterprise Edition, v 1.4 API Specification Packages, Sun Microsystems</ulink>
					</simpara>
			</listitem>

			<listitem>
				<simpara><ulink
						url="http://java.sun.com/products/servlet/articles/tutorial/">
					Story of a Servlet: An Instant Tutorial, Sun Microsystems</ulink>
					</simpara>
			</listitem>
			
			<listitem>
				<simpara><ulink
						url="http://ant.apache.org/manual/OptionalTasks/jspc.html">
					Ant JSPC</ulink></simpara>
			</listitem>
			<listitem>
				<simpara><ulink
						url="http://www.oreilly.com/catalog/jservlet/chapter/ch03.html">
					Java Servlet Programming, O'Reilly, Chapter 3: The Servlet Life
					Cycle</ulink></simpara>
			</listitem>
			<listitem>
				<simpara><ulink
						url="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html">
					The J2EE 1.4 Tutorial, Sun Microsystems</ulink></simpara>
			</listitem>
		</itemizedlist>
		
	</sect1>
	
	<sect1 id="JSPtoServlet">
		<title>JSP to Servlet Source Code Generation (Translation)</title>
		<sect2 id="jsp">
			<itemizedlist id="jspinfo">
				<listitem>
					<simpara>Container Generates Servlet Source Code from
						JSP</simpara>
				</listitem>
				<listitem>
					<simpara>Source is often generated &amp; compiled once upon first
						request (Tomcat)</simpara>
				</listitem>
				<listitem>
					<simpara>Source is generated &amp; compiled at
						deployment</simpara>
				</listitem>
				<listitem>
					<simpara>Source is often generated (Translation) &amp; compiled before
						deployment(JSPC)</simpara>
				</listitem>
			</itemizedlist>
			<programlisting>
<![CDATA[				
<html>
  <head><title>Hello World</title><head>
  <body>
    <h1>Hello World!!!</h1>
    <br/>
    Today is <%=new java.util.Date()%>
  </body>
</html>
]]>
			</programlisting>
			
			<simpara> *** public abstract class HttpJspBase extends
				javax.servlet.http.HttpServlet implements
				javax.servlet.jsp.HttpJspPage</simpara>
			
			<simpara><![CDATA[***HelloWorld_jsp***]]></simpara>
		</sect2>
	</sect1>
	
	<sect1>
		<title>Servlet Life Cycle</title>
		<sect2 id="ServletAllSteps">
			<title>Overview</title>
			<itemizedlist id="servletsteps">
				<listitem>
					<simpara>constructor</simpara>
				</listitem>
				<listitem>
					<simpara>init</simpara>
				</listitem>
				<listitem>
					<simpara>service</simpara>
				</listitem>
				<listitem>
					<simpara>destroy</simpara>
				</listitem>
			</itemizedlist> 
			
			<simpara><![CDATA[***HelloWorldServlet***]]></simpara>
			
		</sect2>
		
		<sect2 id="construct">
			<title>Constructor</title>
			<itemizedlist id="constructorinfo">
				<listitem>
					<simpara>Typically not used</simpara>
				</listitem>
				<listitem>
					<simpara>Container may call on startup or with first
						request</simpara>
				</listitem>
				<listitem>
					<simpara>One Servlet instance or a pool handles all
						requests</simpara>
				</listitem>
			</itemizedlist>
			
		</sect2>
		
		<sect2 id="init">
			<title>Init</title>
			<itemizedlist id="initinfo">
				<listitem>
					<simpara>Called right before first request is processed</simpara>
				</listitem>
				<listitem>
					<simpara>Used for one time initializations:</simpara>
					<itemizedlist id="initusesinfo">
						<listitem>
							<simpara>Reading &amp; loading configuration</simpara>
						</listitem>
						<listitem>
							<simpara>???</simpara>
						</listitem>
					</itemizedlist>
				</listitem>
				<listitem>
					<simpara>jspInit( ) in JSP</simpara>
				</listitem>
				
			</itemizedlist>
		</sect2>
		
		<sect2 id="getpost">
			<title>Service</title>
			<itemizedlist id="getpostinfo">
				<listitem>
					<simpara>Called with every request</simpara>
				</listitem>
				<listitem>
					<simpara>service handles request and delegates to other methods:
						doPost, doGet, ...???</simpara>
					<itemizedlist id="detailpostinfo">
						<listitem>
							<simpara>doPost handles POST request</simpara>
						</listitem>
						<listitem>
							<simpara>doGet handles GET request</simpara>
						</listitem>
					</itemizedlist>
				</listitem>
				<listitem>
					<simpara>_jspService(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) in JSP, body of JSP</simpara>
				</listitem>
				
			</itemizedlist>
			
		</sect2>
		
		<sect2 id="destroy">
			<title>Destroy</title>
			<itemizedlist id="destroyinfo">
				<listitem>
					<simpara>Called once when finished using Servlet</simpara>
				</listitem>
				<listitem>
					<simpara>Used to clean up resources</simpara>
				</listitem>
				<listitem>
					<simpara>jspDestroy( ) in JSP</simpara>
				</listitem>
				
			</itemizedlist>
		</sect2>
	</sect1>
	
	<sect1 id="session">
		<title>Session Management</title>
		<sect2 id="sessionoverview">
			<title>HTTPSession Creation</title>
			<itemizedlist id="sessioninfo">
				<listitem>
					<itemizedlist id="jspsessioninfo">
						<simpara>JSP</simpara>
						<listitem>
							<simpara>On request it will create an instance of
								HTTPSession for the user if one does not exist</simpara>
						</listitem>
						<listitem>
							<simpara>If you do not want an instance of HTTPSession to be
								created use:
								&lt;%@ page session="false" %&gt; </simpara>
						</listitem>
					</itemizedlist>
					
				</listitem>
				<listitem>
					<itemizedlist id="servletsessioninfo">
						<simpara>Servlet</simpara>
						<listitem>
							<simpara>On request it will not create an instance of
								HTTPSession</simpara>
						</listitem>
						<listitem>
							<simpara>HTTPSession can be created with
								request.getSession( ) or
								request.getSession(true)</simpara>
						</listitem>
					</itemizedlist>
				</listitem>
			</itemizedlist>
		</sect2>
	</sect1>
	
	<sect1 id="questions">
		<title>Review</title>
<figure>
<title>JSP &amp; Servlet UML1</title>
<mediaobject>
<imageobject>
<imagedata fileref="/jspservletlifecycle/images/JSPServletClassDiagram.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>JSP &amp; Servlet UML2</phrase>
</textobject>
</mediaobject>
</figure>
				<itemizedlist id="presentationquestions">
			<title>Essay Questions</title>
			<listitem>
				<simpara>What is the purpose of init and destroy?</simpara>
			</listitem>
			<listitem>
				<simpara>When is a JSP converted to a Servlet?</simpara>
			</listitem>
			<listitem>
				<simpara>When are HTTPSession Instances created?</simpara>
			</listitem>
			<listitem>
				<simpara>When are the steps in the Servlet Life Cycle?</simpara>
			</listitem>
		</itemizedlist>
	</sect1>
	
	<sect1 id="finish">
		<title>Thank You</title>
		<para>Any Questions?</para>
		<simpara>Feel Free to contact me anytime at <ulink
				url="http://www.javaclimber.com">
			http://www.javaclimber.com</ulink></simpara>
		
		<sect2 id="docbook">
			<title>How was this presentation made?</title>
			
			<simpara>DocBook</simpara>
			<para> According to the official DocBook web site,
				<blockquote>
					<attribution>DocBook.org</attribution>
					<para> DocBook is a general purpose XML and SGML document type
						particularly well suited to books and papers about computer
						hardware and software (though it is by no means limited to these
						applications). </para>
				</blockquote> </para>
		</sect2>
	</sect1>
</article>