<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../../wtp.xsl"?>
<html>
<head>
  <meta name="root" content="../../../../" />
  <title>WTP Tutorials - Building a School Schedule Web Application</title>
</head>

<body>
<h1>WTP Tutorials - Building a School Schedule Web Application</h1>
<p>
<b>By Lawrence Mandel</b><BR/>
January 24, 2005<BR/>
<BR/>
</p>
<P>In this tutorial you will create a school schedule Web application. This application will allow students to input their courses and create a schedule. This tutorial will introduce you to JSP's, servlets and the Web Tools Platform project's server tools.
<BR/>

</P>
<h2>Prerequisites For The Tutorial</h2>
<OL>
	<LI>Web Tools Platform (WTP) project<BR/>The WTP project can be downloaded from <a href="http://download.eclipse.org/webtools/downloads/">http://download.eclipse.org/webtools/downloads/</a><BR/><BR/>
	</LI>
	<LI>Tomcat 5.0.28<BR/>Tomcat is available from <a href="http://jakarta.apache.org/tomcat/" target="_top">http://jakarta.apache.org/tomcat/</a><BR/><BR/></LI>
	<LI>JDK 1.4.2<BR/>Sun's JDK is available from <a href="http://java.sun.com/j2se/1.4.2/download.html" target="_top">http://java.sun.com/j2se/1.4.2/download.html</a><BR/><BR/>
	</LI>

</OL>

<h2>Installing The Tomcat Runtime In Eclipse</h2>
<P>In order to run the Web application from Eclipse (which will allow you to test and debug the application) Eclipse has to be told where to find Tomcat and where to find the JDK.  Tomcat requires a JDK so it can compile servlets and JSPs.</P>
<OL>
	<LI>Select Window -&gt; Preferences<B></B>.<BR/>
	<IMG border="0" src="images/webapp1.gif" width="550" height="340"/><BR/><BR/></LI>
	<LI>Select Java -&gt; Installed JREs from the menu on the left.<BR/>
	<IMG border="0" src="images/webapp2.gif" width="574" height="513"/><BR/><BR/></LI>
	<LI>Select Add... The Add JRE dialog will open. Select Browse for the JRE home directory and choose the location where you installed the JDK 1.4.2. Name the runtime Sun JDK 1.4.2 and click OK.<BR/>
	<IMG border="0" src="images/webapp3.gif" width="485" height="441"/><BR/><BR/></LI>
	<LI>The Sun JDK 1.4.2 now shows on the list of installed runtimes. Click OK.<BR/>
	<IMG border="0" src="images/webapp4.gif" width="574" height="513"/><BR/><BR/></LI>
	<LI>Select Window -&gt; Preferences.<BR/><BR/></LI>
	<LI>Select Server -&gt; Installed Runtimes from the menu on the left.<BR/>
	<IMG border="0" src="images/webapp5.gif" width="574" height="513"/><BR/><BR/></LI>
	<LI>Click on Add... Select Apache -&gt; Apache Tomcat v5.0 and click Next. Click Browse and select the location where you installed Tomcat. Select the Sun JDK 1.4.2 that you just installed and click Finish.<BR/>
	<IMG border="0" src="images/webapp6.gif" width="438" height="422"/><BR/><BR/></LI>
	<LI>Click OK to close the preferences dialog. Both the JDK and Tomcat are now configured in Eclipse.</LI>
	
</OL><h2>Creating A J2EE Project</h2>
<P>You will now create a J2EE Web project in which you will create the School Schedule application.</P>
<OL>
	<LI>Select File -&gt; New -&gt; Project. Select Web -&gt; J2EE Web Project and click Next.<BR/>
	<IMG border="0" src="images/webapp7.gif" width="500" height="500"/><BR/><BR/></LI>
	<LI>Name the project SchoolSchedule,  deselect Add module to an EAR project and click Finish. <BR/>
	<IMG border="0" src="images/webapp8.gif" width="504" height="502"/>
	<BR/>You will be prompted to switch to the J2EE perspective. Click Yes.<BR/><BR/></LI>
	</OL>The Project Explorer is populated with different types of Web
	applications. Your newly created project is located under Dynamic Web
	Projects. Expand your SchoolSchedule project. The Deployment Descriptor
	contains information about your Web project such as the servlets that
	your project contains. Expanding the Java Resources folder will reveal
	the JavaSource folder. This is where you will store all of your Java
	files including any servlets and supporting classes you create. The
	WebContent folder holds all of the files that will be directly
	accessible from your project once it is deployed. This folder will hold
	the JSP you will create that will display the schedule for your
	application.

<BR/>
<h2>Creating Class and Schedule Containers</h2>
<P>For your web application to pass class information between the JSP page that displays the schedule and the servlet that registers the classes with the schedule you will need a representation of a class and a representation of a schedule. A class will have a title, day of week, start time and end time. A schedule will be a collection of classes. To implement these two objects you will create two classes; SchoolClass and SchoolSchedule.</P>
<OL>
	<LI>Right click on the JavaSource folder and select New -&gt; Class. Name the class SchoolClass and set the package to org.eclipse.wtp.sample.classschedule. Click Finish. The SchoolClass class will now appear in the JavaSource folder and open in the Java editor.<BR/>
	<IMG border="0" src="images/webapp9.gif" width="495" height="563"/><BR/><BR/></LI>
	<LI>We said earlier that a SchoolClass object will need to hold a title, day, start time and end time. Create private variables for each of these.The title should be of type String and the rest should be of type int.<P id="code">private String title;<BR/>
	private int startTime;<BR/>
	private int endTime;<BR/>
	private int day;</P></LI>
	<LI>This information should be set when an instance of SchoolClass is created so you will need to create a constructor that will accept the four pieces of information. Create a constructor that takes in the four parameters and sets the class variables.<P id="code">public SchoolClass(String title, int startTime,
	int endTime, int day)<BR/>
	{<BR/>
	  this.title = title;<BR/>
	  this.startTime = startTime;<BR/>
	  this.endTime = endTime;<BR/>
	  this.day = day;<BR/>
	}</P></LI>
	<LI>You now need to create a way to access the object's information. Right click in the editor and select Source -&gt; Generate Getters and Setters... (Note: ensure you click within the class' curly braces.)<BR/>
	<IMG border="0" src="images/webapp10.gif" width="640" height="396"/><BR/><BR/></LI>
	<LI>Click Select Getters on the right. The four getter methods are now selected. Click OK.<BR/>
	<IMG border="0" src="images/webapp11.gif" width="432" height="581"/><BR/><BR/></LI>
	<LI>Save the SchoolClass file.<BR/><BR/></LI>
	<LI>You will now create the SchoolSchedule class which will act as a container for all of the classes. Right click on the package org.eclipse.wtp.sample.classschedule and select New -&gt; Class. Notice that the package field is automatically populated. Name the class SchoolSchedule and click Finish.<BR/><BR/></LI>
	<LI>Add a private list of classes to the SchoolSchedule class.
    <P id="code">private List classes = new ArrayList();</P>The List and ArrayList classes are underlined and flagged as errors as they have not yet been imported. Right click in the editor and select Source -&gt; Organize Imports. Select java.util.List and click Finish. The necessary import statements will be added to the class.<BR/><BR/></LI>
	<LI>Create the getter method for the classes list by right clicking in the editor within the class and selecting Source -&gt; Generate Getters and Setters... Click Select Getters on the right and click OK.<BR/><BR/></LI>
	<LI>You now need to create a method to add new classes to the list. Create a method named addClass that takes a parameter of SchoolClass and adds it to the list.
    <P id="code">
    public void addClass(SchoolClass schoolClass)<BR/>
    {<BR/>
  	  classes.add(schoolClass);<BR/>
    }
    </P></LI>
	<LI>Save the file.<BR/><BR/></LI>
</OL>
<h2>Adding Classes To The Schedule</h2>
<P> You will now create a Java Server Page (JSP) that will allow students to add a class to their schedule. JSPs provide a way to access information stored in Java objects and perform Java operations within an HTML page. Your JSP will contain a form where students can submit their information. In the following section you will create an action to process the form submission.</P>
<OL>
	<LI>Right click on the WebContent folder and select New -&gt; Other... Select Simple and then File. Click Next.<BR/>
	<IMG border="0" src="images/webapp12.gif" width="500" height="400"/>
	<BR/>Name the file Schedule.jsp and click Finish.
	The Schedule.jsp file opens in the JSP source page editor.<BR/><BR/></LI>
	<LI>You now need to create the form to submit courses. The structure of a JSP page is very similar to that of an HTML page. A JSP page can simply use more tags and offer more functionality. In this step you will really just be creating an HTML page with a form. Create an HTML page with a form that has a text box for submitting a title, check boxes for the days of the week, and a drop-down menu for both the start time and end time of the class. The form will also need a submit button. You should ignore the action attribute on the FORM element for now. We will look at this in the next section when you create your submit action.<P id="code">
    &lt;HTML&gt;<BR/>
	  &lt;HEAD&gt;<BR/>
	    &lt;TITLE&gt;Student Schedule&lt;/TITLE&gt;<BR/>
	  &lt;/HEAD&gt;<BR/>
	<BR/>
	  &lt;BODY&gt;<BR/>
	    &lt;FORM action=&quot;&quot; method=&quot;post&quot;&gt;<BR/>
	      Course Name: &lt;INPUT type=&quot;text&quot; name=&quot;title&quot; size=&quot;35&quot;&gt;&lt;BR&gt;<BR/>
	      Course Time: <BR/>
	      Sun&lt;INPUT type=&quot;checkbox&quot; name=&quot;day&quot; value=&quot;sun&quot;&gt; <BR/>
	      Mon&lt;INPUT type=&quot;checkbox&quot; name=&quot;day&quot; value=&quot;mon&quot;&gt; <BR/>
	      Tue&lt;INPUT type=&quot;checkbox&quot; name=&quot;day&quot; value=&quot;tue&quot;&gt; <BR/>
	      Wed&lt;INPUT type=&quot;checkbox&quot; name=&quot;day&quot; value=&quot;wed&quot;&gt; <BR/>
	      Thu&lt;INPUT type=&quot;checkbox&quot; name=&quot;day&quot; value=&quot;thu&quot;&gt; <BR/>
	      Fri&lt;INPUT type=&quot;checkbox&quot; name=&quot;day&quot; value=&quot;fri&quot;&gt; <BR/>
	      Sat&lt;INPUT type=&quot;checkbox&quot; name=&quot;day&quot; value=&quot;sat&quot;&gt; <BR/>
	      &lt;SELECT name=&quot;starttime&quot;&gt;<BR/>
	        &lt;OPTION value=&quot;8&quot;&gt;8:00am&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;9&quot;&gt;9:00am&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;10&quot;&gt;10:00am&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;11&quot;&gt;11:00am&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;12&quot;&gt;12:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;13&quot;&gt;1:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;14&quot;&gt;2:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;15&quot;&gt;3:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;16&quot;&gt;4:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;17&quot;&gt;5:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;18&quot;&gt;6:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;19&quot;&gt;7:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;20&quot;&gt;8:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;21&quot;&gt;9:00pm&lt;/OPTION&gt;<BR/>
	      &lt;/SELECT&gt; <BR/>
	      to <BR/>
	      &lt;SELECT name=&quot;endtime&quot;&gt;<BR/>
	        &lt;OPTION value=&quot;9&quot;&gt;9:00am&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;10&quot;&gt;10:00am&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;11&quot;&gt;11:00am&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;12&quot;&gt;12:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;13&quot;&gt;1:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;14&quot;&gt;2:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;15&quot;&gt;3:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;16&quot;&gt;4:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;17&quot;&gt;5:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;18&quot;&gt;6:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;19&quot;&gt;7:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;20&quot;&gt;8:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;21&quot;&gt;9:00pm&lt;/OPTION&gt;<BR/>
	        &lt;OPTION value=&quot;22&quot;&gt;10:00pm&lt;/OPTION&gt;<BR/>
	      &lt;/SELECT&gt;<BR/>
	      &lt;BR&gt;<BR/>
	      &lt;BR&gt;<BR/>
	      &lt;INPUT type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;Add Course&quot;&gt;<BR/>
	    &lt;/FORM&gt;<BR/>
	<BR/>
	  &lt;/BODY&gt;<BR/>
	&lt;/HTML&gt;</P>Save the file.</LI>
	<LI>You should now test that your page looks correct. To do this you will run the current version of your application of the Tomcat server you configured earlier. Right click on Schedule.jsp and select Run As -&gt; Run on Server... Select Tomcat v5.0 Server. Ensure that Set server as project default is selected and click Next.<BR/>
	<IMG border="0" src="images/webapp13.gif" width="536" height="594"/><BR/><BR/>
	</LI>
	<LI>Ensure that your SchoolSchedule project is listed under Configured projects. If it is not, add it to the list of Configured projects by selecting it and then selecting Add. Click Finish.<BR/><BR/></LI>
	<LI>Eclipse will now startup the Tomcat server and then display your page in the internal Web browser. Your page should look something like the following screen shot.<BR/>
	<IMG border="0" src="images/webapp14.gif" width="653" height="408"/></LI>
</OL>
<h2>The Submit Action</h2>
<P>When the form in Schedule.jsp is submitted an action needs to be performed on the data. In this section you will create a servlet that processes the input from the form, creates the necessary SchoolClass objects and adds them to the SchoolSchedule. A servlet is a Java class that executes on the server. In order to have the class information from previous submits stay available the SchoolSchedule will be added to a session object. (If you do not do this the schedule will only be able to show the information from the last form submission.)</P>
<OL>
	<LI>To create the servlet right click on the org.eclipse.wtp.sample.classschedule package and select New -&gt; Class. Name the servlet ScheduleServlet. Select Browse next to Superclass and select javax.servlet.http.HttpServlet. Select Add next to Interfaces and add javax.servlet.Servlet. Click Finish.<BR/>
	<IMG border="0" src="images/webapp15.gif" width="495" height="563"/><BR/><BR/>
	</LI>
	<LI>Your newly created ScheduleServlet will appear in the JavaSource folder and open in the Java editor. Right click in the editor and select Source -&gt; Override/Implement Methods...<BR/>
	<IMG border="0" src="images/webapp16.gif" width="595" height="327"/><BR/><BR/>
	</LI>
	<LI>Select the doPost(HttpServletRequest, HttpServletResponse) method and click OK. The doPost method will now show in your ScheduleServlet class. Rename arg0 to request and arg1 to response.<BR/><BR/></LI>
	<LI>The doPost method is where you will take the input from the form and
	perform your actions. The doPost method is used because you specified that
	your form would submit data using the POST method. You could also have
	used the GET method in which case your servlet would need to implement
	doGet instead of doPost.<BR/>
	<BR/>
	The first thing you need to do in the doPost method is read in the information submitted by the form. This information can be obtained through the request object's getParameter method. the getParameterValues method is used for the days as there may be more than one day selected.<P id="code">String title = request.getParameter(&quot;title&quot;);<BR/>
	int starttime = Integer.parseInt(request.getParameter(&quot;starttime&quot;));<BR/>
	int endtime = Integer.parseInt(request.getParameter(&quot;endtime&quot;));<BR/>
	String[] days = request.getParameterValues(&quot;day&quot;);
</P>
    </LI>
	<LI>The next step is to obtain the existing SchoolSchedule, if there is one, or to create a new one if one hasn't been created yet.
    <P id="code">SchoolSchedule schedule = <BR/>
	    (SchoolSchedule)request.getSession(true).getAttribute(&quot;schoolschedule&quot;);<BR/>
	if(schedule == null)<BR/>
	{<BR/>
	  schedule = new SchoolSchedule();<BR/>
	}
    </P></LI>
	<LI>Now you will create new SchoolClass objects. As there may be many days for the school class you are adding  you will iterate over all of the days and create a new SchoolClass object for each day that was selected. Creating SchoolClass objects in this way will make displaying them via the Schedule.jsp easier.
    After a SchoolClass object is created you will add it to the schedule.<P id="code">
    if(days != null)<BR/>
	{<BR/>
	  for(int i = 0; i &lt; days.length; i++)<BR/>
	  {<BR/>
	    String dayString = days[i];<BR/>
	    int day;<BR/>
	    if(dayString.equalsIgnoreCase(&quot;SUN&quot;)) day = 0;<BR/>
	    else if(dayString.equalsIgnoreCase(&quot;MON&quot;)) day = 1;<BR/>
	    else if(dayString.equalsIgnoreCase(&quot;TUE&quot;)) day = 2;<BR/>
	    else if(dayString.equalsIgnoreCase(&quot;WED&quot;)) day = 3;<BR/>
	    else if(dayString.equalsIgnoreCase(&quot;THU&quot;)) day = 4;<BR/>
	    else if(dayString.equalsIgnoreCase(&quot;FRI&quot;)) day = 5;<BR/>
	    else day = 6;<BR/>
	<BR/>
	    SchoolClass clazz = new SchoolClass(title, starttime, endtime, day);<BR/>
	    schedule.addClass(clazz);<BR/>
	  }<BR/>
	}
    </P>
    </LI>
	<LI>You need to set the schedule in the session so Schedule.jsp will have access to it and forward control back to Schedule.jsp.
    <P id="code">request.getSession().setAttribute(&quot;schoolschedule&quot;, schedule);<BR/>
	getServletContext().getRequestDispatcher(&quot;/Schedule.jsp&quot;).forward(request, response);
    </P>
    </LI>
	<LI>Save the class.<BR/><BR/></LI>
	<LI>You have now created your servlet but your Web application does not yet know about it. In order for your Web application to know about the servlet you will have to define it in the Deployment Descriptor. Double click on the Deployment Descriptor under the SchoolSchedule project and copy the following lines under the display element
    <P id="code">
    &lt;servlet&gt;<BR/>
	  &lt;description&gt;&lt;/description&gt;<BR/>
	  &lt;display-name&gt;Schedule&lt;/display-name&gt;<BR/>
	  &lt;servlet-name&gt;Schedule&lt;/servlet-name&gt;<BR/>
	  &lt;servlet-class&gt;<BR/>
	    org.eclipse.wtp.sample.classschedule.ScheduleServlet<BR/>
	  &lt;/servlet-class&gt;<BR/>
	&lt;/servlet&gt;<BR/>
	&lt;servlet-mapping&gt;<BR/>
	  &lt;servlet-name&gt;Schedule&lt;/servlet-name&gt;<BR/>
	  &lt;url-pattern&gt;/Schedule&lt;/url-pattern&gt;<BR/>
	&lt;/servlet-mapping&gt;
    </P>
    </LI>
    <LI>
    Now that you have defined where your servlet action is located you can specify the location in your Schedule JSP. Open the Schedule.jsp file and specify the action location of your form.
   <P id="code">
   &lt;FORM action=&quot;/SchoolSchedule/Schedule&quot; method=&quot;post&quot;&gt;<BR/>
   </P>
    </LI>
</OL>
<h2>Displaying The Schedule</h2>
<P>
Your servlet has now been defined with your Web application and is ready to be used. You can now return to Schedule.jsp and work on displaying the Schedule. In this section you will use some of the custom tag libraries that are available for working with JSPs.</P>
<OL>
	<LI>In order to use the standard tag libraries you will first have to download and install them into our project. Open your Web browser to <a href="http://jakarta.apache.org/taglibs/" target="_top">http://jakarta.apache.org/taglibs/</a>. Under JCP Standardized Tag Libraries on the left select Standar-1.1:JSTL 1.1(2.0). Scroll down to the Download section and select the first link, Download the Standard Tag Library Release from an Apache Jakara Project Mirror. Select Taglibs and then Library Releases. Select standard and then select to download
	jakarta-taglibs-standard-current.zip. Once the zip file download, open it and extract jstl.jar and standard.jar into the WebContent/WEB-INF/lib folder in your project. Select your project, right click on it and select Refresh. The libraries are automatically added to your Java classpath. Your project should now look like this.<BR/>
	<IMG border="0" src="images/webapp17.gif" width="265" height="436"/><BR/><BR/></LI>
	<LI>Open Schedule.jsp in the JSP source page editor.<BR/><BR/></LI>
	<LI>In order to use the tag libraries you have just downloaded you will have to declare them in your JSP. At the top of the JSP file (above the HTML element) add in the following line
    <P id="code">&lt;%@taglib uri=&quot;http://java.sun.com/jsp/jstl/core&quot; prefix=&quot;c&quot;%&gt;</P>
    </LI>
	<LI>Next we will dynamically
    create a table that will hold our schedule. The table will list the days of the week and the time from 8:00am until 9:00pm. For each time slot we will check to see if there is a class and if there is we will display the title of the class.<BR/>
	<BR/>
	First create the header of the table as follows.<P id="code">&lt;TABLE border=&quot;1&quot; cellspacing=&quot;0&quot;&gt;<BR/>
	  &lt;TBODY&gt;<BR/>
	    &lt;TR&gt;<BR/>
	      &lt;TH align=&quot;center&quot; valign=&quot;middle&quot; width=&quot;80&quot;&gt;&lt;/TH&gt;<BR/>
	      &lt;TH align=&quot;center&quot; valign=&quot;middle&quot; width=&quot;100&quot;&gt;Sunday&lt;/TH&gt;<BR/>
	      &lt;TH align=&quot;center&quot; valign=&quot;middle&quot;&gt;Monday&lt;/TH&gt;<BR/>
	      &lt;TH align=&quot;center&quot; valign=&quot;middle&quot;&gt;Tuesday&lt;/TH&gt;<BR/>
	      &lt;TH align=&quot;center&quot; valign=&quot;middle&quot;&gt;Wednesday&lt;/TH&gt;<BR/>
	      &lt;TH align=&quot;center&quot; valign=&quot;middle&quot;&gt;Thursday&lt;/TH&gt;<BR/>
	      &lt;TH align=&quot;center&quot; valign=&quot;middle&quot;&gt;Friday&lt;/TH&gt;<BR/>
	      &lt;TH align=&quot;center&quot; valign=&quot;middle&quot;&gt;Saturday&lt;/TH&gt;<BR/>
	    &lt;/TR&gt;</P>
    </LI>
	<LI>Now you will create the content of the table.
    In order to create the content you will iterate through the times of the day and the days of the week. As your schedule will display from 8:00am to 9:00pm you will iterate from 8 to 21 for the time. For the days of the week you will iterate from 0 to 6. There is some simple logic for displaying the time in a nice way. As you can see below, the tags that are prefixed with 'c' are from the custom tag library you imported earlier. These tags allow for the iteration and conditional logic you are using. In the third forEach loop you can see where the information is retrieved from the school schedule object your servlet creates and where the individual information is retrieved from each SchoolClass object.<P id="code">    &lt;c:forEach begin=&quot;8&quot; end=&quot;21&quot; step=&quot;1&quot; var=&quot;time&quot;&gt;<BR/>
	      &lt;TR&gt;<BR/>
	        &lt;TD align=&quot;center&quot; valign=&quot;middle&quot; width=&quot;80&quot;&gt;<BR/>
	          &lt;c:choose&gt;<BR/>
	            &lt;c:when test=&quot;${time == 12}&quot;&gt;<BR/>
	              &lt;c:out value=&quot;${time}&quot; /&gt;:00pm<BR/>
	            &lt;/c:when&gt;<BR/>
	            &lt;c:when test=&quot;${time &gt; 12}&quot;&gt;<BR/>
	              &lt;c:out value=&quot;${time - 12}&quot; /&gt;:00pm<BR/>
	            &lt;/c:when&gt;<BR/>
	            &lt;c:otherwise&gt;<BR/>
	              &lt;c:out value=&quot;${time}&quot; /&gt;:00am<BR/>
	            &lt;/c:otherwise&gt;<BR/>
	          &lt;/c:choose&gt;&lt;/TD&gt;<BR/>
	          &lt;c:forEach begin=&quot;0&quot; end=&quot;6&quot; step=&quot;1&quot; var=&quot;day&quot;&gt;<BR/>
	            &lt;TD align=&quot;center&quot; valign=&quot;middle&quot; width=&quot;100&quot;&gt;<BR/>
	              &lt;c:forEach items=&quot;${schoolschedule.classes}&quot; var=&quot;clazz&quot;&gt;<BR/>
	                &lt;c:if test=&quot;${clazz.startTime &lt;= time <BR/>
	                            &amp;&amp; clazz.endTime &gt; time <BR/>
	                            &amp;&amp; clazz.day == day}&quot;&gt;<BR/>
	                  &lt;c:out value=&quot;${clazz.title}&quot; /&gt;<BR/>
	                &lt;/c:if&gt;<BR/>
	              &lt;/c:forEach&gt;<BR/>
	            &lt;/TD&gt;<BR/>
	          &lt;/c:forEach&gt;<BR/>
            &lt;/TR&gt;<BR/>
	      &lt;/c:forEach&gt;<BR/>
	    &lt;/TBODY&gt;<BR/>
	  &lt;/TABLE&gt;</P>
    </LI>
	<LI>Save the Schedule.jsp file.</LI>
</OL>
<h2>Running And Testing The School Schedule Web Application</h2>
<P>Your school schedule application is now complete. Now it is time to take it for a spin.</P>
<OL>
	<LI>Right click on Schedule.jsp and select Run As -&gt; Run on Server...<BR/><BR/></LI>
	<LI>A Web browser window will open with the application. Notice that the calendar is initially empty. Add a class to the calendar and click Add Course. The course is now added to the calendar. For example, if you add the course &quot;Intro to Computer Programming 101&quot; on Mon, Wed and Fri from 10:00am until 11:00am your schedule will now look like the following.<BR/>
	<IMG border="0" src="images/webapp18.gif" width="655" height="603"/><BR/><BR/>
	</LI>
	<LI>Experiment adding more courses into your schedule.</LI>
</OL>
<h2>Summary</h2>
<P>In this tutorial you learned how to configure Eclipse to work with Tomcat and create a J2EE Web project that uses a servlet and a JSP to create a student class schedule Web application. This application, while simple, provides a good introduction to Java Web development and some of the Web development tools available in the Eclipse Web Tools Platform project.</P>
<P></P>
<P>
</P>
</body>
</html>
