| <chapter id="intro"> |
| <title>Introduction</title> |
| <para>Welcome to Tapestry!</para> |
| <para> |
| Tapestry is an application framework for developing web applications. It uses |
| a component object model to represent the pages of a web application. This is |
| similar to spirit to using the Java Swing component object model to build GUIs. |
| </para> |
| <para> |
| This tutorial exists to help newcomers quickly understand Tapestry. |
| <xref linkend="intro"/> |
| begins by providing some detail on various ways in which you can use Tapestry in your environment. |
| <xref linkend="getting-started"/> and <xref linkend="Introductory-examples"/> provide both a basic |
| understanding of Tapestry, along with some introductory examples. |
| |
| <xref linkend="pages"/>, |
| <xref linkend="forms"/>, |
| <xref linkend="built-ins"/>, |
| <xref linkend="assets"/> and |
| <xref linkend="localization"/> |
| explain the core Tapestry concepts in detail, providing full |
| examples along the way to assist you in learning how the framework is used. |
| |
| The remainder of the tutorial provides useful information on advanced topics including component creation, |
| usage of the component inspector, EJB support, and optimizations. |
| </para> |
| |
| <para> |
| |
| </para> |
| |
| <section id="working-with-tapestry"> |
| <title>Working with Tapestry</title> |
| <para> |
| The goal of Tapestry is to eliminate most of the unnecessary <footnote><para> |
| Session management, manual validation and other "application plumbing" tasks. In other words, |
| you get to focus on the problem you're trying to solve as opposed to writting a web framework |
| every time you go to write a web app or site. |
| </para></footnote> |
| coding in a web application. Under Tapestry, |
| nearly all code is directly related to application functionality, with very little "plumbing". If you |
| have previously developed a web application using Microsoft Active Server Pages, JavaServer |
| Pages or Java Servlets, you may take for granted all the plumbing: writing servlets, assembling |
| URLs, parsing URLs, managing objects inside the &HttpSession;, etc. |
| </para> |
| <para> |
| Tapestry takes care of nearly all of that, for free. It allows for the development of rich, highly |
| interactive applications. |
| </para> |
| <para> |
| Before you get into the wonders of Tapestry, you will need to setup your development |
| environment such that you are able to both run the provided tutorial applications, |
| and also such that you are able to |
| compile and run the code that you develop while moving through this tutorial. |
| If you're keen to read through some of the tutorial content without doing this setup, |
| you can skip to <xref linkend="getting-started"/>. |
| </para> |
| </section> |
| |
| <section id="environment-setup"> |
| <title>Setting up the environment</title> |
| |
| <para> |
| This document expects that you will have extracted the full Tapestry distribution to your |
| <filename class="directory">C:</filename> drive. |
| <footnote> <para> |
| If you are using Solaris or another non-Windows operating system, you're expected |
| to be savvy enough to translate to a sensibly constructed file system. |
| </para></footnote> |
| |
| This will have created a directory <filename class="directory">C:\Tapestry-<replaceable>x.x</replaceable> |
| </filename> |
| and, beneath it, several more directories. |
| <footnote> <para> |
| The three numbers are the release number. At the time of this writing, the release |
| was 2.3, but this is constantly changing. Simply adjust the actual pathname to |
| reflect the release of Tapestry you downloaded. |
| </para></footnote> |
| </para> |
| <para> |
| The source code for the Tutorial is distributed as a JAR file, |
| <filename>src/examples-src.jar</filename>. A precompiled WAR file, |
| <filename>lib/tutorial.war</filename> is included in the distribution. |
| The Tapestry distribution includes an &Ant; build file that allows the |
| Tutorial to be directly executed. Ant release 1.5 is required. |
| </para> |
| |
| <para> |
| From the Tapestry root directory, |
| execute the command <command>ant -emacs run-tutorial</command>, which will launch the |
| Jetty server for the Tutorial. |
| </para> |
| <para> |
| Once Jetty is running, you can access the Tutorials using the URL |
| <ulink url="http://localhost:8080/tutorial"> |
| <filename>http://localhost:8080/tutorial</filename> |
| </ulink>. |
| You should do this now, in order to check that your |
| environment is setup correctly so far. |
| </para> |
| <figure> |
| <title>Tutorial Index Page</title> |
| <mediaobject> |
| <imageobject> |
| <imagedata fileref="images/tutorial-index.png" format="PNG"/> |
| </imageobject> |
| </mediaobject> |
| </figure> |
| |
| Tapestry can exist in any Servlet (v2.1 +) compatible container, |
| for example JBoss. If you wish to deploy and run the tutorial in |
| an alternative environment please see <xref linkend="integration"/> |
| </section> |
| |
| <section id="basic-dev-env"> |
| <title>A basic development environment</title> |
| <para> |
| This section details how to setup a development environment suitable |
| for use with this tutorial. It will provide basic &Ant; support, and |
| the ability to test your examples using &Jetty;. |
| </para> |
| |
| <para> |
| Within the <filename>examples</filename> directory, you will find a sample |
| build environment (<ulink url="examples/DevelopmentEnvironment.zip"> |
| <filename>tutorial-environment.zip</filename>. |
| </ulink>), which you can use as you progress through this document. |
| This includes a build file capable of: |
| <orderedlist> |
| <listitem>Compiling the code</listitem> |
| <listitem>Packaging your developed code into a WAR</listitem> |
| <listitem>Running a Jetty instance, using your compiled code, and</listitem> |
| <listitem>Deploying your code into a user specified directory (for J2EE containers)</listitem> |
| </orderedlist> |
| </para> |
| <para> |
| To setup your environment, perform the following steps: |
| <orderedlist> |
| <listitem>The first step is to decide a directory for your example code. |
| This tutorial uses <filename class="directory">C:\TapestryExample</filename>. |
| <footnote><para>As before, it is assumed that if you are using a non-Windows environment, |
| that you have the knowledge necessary to translate the paths</para></footnote> |
| </listitem> |
| <listitem>Extract the contents of the archive <filename>tutorial-environment.zip</filename> |
| into this new directory.</listitem> |
| <listitem>Open the file <filename>build.xml</filename> with your favourite editor, |
| and change the properties as listed below: |
| <table> |
| <title>Ant Build Properties</title> |
| <tgroup cols="2" align="left" colsep="1" rowsep="1"> |
| <thead> |
| <row> |
| <entry>Property Name</entry> |
| <entry>Example Value</entry> |
| </row> |
| </thead> |
| <tbody> |
| <row> |
| <entry>deployment.dir</entry> |
| <entry><filename>c:\JBoss-3.0.0\server\default\deploy</filename></entry> |
| </row> |
| <row> |
| <entry>tapestry.install.dir</entry> |
| <entry><filename>c:\Tapestry-<replaceable>x.x</replaceable></filename></entry> |
| </row> |
| </tbody> |
| </tgroup> |
| </table> |
| </listitem> |
| <listitem>Save the file :-)</listitem> |
| <listitem> |
| <para> |
| Go to a command console, to the directory you will be using |
| for development. In the case of this tutorial, that is |
| <filename class="directory">C:\TapestryExample</filename> |
| and type 'ant'. If all goes will, you will see a message saying that the build was successful. |
| </para> |
| </listitem> |
| <listitem> |
| <para> |
| Type 'ant run', and then open a web browser to |
| <ulink url="http://localhost:8081/learn-tapestry"> |
| <filename>http://localhost:8081/learn-tapestry</filename> |
| </ulink> |
| <footnote><para> |
| Note that this is intentionally a |
| different port number from the tapestry tutorial example itself. |
| It means you can run both at once if you wish.</para> |
| </footnote> |
| </para> |
| <para> |
| <figure> |
| <title>What you should see, when you click on the link above</title> |
| <mediaobject> |
| <imageobject> |
| <imagedata fileref="images/tapestry-dev-env.png" format="PNG"/> |
| </imageobject> |
| </mediaobject> |
| </figure> |
| </para> |
| </listitem> |
| </orderedlist> |
| A brief overview of the tasks provided by the script: |
| <variablelist> |
| <varlistentry> |
| <term>compile</term> |
| <listitem>Compiles any code within the <filename>src\</filename> directory (which is created for you by the |
| script, if you don't create it yourself)</listitem> |
| </varlistentry> |
| <varlistentry> |
| <term>war</term> |
| <listitem>Packages up the compiled classes, Tapestry libs, and other 3rd party libs into |
| a WAR file for deployment into a Servlet container</listitem> |
| </varlistentry> |
| <varlistentry> |
| <term>deploy</term> |
| <listitem>Builds the WAR if it does not exist, and copies it to the deployment |
| location specified by <varname>deployment.dir</varname></listitem> |
| </varlistentry> |
| <varlistentry> |
| <term>run</term> |
| <listitem>Runs your compiled Tapestry Application via Jetty, on port 8081</listitem> |
| </varlistentry> |
| </variablelist> |
| </para> |
| </section> |
| </chapter> |