You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2005/08/23 02:31:18 UTC

svn commit: r239277 - /beehive/trunk/docs/forrest/release/src/documentation/content/xdocs/pageflow/tutorial_pageflow.xml

Author: ekoneil
Date: Mon Aug 22 17:31:16 2005
New Revision: 239277

URL: http://svn.apache.org/viewcvs?rev=239277&view=rev
Log:
Lots more edits in the pageflow tutorial.  There's now a nice intro section about how to setup a tutorial web project that can be broken out into its own separate document (or as part of tutorials/setup.xml).  

BB: self
DRT: build.release


Modified:
    beehive/trunk/docs/forrest/release/src/documentation/content/xdocs/pageflow/tutorial_pageflow.xml

Modified: beehive/trunk/docs/forrest/release/src/documentation/content/xdocs/pageflow/tutorial_pageflow.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/docs/forrest/release/src/documentation/content/xdocs/pageflow/tutorial_pageflow.xml?rev=239277&r1=239276&r2=239277&view=diff
==============================================================================
--- beehive/trunk/docs/forrest/release/src/documentation/content/xdocs/pageflow/tutorial_pageflow.xml (original)
+++ beehive/trunk/docs/forrest/release/src/documentation/content/xdocs/pageflow/tutorial_pageflow.xml Mon Aug 22 17:31:16 2005
@@ -7,43 +7,45 @@
     <body>
         <section id="intro">
             <title>Introduction</title>
+            <p>The Page Flow tutorial is provided as a way to become familiar with NetUI's Page Flow Controllers and JSP tags.  The tutorial 
+               walks through creating, building, and deploying a sample project  Page Flow that uses JavaBeans to submit data from a browser 
+               to the server.</p>
             <section id="goals">
-                <title>Tutorial Goals</title>
-                <p>The Page Flow tutorial is provided as a way to become familiar with NetUI's Page Flow Controllers and JSP tags.  The tutorial 
-                   walks through creating, building, and deploying a sample project  Page Flow that uses JavaBeans to submit data from a browser 
-                   to the server.  In this tutorial, you will learn:</p>
-                <ul>
-                    <li>How to create a basic Page Flow web application.</li>
-                    <li>How to coordinate user navigation with Forward methods.</li>
-                    <li>How to handle data submission and processing with data binding and Form Beans.</li>
-                    <li>How to create a user interface with the &lt;netui> JSP tag library.</li>
-                    <li>How Page Flows help to separate data processing and data presentation.</li>
-                    <li>How to use declarative validation with data submission.</li>
-                    <li>How to collect data from a nested Page Flow and 'return' it to the nesting Page Flow.</li>
-                    <li>How to make an action available to multiple Page Flows.</li>
-                </ul>
+            <title>Tutorial Goals</title>
+            <ul>
+                <li>How to create a basic Page Flow web application.</li>
+                <li>How to coordinate user navigation with Forward methods.</li>
+                <li>How to handle data submission and processing with data binding and Form Beans.</li>
+                <li>How to create a user interface with the &lt;netui> JSP tag library.</li>
+                <li>How Page Flows help to separate data processing and data presentation.</li>
+                <li>How to use declarative validation with data submission.</li>
+                <li>How to collect data from a nested Page Flow and 'return' it to the nesting Page Flow.</li>
+                <li>How to make an action available to multiple Page Flows.</li>
+            </ul>
             </section>
         </section>
-        <section id="step1_begin">
-            <title>Step 1: Begin the Page Flow Tutorial</title>
-            <section id="setup">
-                <title>Setup a Development Environment</title>
+        <section id="setup">
+            <title>Step 1: Setup a Beehive-enabled Web Application</title>
+            <section id="setup_shell">
+                <title>Set Shell Variables</title>
                 <p>Complete all of the necessary and optional steps in the following topic: <a class="fork" href="site:setup">Beehive Installation and Setup</a></p>
             </section>
-            <section id="make_project">
-                <title>Create a Web Project</title>
+            <section id="setup_make_project">
+                <title>Create a Beehive-enabled Web Project</title>
                 <p>
-                In order to follow the steps in this tutorial, it's necessary to create a Beehive-enabled web application.  This web application is derived from Beehive's
-                <a href="site:netui-blank">netui-blank</a> NetUI web project which contains a skeleton Ant build file and an example Page Flow Controller.  To create the
+                In order to follow the steps in this tutorial, it's necessary to create a Beehive-enabled web application.  Beehive-enabled web applications
+                are described <a href="index.html">here</a>.  A skeleton Beehive-enabled web project is provided in the samples/ directory as 
+                <a href="site:netui-blank">netui-blank</a>.  This contains a basic Ant build file and an example Page Flow Controller.  To create the
                 tutorial's project, we'll copy and then rename the <a href="site:netui-blank">netui-blank</a> project using these steps:
                 </p>
                 <ol>
                 <li>On your C: drive, create a directory named <code>beehive_projects</code>.</li>
-                <li>Copy the folder <code>&lt;BeehiveRoot>/samples/netui-blank</code> into 
-                    <code>C:/beehive_projects</code>. (<code>&lt;BeehiveRoot</code> is the top level folder of your
-                    Beehive distribution.  A typical value might be <code>C:/apache/apache-beehive-1.0</code>.)</li>
-		<li>Rename the folder <code>C:\beehive_projects\</code><strong><code>netui-blank</code></strong> to <code>C:\beehive_projects\</code><strong><code>pageflow_tutorial</code></strong></li>
-		<li>Before proceeding, confirm that the following directory structure exists:</li>
+                <li>Copy the folder <code>&lt;BeehiveDistribution>/samples/netui-blank</code> into 
+                    <code>C:/beehive_projects</code> where <code>&lt;BeehiveDistribution></code> is the directory that contains your 
+                    unzipped copy of a Beehive distribution.  A typical value might be <code>C:/apache/apache-beehive-1.0</code>.)</li>
+                <li>Rename the folder <code>C:\beehive_projects\</code><strong><code>netui-blank</code></strong> to 
+                    <code>C:\beehive_projects\</code><strong><code>pageflow_tutorial</code></strong></li>
+                <li>Before continuing, confirm that the following directory structure exists:</li>
                 </ol>
                 <source>
 c:\
@@ -54,107 +56,122 @@
           resources\
           WEB-INF\
                 </source>
-<p>
-Note, this directory structure is just an example; you are free to put the <code>pageflow_tutorial</code> directory anywhere on disk.  Just be sure to adjust
-the rest of the directory names in the tutorial below.
-</p>
+                <p>
+                Note, this directory structure is just an example; you are free to put the <code>pageflow_tutorial</code> 
+                directory anywhere on disk.  In the remainder of this tutorial, the directory <code>beehive_projects/pageflow_tutorial</code> 
+                will simply be referred to as <code>pageflow_tutorial</code>.
+                </p>
             </section>
-            <section id="configure_properties">
+            <section id="setup_configure_properties">
                 <title>Configure Build Properties</title>
-    <p>
-       The <code>WEB-INF/src/build.properties</code> file contains several project-related properties that must be set in order to build the web application.  Specifically, the 
-       paths to your Beehive distribution and to the JSP / Servlet API JARs for your application container must be set.  The following steps will set these properties
-       for the <code>pageflow_tutorial</code> webapp.
-    </p>
-    <ol>
-    <li>Open the file <code>C:/beehive_projects/pageflow_tutorial/WEB-INF/src/build.properties</code> in a text editor.</li>
-    <li>Edit the <code>beehive.home</code> property so it points to the top-level folder of your Beehive distribution.</li>  
-    <li>Edit the <code>context.path</code> so it has the value <code>pageflow_tutorial</code>.</li>
-    </ol>
-    <note>The <code>context.path</code> property determines both (1) the name of the application WAR file and (2) the application URL.  
-          <br/><br/>
-          If <code>context.path=myWebApp</code>, then the following WAR file will be produced:
-          <br/><br/>
-          &nbsp;&nbsp;&nbsp;&nbsp;<strong><code>myWebApp</code></strong><code>.war</code>
-          <br/><br/>
-          and the following URL will invoke the web application:
-          <br/><br/>
-          &nbsp;&nbsp;&nbsp;&nbsp;<code>http://someserver/</code><strong><code>myWebApp</code></strong>
-     </note>
-     <p>For example, if your Beehive distribution is located in <code>C:/apache/apache-beehive-1.0</code>, then your <code>build.properties</code> file would appear as follows.</p>
-<source>
+                <p>
+                The <code>WEB-INF/src/build.properties</code> file contains several project-related properties that must 
+                be set in order to build the web application.  Specifically, the paths to your Beehive distribution and 
+                to the JSP / Servlet API JARs for your application container must be set.  The following steps will set these properties
+                for the <code>pageflow_tutorial</code> webapp.
+                </p>
+                <ol>
+                <li>Open the file <code>pageflow_tutorial/WEB-INF/src/build.properties</code> in a text editor.</li>
+                <li>Edit the <code>beehive.home</code> property so it points to the top-level folder of your Beehive distribution.</li>  
+                <li>Edit the <code>context.path</code> to use the value <code>pageflow_tutorial</code>.</li>
+                </ol>
+                <note>
+                The <code>context.path</code> property determines both (1) the name of the application WAR file and (2) the application URL.  
+                <br/><br/>
+                If <code>context.path=fooWebApp</code>, then the following WAR file will be produced:
+                <br/><br/>
+                &nbsp;&nbsp;&nbsp;&nbsp;<strong><code>fooWebApp</code></strong><code>.war</code>
+                <br/><br/>
+                and the following URL will invoke the web application:
+                <br/><br/>
+                &nbsp;&nbsp;&nbsp;&nbsp;<code>http://someapplicationserver/</code><strong><code>fooWebApp</code></strong>
+                </note>
+                <p>For example, if your Beehive distribution is located in <code>C:/apache/apache-beehive-1.0</code>, 
+                then your <code>build.properties</code> file would appear as follows.</p>
+                <source>
 beehive.home=<strong>C:/apache/apache-beehive-1.0</strong>
 servlet-api.jar=${os.CATALINA_HOME}/common/lib/servlet-api.jar
 jsp-api.jar=${os.CATALINA_HOME}/common/lib/jsp-api.jar
 
-context.path=<strong>pageflow_tutorial</strong></source>
-<note>Properties files should use the '/' character to separate drive, directory, and file names.</note>
-<p>
-If you are using an application container other than Tomcat, be sure to set the <code>servlet-api.jar</code> and <code>jsp-api.jar</code> properties 
-to reference the JAR your server provides which contains the JSP and Servlet API classes.
-</p>
+context.path=<strong>pageflow_tutorial</strong>
+                </source>
+                <note>Properties files should use the '/' character to separate drive, directory, and file names.</note>
+                <p>
+                If you are using an application container other than Tomcat, be sure to set the <code>servlet-api.jar</code> and <code>jsp-api.jar</code> properties 
+                to reference the JAR your server provides which contains the JSP and Servlet API classes.
+                </p>
             </section>
-            <section id="start_server">
+            <section id="setup_start_server">
                 <title>Start the Server</title>
                 <p>If you are using Tomcat, enter the following at the command prompt:</p>
                 <source>%CATALINA_HOME%\bin\startup.bat</source>
                 <p>If you aren't using Tomcat, start your application container as per its directions.</p>
             </section>
+            <section id="setup_urls">
+                <title>Using URLs in the Examples</title>
+                <p>
+                In the Beehive tutorials, you will often encounter URLs like <code>http://localhost:8080/pageflow_tutorial/begin.do</code>.
+                When you see these URLs, they are meant to be accessed via your web browser to demonstrate functionality built in the 
+                tutorial.  These URLs are setup to run on Tomcat, so if you are unable to run these URLs, be sure that they are appropriate 
+                for your application server.  Specifically, check the port numbers to make sure that your server is running on the 
+                referenced port.
+                </p>
+            </section>
         </section>
-        <section id="step_2_create">
-            <title>Step 2: Create a New Page Flow Application</title>
-            <section id="intro_2">
-                <title>Introduction</title>
+        <section id="ceate">
+            <title>Step 2: Create your First Page Flow Controller</title>
+            <section id="create_overview">
+                <title>Overview</title>
                 <p>
-			In this step you will create a Controller file and a JSP page.  These are the basic files in 
-			a Beehive Page Flow web application.  Each Page Flow contains one Controller file and any 
-			number of JSP pages. A Controller file is a Java class that 
-			controls how your web application functions and what it does. The methods in the 
-			Controller 
-			file determine all of the major features of a web application: how users navigate from page 
-			to page, how user requests are handled, and how the web application accesses back-end 
-			resources. The JSP pages determine what a visitor to the web sees in the browser.  
+            In this step you will create a Controller file and a JSP page.  These are the basic files in 
+            a Beehive Page Flow web application.  Each Page Flow contains one Controller file and any 
+            number of JSP pages. A Controller file is a Java class that 
+            controls how your web application functions and what it does. The methods in the 
+            Controller 
+            file determine all of the major features of a web application: how users navigate from page 
+            to page, how user requests are handled, and how the web application accesses back-end 
+            resources. The JSP pages determine what a visitor to the web sees in the browser.  
                 </p>
                 <p>
-			In terms of the Model-View-Controller paradigm for web applications, the Controller.java
-			file is the Controller (naturally) and the JSP pages are the View.  The web application's
-			Model in this tutorial is very simple: it consists of three fields that represent the
-			user's name, age and selected sport activity.
-				<!--[tbd: more, explain]-->
-				</p>
-                <p>	
-				Controller files contain Action methods. An Action method may do something simple, such 
-				as forward a user from one JSP page to another; or it may do a complex set of tasks, such 
-				as receive user input from a JSP page, calculate and/or retrieve other data based on the 
-				user input, and forward the user to a JSP page where the results are displayed. 
-					<!--[tbd: diagram, etc.]-->
+            In terms of the Model-View-Controller paradigm for web applications, the Controller.java
+            file is the Controller (naturally) and the JSP pages are the View.  The web application's
+            Model in this tutorial is very simple: it consists of three fields that represent the
+            user's name, age and selected sport activity.
+                <!--[tbd: more, explain]-->
+                </p>
+                <p>    
+                Controller files contain Action methods. An Action method may do something simple, such 
+                as forward a user from one JSP page to another; or it may do a complex set of tasks, such 
+                as receive user input from a JSP page, calculate and/or retrieve other data based on the 
+                user input, and forward the user to a JSP page where the results are displayed. 
+                    <!--[tbd: diagram, etc.]-->
                 </p>
                 <p>
-				The Controller file in this step contains one simple Action method. This
-				simple navigational Action method forwards users to the index.jsp page. In the next 
-				step, you will create a more complex Action method.
-				</p>
+                The Controller file in this step contains one simple Action method. This
+                simple navigational Action method forwards users to the index.jsp page. In the next 
+                step, you will create a more complex Action method.
+                </p>
             </section>
-            <section id="examine">
-                <title>To Examine the <code>Controller.java</code> and <code>index.jsp</code> Files</title>
+            <section id="create_examine">
+                <title>Examine the Controller.java and index.jsp Files</title>
                 <p>There are no edits to make in this step.  The point of this step is 
-					to learn about the code you are about to run.</p>
-				<p>Open the file <code>C:/beehive_projects/pageflow_tutorial/Controller.java</code>. 
-					</p>
-				<p>The Controller file is an ordinary Java class with methods and annotations.</p>
-				<p>A Page Flow controller class must extend 
-					<code>org.apache.beehive.netui.pageflow.PageFlowController</code> and be decorated by the
-					annotation <code>@Jpf.Controller</code>.</p>
-				<p>The <code>onCreate()</code> method is executed whenever the Controller class is first 
-					instantiated.  The <code>onDestroy()</code> method is executed when the Controller 
-					class is destroyed.</p>
-				<p>After the <code>onCreate()</code> method is run, the Page Flow runtime
-					searches for (and runs) a method or action named <code>begin</code>.
-					In this Controller file, there is a simple action named <code>begin</code>:
-					</p>
-				<source>@Jpf.SimpleAction(name="begin", path="index.jsp")</source>
-				<p>The begin action <em>could</em> have been expressed using method syntax: </p>
-				<source>
+                    to learn about the code you are about to run.</p>
+                <p>Open the file <code>pageflow_tutorial/Controller.java</code>. 
+                    </p>
+                <p>The Controller file is an ordinary Java class with methods and annotations.</p>
+                <p>A Page Flow controller class must extend 
+                    <code>org.apache.beehive.netui.pageflow.PageFlowController</code> and be decorated by the
+                    annotation <code>@Jpf.Controller</code>.</p>
+                <p>The <code>onCreate()</code> method is executed whenever the Controller class is first 
+                    instantiated.  The <code>onDestroy()</code> method is executed when the Controller 
+                    class is destroyed.</p>
+                <p>After the <code>onCreate()</code> method is run, the Page Flow runtime
+                    searches for (and runs) a method or action named <code>begin</code>.
+                    In this Controller file, there is a simple action named <code>begin</code>:
+                    </p>
+                <source>@Jpf.SimpleAction(name="begin", path="index.jsp")</source>
+                <p>The begin action <em>could</em> have been expressed using method syntax: </p>
+                <source>
 @Jpf.Action(
     forwards = { 
         @Jpf.Forward(name="success", path="index.jsp")
@@ -162,15 +179,16 @@
 )
 public Forward begin() {
     return new Forward("success");
-}</source>
-                <p>We have used the Simple Action syntax for the sake of syntactical simplicity.
-                    The Simple Action will forward the user to the JSP, index.jsp.</p>
-				<p>The Controller class is instantiated when a user calls it via the URL:</p>
-				<source>http://localhost:8080/pageflow_tutorial/begin.do</source>
-				<p>The URL above means this: "Run the <code>begin</code> action of the 
-					<code>Controller.java</code> class in the directory <code>pageflow_tutorial</code>."</p>
-				<p><strong><code>Controller.java</code></strong></p> 
-                <source>import javax.servlet.http.HttpSession;
+}
+</source>
+                <p>We have used the Simple Action syntax for the sake of syntactical simplicity.  The Simple Action will forward the user to the JSP, index.jsp.</p>
+                <p>The Controller class is instantiated when a user calls it via the URL:</p>
+                <source>http://localhost:8080/pageflow_tutorial/begin.do</source>
+                <p>The URL above means this: "Run the <code>begin</code> action of the <code>Controller.java</code> class 
+                   in the directory <code>pageflow_tutorial</code>."</p>
+                <p><strong><code>Controller.java</code></strong></p> 
+                <source>
+import javax.servlet.http.HttpSession;
 
 ...
 
@@ -193,59 +211,64 @@
     private shared.SharedFlow sharedFlow;
 
 }</source>
-				<p>Open the file <code>C:/beehive_projects/pageflow_tutorial/index.jsp</code>. 
-					</p>
-				<p><strong><code>index.jsp</code></strong></p>
-<source>&lt;%@ page language="java" contentType="text/html;charset=UTF-8"%>
-&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
-&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
-&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
-&lt;netui:html>
-  &lt;head>
-    &lt;title>Web Application Page&lt;/title>
-    &lt;netui:base/>
-  &lt;/head>
-  &lt;netui:body>
-    &lt;p>
+                <p>Open the file <code>pageflow_tutorial/index.jsp</code>. 
+                    </p>
+                <p><strong><code>index.jsp</code></strong></p>
+<source><![CDATA[
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
+<netui:html>
+  <head>
+    <title>Web Application Page</title>
+    <netui:base/>
+  </head>
+  <netui:body>
+    <p>
       New Web Application Page
-    &lt;/p>
-  &lt;/netui:body>
-&lt;/netui:html>
-</source>
+    </p>
+  </netui:body>
+</netui:html>
+]]></source>
 
             <!--<p>[todo: what is this code doing?]</p>-->
-		    </section>
-            <section id="compile_2">
-                <title>To Compile and Deploy the Page Flow</title>
+            </section>
+            <section id="create_build_deploy">
+                <title>Compile and Deploy the Page Flow</title>
                 <p>You are now ready to compile the Page Flow and deploy it to Tomcat.</p>
-                <p>The following Ant command assumes that you are in the <code>c:/beehive_projects/pageflow_tutorial/WEB-INF/src</code> directory.  At the command prompt, enter:</p>
-<source>
+                <p>The following Ant command assumes that you are in the <code>c:/beehive_projects/pageflow_tutorial/WEB-INF/src</code> 
+                   directory.  At the command prompt, enter:</p>
+                <source>
   ant clean build war
-</source>
-<p>
-This will build the webapp by running the Beehive annotation processors and will produce class files in <code>WEB-INF/classes</code>.
-</p>
-<p>Now, the application is ready to deploy to your server.  On Tomcat, copy the WAR file into Tomcat's <code>$CATALINA_HOME/webapps</code> directory.</p>
-<source>
+                </source>
+                <p>
+                This will build the webapp by running the Beehive annotation processors and will produce class files in <code>WEB-INF/classes</code>.  
+                Now, the application is ready to deploy to your server.  On Tomcat, copy the WAR file into Tomcat's <code>$CATALINA_HOME/webapps</code> 
+                directory.</p>
+                <source>
     copy C:\beehive_projects\pageflow_tutorial.war %CATALINA_HOME%\webapps /Y
-</source>
-<p>If you are not using Tomcat, follow your server's web application deployment instructions to deploy the webapp.</p>
+                </source>
+                <p>If you are asked to overwrite the old WAR file, enter 'yes'.  Note, when doing redeployment, you may have to wait a few seconds 
+                   for Tomcat to redeploy the WAR file.  Once deployment or redeployment has completed, the webapp can be accessed through a browser.</p>
+                <p>If you are not using Tomcat, follow your server's web application deployment instructions to deploy the webapp.</p>
 </section>
-            <section id="test_2">
-                <title>To Test the Page Flow Web Application</title>
+            <section id="create_test">
+                <title>Test the Page Flow Web Application</title>
                 <p>Visit the following address:</p> 
                 <p><a class="fork" href="http://localhost:8080/pageflow_tutorial/begin.do">http://localhost:8080/pageflow_tutorial/begin.do</a></p>
                 <p>You will be directed to the <code>index.jsp</code> page.</p>
             </section>
         </section>
-        <section id="step_3_nav">
+        <section id="navigate">
             <title>Step 3: Navigation</title>
-            <section id="create_dest_JSP">
-                <title>To Create a Destination JSP Page</title>
-                <p>In the directory <code>C:/beehive_projects/pageflow_tutorial</code>, create a file named <code>page2.jsp</code>.</p>
+            <section id="navigate_create_page">
+                <title>Create a Destination JSP Page</title>
+                <p>In the directory <code>pageflow_tutorial</code>, create a file named <code>page2.jsp</code>.</p>
                 <p>Edit page2.jsp so it appears as follows.</p>
-				<p><strong><code>page2.jsp</code></strong></p>				
-                <source><![CDATA[<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+                <p><strong><code>page2.jsp</code></strong></p>                
+                <source><![CDATA[
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
 <%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
 <netui:html>
   <head>
@@ -257,43 +280,44 @@
       Welcome to page2.jsp!
     </p>
   </netui:body>
-</netui:html>]]></source>
+</netui:html>
+]]></source>
             <p>Save <code>page2.jsp</code>.</p>
             </section>
-            <section id="create_link"> 
-                <title>To Create a Link to the Destination Page</title>
-                <p>In this step you will create a link from the JSP, <code>index.jsp</code> to a new Simple Action
-                    that you will add to the Controller file.</p>
-                <p>Open the file <code>C:/beehive_projects/pageflow_tutorial/index.jsp</code>.</p>
+            <section id="navigate_create_link"> 
+                <title>Create a Link to the Destination Page</title>
+                <p>In this step you will create a link from the JSP, <code>index.jsp</code> to a new Simple Action that you will add to the Controller file.</p>
+                <p>Open the file <code>pageflow_tutorial/index.jsp</code>.</p>
                 <p>Edit <code>index.jsp</code> so it appears as follows.  The code to add appears in bold type.</p>
-		<p><strong><code>index.jsp</code></strong></p>
-		<source>&lt;%@ page language="java" contentType="text/html;charset=UTF-8"%>
-&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
-&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
-&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
-&lt;netui:html>
-  &lt;head>
-    &lt;title>Web Application Page&lt;/title>
-    &lt;netui:base/>
-  &lt;/head>
-  &lt;netui:body>
-    &lt;p>
+        <p><strong><code>index.jsp</code></strong></p>
+        <source><![CDATA[
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
+<netui:html>
+  <head>
+    <title>Web Application Page</title>
+    <netui:base/>
+  </head>
+  <netui:body>
+    <p>
       New Web Application Page
-    &lt;/p>
-    <strong>&lt;p>
-      &lt;netui:anchor action="toPage2">Link to page2.jsp&lt;/netui:anchor>
-    &lt;/p></strong>
-  &lt;/netui:body>
-&lt;/netui:html>
-				</source>
-            <p>Save <code>index.jsp</code>.</p>			
-            </section>
-            <section id="add_simple_action">
-                <title>To Add a Simple Action to Handle the Link</title>
-                <p>Open the file <code>C:/beehive_projects/pageflow_tutorial/Controller.java</code>.</p>
-                <p>Edit <code>Controller.java</code> so it appears as follows.  Don't forget
-					the comma after the first <code>Jpf.SimpleAction(...)</code> element!</p>
-				<p><strong><code>Controller.java</code></strong></p>				
+    </p>
+    <strong><p>
+      <netui:anchor action="toPage2">Link to page2.jsp</netui:anchor>
+    </p></strong>
+  </netui:body>
+</netui:html>
+]]>
+                </source>
+            <p>Save <code>index.jsp</code>.</p>            
+            </section>
+            <section id="navigate_add_action">
+                <title>Add a Simple Action to Handle the Link</title>
+                <p>Open the file <code>pageflow_tutorial/Controller.java</code>.</p>
+                <p>Edit <code>Controller.java</code> so it appears as follows.  Don't forget the comma after the first <code>Jpf.SimpleAction(...)</code> element!</p>
+                <p><strong><code>Controller.java</code></strong></p>                
                 <source>
 import javax.servlet.http.HttpSession;
 
@@ -318,16 +342,15 @@
 }</source>
             <p>Save <code>Controller.java</code>.</p>
             </section>
-            <section id="compile_3">
-                <title>To Recompile and Redeploy the Page Flow</title>
-   <p>Compile and deploy the Page Flow using the same Ant and copy commands used in <a href="#compile_2">step 2</a>.</p>
+            <section id="navigate_build_deploy">
+                <title>Compile and Redeploy the Web Application</title>
+<p>Compile and deploy the Page Flow using the same Ant and copy commands used in <a href="#create_build_deploy">step 2</a>.</p>
 <p>If you are asked to overwrite the old WAR file, enter 'Yes'.</p>
 <p>Wait a few seconds for Tomcat to redeploy the WAR file, then move on to the next step.</p>
-			</section>
-            <section id="test_3">
-                <title>To Test the Page Flow Web Application</title>
-                
-				<p>Visit the following link: 
+            </section>
+            <section id="navigate_run">
+                <title>Test the Page Flow Web Application</title>
+                <p>Visit the following link: 
                 </p>
                 <p><a class="fork" href="http://localhost:8080/pageflow_tutorial/begin.do">http://localhost:8080/pageflow_tutorial/begin.do</a></p>
                 <p>You will be directed to the index.jsp page.</p>
@@ -335,47 +358,50 @@
                 <p>You will be directed to page2.jsp.</p>
             </section>
         </section>
-        <section id="step_4_forms">
+        <section id="forms">
             <title>Step 4: Submitting Data</title>
-            <section id="create_form">
-                <title>To Create a Submission Form</title>
+            <section id="forms_create">
+                <title>Create a Submission Form</title>
                 <p>This step illustrates the use of custom tags to render an HTML form tag and link it to an Action.
                     In a later step, the new Action will be added to the Controller file to handle the data submission.</p>
-                <p>Edit the file <code>C:/beehive_projects/pageflow_tutorial/page2.jsp</code> so it appears as follows.</p>
-				<p><strong><code>page2.jsp</code></strong></p>				
-                <source>&lt;%@ page language="java" contentType="text/html;charset=UTF-8"%>
-&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
-&lt;netui:html>
-  &lt;head>
-    &lt;title>page2.jsp&lt;/title>
-    &lt;netui:base/>
-  &lt;/head>
-  &lt;netui:body>
-    &lt;p>
+                <p>Edit the file <code>pageflow_tutorial/page2.jsp</code> so it appears as follows.</p>
+                <p><strong><code>page2.jsp</code></strong></p>                
+                <source><![CDATA[
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<netui:html>
+  <head>
+    <title>page2.jsp</title>
+    <netui:base/>
+  </head>
+  <netui:body>
+    <p>
       Welcome to page2.jsp!
-    &lt;/p>
-    <strong>&lt;p>
-      &lt;netui:form action="processData">
-        Name: &lt;netui:textBox dataSource="actionForm.name"/>
-        &lt;br/>
-        Age: &lt;netui:textBox dataSource="actionForm.age"/>
-        &lt;br/>
-        &lt;netui:button type="submit" value="Submit"/>
-      &lt;/netui:form>
-    &lt;/p></strong>
-  &lt;/netui:body>
-&lt;/netui:html></source>
+    </p>
+    <strong><p>
+      <netui:form action="processData">
+        Name: <netui:textBox dataSource="actionForm.name"/>
+        <br/>
+        Age: <netui:textBox dataSource="actionForm.age"/>
+        <br/>
+        <netui:button type="submit" value="Submit"/>
+      </netui:form>
+    </p></strong>
+  </netui:body>
+</netui:html>
+]]>
+</source>
 <p>Save <code>page2.jsp</code>.</p>
             </section>
-            <section id="create_formbean">
-                <title>To Create a Server Side Representation of the Submission Form (a.k.a. Create a Form Bean)</title>
+            <section id="forms_create_formbean">
+                <title>Create a Server Side Representation of the Submission Form (a.k.a. Create a Form Bean)</title>
                 <p>In this step you will create a Java class that represents the submission form created in the previous task.  When the form data is submitted, the Java class will be instantiated, and the form data will be loaded into the members of the Java class.</p>
-                <p>In the directory <code>C:/beehive_projects/pageflow_tutorial/WEB-INF/src</code> create a directory named <strong><code>forms</code></strong>.</p>
-                <p>In the directory <code>C:/beehive_projects/pageflow_tutorial/WEB-INF/src/forms</code> create a JAVA file named <strong><code>ProfileForm.java</code></strong>.</p>
-                <p>Edit <code>C:/beehive_projects/pageflow_tutorial/WEB-INF/src/forms/ProfileForm.java</code> so it appears as follows.</p>
+                <p>In the directory <code>pageflow_tutorial/WEB-INF/src</code> create a directory named <strong><code>forms</code></strong>.</p>
+                <p>In the directory <code>pageflow_tutorial/WEB-INF/src/forms</code> create a JAVA file named <strong><code>ProfileForm.java</code></strong>.</p>
+                <p>Edit <code>pageflow_tutorial/WEB-INF/src/forms/ProfileForm.java</code> so it appears as follows.</p>
                 
-				<p><strong><code>ProfileForm.java</code></strong></p>
-					<source>
+                <p><strong><code>ProfileForm.java</code></strong></p>
+                    <source>
 package forms;
 
 public class ProfileForm 
@@ -402,16 +428,17 @@
 }</source>
 <p>Save and close <code>ProfileForm.java</code>.</p>
             </section>
-            <section id="edit_4">
-                <title>To Edit the Controller File to Handle the Submitted Data</title>
+            <section id="forms_edit_controller">
+                <title>Edit the Controller File to Handle the Submitted Data</title>
                 <p>Now you will add a new Action and use your new Form Bean to handle the data
                 submitted from the HTML form.</p>
-                <p>Open the file <code>C:/beehive_projects/pageflow_tutorial/Controller.java</code>
+                <p>Open the file <code>pageflow_tutorial/Controller.java</code>
                 </p>
                 <p>Edit <code>Controller.java</code> so it appears as follows.  Code to add appears in bold type.</p>
                 
-				<p><strong><code>Controller.java</code></strong></p>
-					<source>import javax.servlet.http.HttpSession;
+                <p><strong><code>Controller.java</code></strong></p>
+                    <source>
+import javax.servlet.http.HttpSession;
 
 ...
 
@@ -430,48 +457,30 @@
     }
 )
 public class Controller 
-    extends PageFlowController
-{
+    extends PageFlowController {
+    @Jpf.SharedFlowField(name="shared")
+    private shared.SharedFlow sharedFlow;
+
     <strong>@Jpf.Action(
         forwards = { 
             @Jpf.Forward(name="success", path="page2.jsp")
         }
     )
-    public Forward processData(ProfileForm form)
-    {
+    public Forward processData(ProfileForm form) {
         System.out.println("Name: " + form.getName());
         System.out.println("Age: " + form.getAge());
         return new Forward("success");
     }</strong>
-
-    @Jpf.SharedFlowField(name="shared")
-    private shared.SharedFlow sharedFlow;
-
-    /**
-     * Callback that is invoked when this controller instance is created.
-     */
-    protected void onCreate()
-    {
-    }
-
-    /**
-     * Callback that is invoked when this controller instance is destroyed.
-     */
-    protected void onDestroy(HttpSession session)
-    {
-    }
-}</source>
-				<!--<p>[TODO: what is this code doing?]</p>-->
-			<p>Save <code>Controller.java</code>.</p>
+}
+</source>
+            <p>Save <code>Controller.java</code>.</p>
             </section>
-            <section id="compile_redeploy">
-   <title>To Recompile and Redeploy the Page Flow</title>
-   <p>Compile and deploy the Page Flow using the same Ant and copy commands used in <a href="#compile_2">step 2</a>.</p>
-<p>If you are asked to overwrite the old WAR file, enter 'Yes'.</p>
-<p>Wait a few seconds for Tomcat to redeploy the WAR file, then move on to the next step.</p>
-</section>
-           <section id="test">
-                <title>To Test the Page Flow Web Application</title>
+            <section id="forms_build_deploy">
+                <title>Recompile and Redeploy the Web Application</title>
+                <p>Compile and (re)deploy the web application using the same steps as described <a href="#create_build_deploy">here</a>.</p>
+           </section>
+           <section id="forms_test">
+                <title>Test the Page Flow Web Application</title>
                 <p>Visit the following link: 
                 </p>
                 <p><a class="fork" href="http://localhost:8080/pageflow_tutorial/begin.do">http://localhost:8080/pageflow_tutorial/begin.do</a></p>
@@ -482,17 +491,18 @@
                 <p>Notice the name and age values you entered are displayed in the Tomcat console shell.</p>
             </section>
         </section>
-        <section id="step_5_display">
+        <section id="forms_display_data">
             <title>Step 5: Processing and Displaying Data</title>
             <section id="create_jsp">
-                <title>To Create a JSP Page to Display Submitted Data</title>
+                <title>Create a JSP Page to Display Submitted Data</title>
                 <p>In this step you will create a new JSP to present the results from processing the data submission.</p>
-                <p>In the directory <code>C:/beehive_projects/pageflow_tutorial</code> create a file named 
-					<strong><code>displayData.jsp</code></strong>. </p>
-				<p>Edit <code>displayData.jsp</code> so it appears as follows.</p>
+                <p>In the directory <code>pageflow_tutorial</code> create a file named 
+                    <strong><code>displayData.jsp</code></strong>. </p>
+                <p>Edit <code>displayData.jsp</code> so it appears as follows.</p>
                 
-				<p><strong><code>displayData.jsp</code></strong></p>
-					<source><![CDATA[<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+                <p><strong><code>displayData.jsp</code></strong></p>
+                    <source><![CDATA[
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
 <%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
 <netui:html>
   <head>
@@ -509,42 +519,40 @@
       Age: <netui:content value="${requestScope.data.age}"/>
     </p>
   </netui:body>
-</netui:html>]]></source>
-			<p>Save and close <code>displayData.jsp</code>.</p>
+</netui:html>
+]]></source>
+            <p>Save and close <code>displayData.jsp</code>.</p>
             </section>            
-            <section id="process_data">
-                <title>To Process the Submitted Data</title>
-                <p>Edit the <code>processData</code> method in the <code>Controller.java</code> file so it appears as 
-					follows. Code to add appears in bold.</p>
+            <section id="forms_process_action">
+                <title>Process the Submitted Data</title>
+                <p>Edit the <code>processData</code> method in the <code>Controller.java</code> file so it appears as follows. Code to add appears in bold.</p>
                 
-				<p><strong><code>Controller.java</code></strong></p>
-					<source>    ...
-						
+                <p><strong><code>Controller.java</code></strong></p>
+                    <source>
+    ...
+                        
     @Jpf.Action(
         forwards = { 
             @Jpf.Forward(name="success", path="<strong>displayData.jsp</strong>")
         }
     )
-    public Forward processData(ProfileForm form)
-    {
+    public Forward processData(ProfileForm form) {
         System.out.println("Name: " + form.getName());
         System.out.println("Age: " + form.getAge());    
         <strong>getRequest().setAttribute("data", form);</strong>
         return new Forward("success");
     }
     
-    ...</source>
-			<p>Save <code>Controller.java</code>.</p>
+    ...
+</source>
+            <p>Save <code>Controller.java</code>.</p>
+            </section>
+            <section id="forms_build_deploy_again">
+                <title>Recompile and Redeploy the Web Application</title>
+                <p>Compile and (re)deploy the web application using the same steps as described <a href="#create_build_deploy">here</a>.</p>
             </section>
-            <section id="compile_5">
-
-   <title>To Recompile and Redeploy the Page Flow</title>
-   <p>Compile and deploy the Page Flow using the same Ant and copy commands used in <a href="#compile_2">step 2</a>.</p>
-<p>If you are asked to overwrite the old WAR file, enter 'Yes'.</p>
-<p>Wait a few seconds for Tomcat to redeploy the WAR file, then move on to the next step.</p>
-</section>
             <section>
-                <title>To Test the Page Flow Web Application</title>
+                <title>Test the Page Flow Web Application</title>
                 <p>Visit the following link: 
                 </p>
                 <p><a class="fork" href="http://localhost:8080/pageflow_tutorial/begin.do">http://localhost:8080/pageflow_tutorial/begin.do</a></p>
@@ -555,23 +563,23 @@
                 <p>You will be forwarded to the displayData.jsp page.  Notice the values you entered are displayed.</p>
             </section>
         </section>
-        <section id="step_6_validate">
+        <section id="validation">
             <title>Step 6: Input Validation</title>
-            <section id="add_validation">
+            <section id="validation_add">
                 <title>To Add Declarative Validation to the Page Flow</title>
                 <p>In this step you will use declarative validation to define the set of rules for each
                     field, to be applied during input validation. Add a <code>ValidatableProperty</code>
                     for the name field of the form so that it will (1) be a required field and 
-					(2) have a maximum
-                    length of 30 characters. The age field will also be required and must have a value 
-					in the range
-                    0 to 130.</p>
-                <p>Open the file <code>C:/beehive_projects/pageflow_tutorial/Controller.java</code></p>
+                    (2) have a maximum length of 30 characters. The age field will also be required and must have a value 
+                    in the range 0 to 130.</p>
+                <p>Open the file <code>pageflow_tutorial/Controller.java</code></p>
                 <p>Edit the <code>@Jpf.Action</code> annotation for the <code>processData</code> method in the
                     <code>Controller.java</code> file so it appears as follows. Code to add appears in bold.
                     Don't forget the comma after the <code>forwards={...}</code> element!</p>
                 <p><strong><code>Controller.java</code></strong></p>
-                <source>...
+                <source>
+
+...
 
     @Jpf.Action(
         forwards = {
@@ -592,56 +600,56 @@
         validationErrorForward =
             @Jpf.Forward(name="fail", navigateTo=Jpf.NavigateTo.currentPage)</strong>
     )
-    public Forward processData(ProfileForm form)
-    {
+    public Forward processData(ProfileForm form) {
         System.out.println("Name: " + form.getName());
         System.out.println("Age: " + form.getAge());
         getRequest().setAttribute("data", form);
         return new Forward("success");
     }
 
-    ...</source>
+    ...
+</source>
                 <p>Save <code>Controller.java</code>.</p>
             </section>
-            <section id="display_errors">
-                <title>To Modify the JSP to Display Validation Errors</title>
+            <section id="validation_display_errors">
+                <title>Modify the JSP to Display Validation Errors</title>
                 <p>Add the <code>&lt;netui:error></code> tag to display validation error messages on the page.</p>
-                <p>Edit the file <code>C:/beehive_projects/pageflow_tutorial/page2.jsp</code> so it appears as follows.</p>
+                <p>Edit the file <code>pageflow_tutorial/page2.jsp</code> so it appears as follows.</p>
                 <p><strong><code>page2.jsp</code></strong></p>
-                <source>&lt;%@ page language="java" contentType="text/html;charset=UTF-8"%>
-&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
-&lt;netui:html>
-  &lt;head>
-    &lt;title>page2.jsp&lt;/title>
-    &lt;netui:base/>
-  &lt;/head>
-  &lt;netui:body>
-    &lt;p>
+                <source><![CDATA[
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<netui:html>
+  <head>
+    <title>page2.jsp</title>
+    <netui:base/>
+  </head>
+  <netui:body>
+    <p>
       Welcome to page2.jsp!
-    &lt;/p>
-    &lt;p>
-      &lt;netui:form action="processData">
-        Name: &lt;netui:textBox dataSource="actionForm.name"/>
-        <strong>&lt;netui:error key="name"/></strong>
-        &lt;br/>
-        Age: &lt;netui:textBox dataSource="actionForm.age"/>
-        <strong>&lt;netui:error key="age"/></strong>
-        &lt;br/>
-        &lt;netui:button type="submit" value="Submit"/>
-      &lt;/netui:form>
-    &lt;/p>
-  &lt;/netui:body>
-&lt;/netui:html></source>
+    </p>
+    <p>
+      <netui:form action="processData">
+        Name: <netui:textBox dataSource="actionForm.name"/>
+        <strong><netui:error key="name"/></strong>
+        <br/>
+        Age: <netui:textBox dataSource="actionForm.age"/>
+        <strong><netui:error key="age"/></strong>
+        <br/>
+        <netui:button type="submit" value="Submit"/>
+      </netui:form>
+    </p>
+  </netui:body>
+</netui:html>
+]]></source>
                 <p>Save and close <code>page2.jsp</code>.</p>
             </section>
-            <section id="compile_6">
-                <title>To Recompile and Redeploy the Page Flow</title>
-                <p>Compile and deploy the Page Flow using the same Ant and copy commands used in <a href="#compile_2">step 2</a>.</p>
-                <p>If you are asked to overwrite the old WAR file, enter 'Yes'.</p>
-                <p>Wait a few seconds for Tomcat to redeploy the WAR file, then move on to the next step.</p>
+            <section id="validation_build_deploy">
+                <title>Recompile and Redeploy the Web Application</title>
+                <p>Compile and (re)deploy the web application using the same steps as described <a href="#create_build_deploy">here</a>.</p>
             </section>
-            <section id="test_6">
-                <title>To Test the Page Flow Web Application</title>
+            <section id="validation_run">
+                <title>Test the Page Flow Web Application</title>
                 <p>Visit the following link:</p>
                 <p><a class="fork" href="http://localhost:8080/pageflow_tutorial/begin.do">http://localhost:8080/pageflow_tutorial/begin.do</a></p>
                 <p>You will be directed to the index.jsp page.</p>
@@ -651,82 +659,85 @@
                 <p>You will be returned to the page2.jsp page.  Notice the error messages for the values you entered.</p>
             </section>
         </section>
-        <section id="step_7_nested">
+        <section id="nested">
             <title>Step 7: Collect Data from a Nested Page Flow</title>
-            <section id="go_nested">
-                <title>To Link to the Nested Page Flow</title>
+            <section id="nested_link">
+                <title>Link to the Nested Page Flow</title>
                 <p>Modify the HTML form tag to add a new data field and a button and link it to an
                     Action in the nested Page Flow. In a later step, the new nested Controller file
                     will be created to handle the data collection.</p>
-                <p>Edit the file <code>C:/beehive_projects/pageflow_tutorial/page2.jsp</code> so it
+                <p>Edit the file <code>pageflow_tutorial/page2.jsp</code> so it
                     appears as follows. Code to add appears in bold.</p>
                 <p><strong><code>page2.jsp</code></strong></p>
-                <source>&lt;%@ page language="java" contentType="text/html;charset=UTF-8"%>
-&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
-&lt;netui:html>
-  &lt;head>
-    &lt;title>page2.jsp&lt;/title>
-    &lt;netui:base/>
-  &lt;/head>
-  &lt;netui:body>
-    &lt;p>
+                <source><![CDATA[
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<netui:html>
+  <head>
+    <title>page2.jsp</title>
+    <netui:base/>
+  </head>
+  <netui:body>
+    <p>
       Welcome to page2.jsp!
-    &lt;/p>
-    &lt;p>
-      &lt;netui:form action="processData">
-        Name: &lt;netui:textBox dataSource="actionForm.name"/>
-        &lt;netui:error key="name"/>
-        &lt;br/>
-        Age: &lt;netui:textBox dataSource="actionForm.age"/>
-        &lt;netui:error key="age"/>
-        &lt;br/>
-        <strong>Sport: &lt;netui:textBox dataSource="actionForm.sport"/>
-        &lt;br/>
-        &lt;netui:button type="submit" action="getSport" value="Select Sport"/></strong>
-        &lt;netui:button type="submit" value="Submit"/>
-      &lt;/netui:form>
-    &lt;/p>
-  &lt;/netui:body>
-&lt;/netui:html></source>
+    </p>
+    <p>
+      <netui:form action="processData">
+        Name: <netui:textBox dataSource="actionForm.name"/>
+        <netui:error key="name"/>
+        <br/>
+        Age: <netui:textBox dataSource="actionForm.age"/>
+        <netui:error key="age"/>
+        <br/>
+        <strong>Sport: <netui:textBox dataSource="actionForm.sport"/>
+        <br/>
+        <netui:button type="submit" action="getSport" value="Select Sport"/></strong>
+        <netui:button type="submit" value="Submit"/>
+      </netui:form>
+    </p>
+  </netui:body>
+</netui:html>
+]]></source>
                 <p>Save <code>page2.jsp</code>.</p>
             </section>
-            <section id="update_formbean">
-                <title>To Update the Form Bean</title>
+            <section id="validation_update_formbean">
+                <title>Update the Form Bean</title>
                 <p>In this step you will update the Java class that represents the submission form with the
                     additional data field created in the previous task.  When the nested Page Flow returns,
                     the new member of the Form Bean class instance can be loaded with the value collected.</p>
-                <p>Edit <code>C:/beehive_projects/pageflow_tutorial/WEB-INF/src/forms/ProfileForm.java</code>
+                <p>Edit <code>pageflow_tutorial/WEB-INF/src/forms/ProfileForm.java</code>
                     and add the following member variable and methods.</p>
                 <p><strong><code>ProfileForm.java</code></strong></p>
-                <source>    ...
+                <source>
+    ...
 
     private String sport;
 
-    public void setSport(String sport)
-    {
+    public void setSport(String sport) {
         this.sport = sport;
     }
 
-    public String getSport()
-    {
+    public String getSport() {
         return this.sport;
     }
 
-    ...</source>
+    ...
+</source>
                 <p>Save and close <code>ProfileForm.java</code>.</p>
             </section>
-            <section id="update_controller">
+            <section id="validation_update_controller">
                 <title>To Launch and Return from the Nested Page Flow</title>
                 <p>Add Action methods to handle forwarding to the nested Page Flow and another to
                     implement the return Action when the nested Page Flow completes.</p>
-                <p>Open the file <code>C:/beehive_projects/pageflow_tutorial/Controller.java</code></p>
+                <p>Open the file <code>pageflow_tutorial/Controller.java</code></p>
                 <p>Edit <code>Controller.java</code> so it appears as follows.  Code to add appears
                     in bold type. Don't forget to add the <code>useFormBean</code> property to the
                     <code>@Jpf.Action</code> annotation of the <code>processData</code> method. The
                     ProfileForm is Page Flow scoped for this example, using the same Form Bean
                     instance in multiple Action methods.</p>
                 <p><strong><code>Controller.java</code></strong></p>
-                <source>import javax.servlet.http.HttpSession;
+                <source>
+import javax.servlet.http.HttpSession;
 
 import org.apache.beehive.netui.pageflow.Forward;
 import org.apache.beehive.netui.pageflow.PageFlowController;
@@ -743,8 +754,11 @@
     }
 )
 public class Controller
-    extends PageFlowController
-{
+    extends PageFlowController {
+
+    @Jpf.SharedFlowField(name="shared")
+    private shared.SharedFlow sharedFlow;
+
     <strong>private ProfileForm profileForm;
 
     /**
@@ -761,8 +775,7 @@
         },
         doValidation=false
     )
-    protected Forward getSport(ProfileForm form)
-    {
+    protected Forward getSport(ProfileForm form) {
         return new Forward("getSportFlow");
     }
 
@@ -778,10 +791,9 @@
             )
         }
     )
-    protected Forward sportSelected( String sport )
-    {
-        profileForm.setSport( sport );
-        Forward success = new Forward( "success", profileForm );
+    protected Forward sportSelected(String sport) {
+        profileForm.setSport(sport);
+        Forward success = new Forward("success", profileForm);
         return success;
     }</strong>
 
@@ -805,50 +817,34 @@
         validationErrorForward =
             @Jpf.Forward(name="fail", navigateTo=Jpf.NavigateTo.currentPage)
     )
-    public Forward processData(ProfileForm form)
-    {
+    public Forward processData(ProfileForm form) {
         System.out.println("Name: " + form.getName());
         System.out.println("Age: " + form.getAge());
         getRequest().setAttribute("data", form);
         return new Forward("success");
     }
-
-    @Jpf.SharedFlowField(name="shared")
-    private shared.SharedFlow sharedFlow;
-
-    /**
-     * Callback that is invoked when this controller instance is created.
-     */
-    protected void onCreate()
-    {
-    }
-
-    /**
-     * Callback that is invoked when this controller instance is destroyed.
-     */
-    protected void onDestroy(HttpSession session)
-    {
-    }
-}</source>
+}
+</source>
                 <p>Save <code>Controller.java</code>.</p>
             </section>
-            <section id="create_nested">
-                <title>To Create a Nested Page Flow</title>
+            <section id="validation_create_nested">
+                <title>Create a Nested Page Flow</title>
                 <p>In this step you will create a nested Page Flow with actions to select and confirm
                     the data to return to the main or nesting Page Flow. The new nested Controller file
                     contains an inner Form Bean classs for the data collection. It has only a single
                     field for the user's choice of sport activity. The options to be displayed are
                     declared as member data of this nested Page Flow. After the user confirms the
                     data, the nested Page Flow returns a <code>String</code> to the main Page Flow.</p>
-                <p>In the directory <code>C:/beehive_projects/pageflow_tutorial/</code> create a directory
+                <p>In the directory <code>pageflow_tutorial/</code> create a directory
                     named <strong><code>sports</code></strong>.</p>
-                <p>In the directory <code>C:/beehive_projects/pageflow_tutorial/sports</code> create a JAVA
+                <p>In the directory <code>pageflow_tutorial/sports</code> create a JAVA
                     file named <strong><code>SportsController.java</code></strong>.</p>
-                <p>Edit <code>C:/beehive_projects/pageflow_tutorial/sports/SportsController.java</code> so it
+                <p>Edit <code>pageflow_tutorial/sports/SportsController.java</code> so it
                     appears as follows.</p>
 
                 <p><strong><code>SportsController.java</code></strong></p>
-                <source>package sports;
+                <source>
+package sports;
 
 import org.apache.beehive.netui.pageflow.FormData;
 import org.apache.beehive.netui.pageflow.Forward;
@@ -862,11 +858,10 @@
     }
 )
 public class SportsController
-    extends PageFlowController
-{
+    extends PageFlowController {
+
     private String selectedSport;
-    private String[] sports = {"sailing", "surfing", "diving", "volleyball",
-                               "bicycling"};
+    private String[] sports = {"sailing", "surfing", "diving", "volleyball", "bicycling"};
 
     public String[] getSports() {
         return sports;
@@ -881,8 +876,7 @@
             @Jpf.Forward(name="confirm", path="confirm.jsp")
         }
     )
-    public Forward selectSport(SportForm form)
-    {
+    public Forward selectSport(SportForm form) {
         selectedSport = form.getSport();
         return new Forward("confirm");
     }
@@ -895,37 +889,36 @@
                 outputFormBeanType=String.class)
         }
     )
-    public Forward confirm()
-    {
+    public Forward confirm() {
         return new Forward("success", selectedSport);
     }
 
-    public static class SportForm extends FormData
-    {
+    public static class SportForm 
+        extends FormData {
+
         private String sport;
 
-        public void setSport(String sport)
-        {
+        public void setSport(String sport) {
             this.sport = sport;
         }
 
-        public String getSport()
-        {
+        public String getSport() {
             return this.sport;
         }
     }
-}</source>
+}
+</source>
                 <p>Save and close <code>SportsController.java</code>.</p>
             </section>
-            <section id="collect_data">
+            <section id="validation_collect_data">
                 <title>To Present and Collect Data using a Form</title>
-                <p>This step illustrates the use of custom tags to render a radio button group in an
-                    HTML form and link it to the nested Page Flow <code>selectSport</code> Action method.</p>
-                <p>In the directory <code>C:/beehive_projects/pageflow_tutorial/sports</code>, create
-                    a file named <code>index.jsp</code>.</p>
+                <p>This step illustrates the use of custom tags to render a radio button group in an HTML form and 
+                   link it to the nested Page Flow <code>selectSport</code> Action method.</p>
+                <p>In the directory <code>pageflow_tutorial/sports</code>, create a file named <code>index.jsp</code>.</p>
                 <p>Edit index.jsp so it appears as follows.</p>
                 <p><strong><code>index.jsp</code></strong></p>
-                <source><![CDATA[<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+                <source><![CDATA[
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
 <%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
 <netui:html>
   <head>
@@ -951,16 +944,18 @@
       </netui:form>
     </p>
   </netui:body>
-</netui:html>]]></source>
+</netui:html>]]>
+</source>
                 <p>Save <code>index.jsp</code>.</p>
             </section>
-            <section id="confirm_data">
-                <title>To Confirm the Selected Data</title>
-                <p>In the directory <code>C:/beehive_projects/pageflow_tutorial/sports</code>, create
+            <section id="validation_confirm_data">
+                <title>Confirm the Selected Data</title>
+                <p>In the directory <code>pageflow_tutorial/sports</code>, create
                     a file named <code>confirm.jsp</code>.</p>
                 <p>Edit confirm.jsp so it appears as follows.</p>
                 <p><strong><code>confirm.jsp</code></strong></p>
-                <source><![CDATA[<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+                <source><![CDATA[
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
 <%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
 <netui:html>
   <head>
@@ -978,16 +973,15 @@
         <netui:button type="submit" value="Confirm"/>
     </netui:form>
   </netui:body>
-</netui:html>]]></source>
+</netui:html>
+]]></source>
                 <p>Save <code>confirm.jsp</code>.</p>
             </section>
-            <section id="compile_7">
-                <title>To Recompile and Redeploy the Page Flow</title>
-                <p>Compile and deploy the Page Flow using the same Ant and copy commands used in <a href="#compile_2">step 2</a>.</p>
-                <p>If you are asked to overwrite the old WAR file, enter 'Yes'.</p>
-                <p>Wait a few seconds for Tomcat to redeploy the WAR file, then move on to the next step.</p>
+            <section id="validation_build_deploy_again">
+                <title>Recompile and Redeploy the Web Application</title>
+                <p>Compile and (re)deploy the web application using the same steps as described <a href="#create_build_deploy">here</a>.</p>
             </section>
-            <section id="test_7">
+            <section id="validation_run_again">
                 <title>To Test the Page Flow Web Application</title>
                 <p>Visit the following link:</p>
                 <p><a class="fork" href="http://localhost:8080/pageflow_tutorial/begin.do">http://localhost:8080/pageflow_tutorial/begin.do</a></p>
@@ -1003,15 +997,16 @@
                    displayed in the Sport field.</p>
             </section>
         </section>
-        <section id="step_8_sharedflow">
+        <section id="sharedflow">
             <title>Step 8: Adding Actions to a Shared Flow</title>
             <section id="sharedflow_page">
                 <title>To Create a Common Destination JSP Page</title>
-                <p>In the directory <code>C:/beehive_projects/pageflow_tutorial</code>, create a
+                <p>In the directory <code>pageflow_tutorial</code>, create a
                     file named <code>help.jsp</code>.</p>
                 <p>Edit help.jsp so it appears as follows.</p>
                 <p><strong><code>help.jsp</code></strong></p>
-                <source><![CDATA[<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+                <source><![CDATA[
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
 <%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
 <netui:html>
   <head>
@@ -1023,21 +1018,19 @@
       Welcome to the Help Page
     </p>
   </netui:body>
-</netui:html>]]></source>
+</netui:html>]]>
+</source>
                 <p>Save <code>help.jsp</code>.</p>
             </section>
             <section id="sharedflow_action">
                 <title>To Make an Action available to multiple Page Flows</title>
-                <p>In this step you will add a Simple Action to the existing Shared Flow. The Action
-                    forwards to the help page created in the previous step and will be available to
-                    multiple Page Flows in the application.</p>
-                <p>Open the existing Shared Flow file <code>C:/beehive_projects/pageflow_tutorial/WEB-INF/src/shared/SharedFlow.java</code></p>
-                <p>Edit the <code>@Jpf.Controller</code> annotation for the Shared Flow controller
-                    class, <code>SharedFlow</code>, in the <code>SharedFlow.java</code> file and
-                    add the <code>simpleActions</code> property. Code to add appears in bold. Don't
-                    forget the comma after the <code>catches={...}</code> element!</p>
+                <p>In this step you will add a Simple Action to the existing Shared Flow.  The Action forwards to the 
+                    help page created in the previous step and will be available to multiple Page Flows in the application.</p>
+                <p>Open the existing Shared Flow file <code>pageflow_tutorial/WEB-INF/src/shared/SharedFlow.java</code></p>
+                <p>Edit the <code>@Jpf.Controller</code> annotation for the Shared Flow controller class, <code>SharedFlow</code>, in the <code>SharedFlow.java</code> file and add the <code>simpleActions</code> property. Code to add appears in bold. Don't forget the comma after the <code>catches={...}</code> element!</p>
                 <p><strong><code>SharedFlow.java</code></strong></p>
-                <source>...
+                <source>
+...
 
 @Jpf.Controller(
     catches={
@@ -1049,52 +1042,52 @@
     }</strong>
 )
 public class SharedFlow
-    extends SharedFlowController
-{
-
-    ...</source>
+    extends SharedFlowController {
+    ...
+}
+</source>
                 <p>Save <code>SharedFlow.java</code>.</p>
             </section>
-            <section id="link_sharedflow">
+            <section id="sharedflow_link">
                 <title>To Link a Page to the Shared Flow Action</title>
                 <p>In this step you will create a link from the JSP, <code>index.jsp</code> to the
                     Shared Flow Action.</p>
-                <p>Open the file <code>C:/beehive_projects/pageflow_tutorial/index.jsp</code>.</p>
+                <p>Open the file <code>pageflow_tutorial/index.jsp</code>.</p>
                 <p>Edit <code>index.jsp</code> so it appears as follows.  The code to add appears in bold type.</p>
                 <p><strong><code>index.jsp</code></strong></p>
-                <source>&lt;%@ page language="java" contentType="text/html;charset=UTF-8"%>
-&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
-&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
-&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
-&lt;netui:html>
-  &lt;head>
-    &lt;title>Web Application Page&lt;/title>
-    &lt;netui:base/>
-  &lt;/head>
-  &lt;netui:body>
-    &lt;p>
+                <source><![CDATA[
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%>
+<netui:html>
+  <head>
+    <title>Web Application Page</title>
+    <netui:base/>
+  </head>
+  <netui:body>
+    <p>
       New Web Application Page
-    &lt;/p>
-    &lt;p>
-      &lt;netui:anchor action="toPage2">Link to page2.jsp&lt;/netui:anchor>
-    &lt;/p>
-    <strong>&lt;netui:anchor action="shared.showHelp" popup="true">Help
-      &lt;netui:configurePopup location="false" width="550" height="150">
-      &lt;/netui:configurePopup>
-    &lt;/netui:anchor></strong>
-  &lt;/netui:body>
-&lt;/netui:html>
+    </p>
+    <p>
+      <netui:anchor action="toPage2">Link to page2.jsp</netui:anchor>
+    </p>
+    <strong><netui:anchor action="shared.showHelp" popup="true">Help
+      <netui:configurePopup location="false" width="550" height="150">
+      </netui:configurePopup>
+    </netui:anchor></strong>
+  </netui:body>
+</netui:html>
+]]>
                 </source>
                 <p>Save <code>index.jsp</code>.</p>
             </section>
-            <section id="compile_8">
-                <title>To Recompile and Redeploy the Page Flow</title>
-                <p>Compile and deploy the Page Flow using the same Ant and copy commands used in <a href="#compile_2">step 2</a>.</p>
-                <p>If you are asked to overwrite the old WAR file, enter 'Yes'.</p>
-                <p>Wait a few seconds for Tomcat to redeploy the WAR file, then move on to the next step.</p>
+            <section id="sharedflow_build_deploy">
+                <title>Recompile and Redeploy the Web Application</title>
+                <p>Compile and (re)deploy the web application using the same steps as described <a href="#create_build_deploy">here</a>.</p>
             </section>
-            <section id="test_8">
-                <title>To Test the Page Flow Web Application</title>
+            <section id="sharedflow_run">
+                <title>Test the Page Flow Web Application</title>
                 <p>Visit the following link:</p>
                 <p><a class="fork" href="http://localhost:8080/pageflow_tutorial/begin.do">http://localhost:8080/pageflow_tutorial/begin.do</a></p>
                 <p>You will be directed to the index.jsp page.</p>
@@ -1102,18 +1095,10 @@
                 <p>A popup window with the help.jsp page will be displayed.</p>
             </section>
         </section>
-<!--        <section id="summary">
-            <title>Summary: Page Flow Tutorial</title>
-            <p>This tutorial introduced you to the basics of building web applications with Beehive Page Flows.</p>
-            <p>Concepts and Tasks Introduced in This Tutorial</p>
-            <p>
-                [TODO: complete summary]
-            </p>
-        </section>-->
     </body>
     <footer>
         <legal>Java, J2EE, and JCP are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.<br/>
-	&copy; 2005, Apache Software Foundation
-	</legal>
+    &copy; 2005, Apache Software Foundation
+        </legal>
     </footer>
 </document>