<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
 "http://www.w3.org/TR/html4/loose.dtd">
<!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-->
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
 <meta name="Author" content="Malcolm Edgar"/>
 <meta name="description" lang="en" content="Apache Click Java web application framework"/>
 <meta name="keywords" lang="en" content="Apache Click, Click Framework, Java, JEE, J2EE, web application framework, open source"/>
 <title>Apache Click</title>
 <link rel="stylesheet" type="text/css" href="../help.css"/>
</head>
<body>
  
<h1>Examples</h1>
<p/>
Click provides an Examples web application to demonstrate Click features and 
common design patterns. The examples application is an important learning 
resource, and will help you to get up and running with Click as soon as
possible.
<p/>
This application will allows you to view the Page source code, templates and 
config files online.
<p/>
You can view this application online at 
<a target="_blank" class="external" href="http://www.avoka.com/click-examples/">http://www.avoka.com/click-examples/</a>

<a name="deploying" class="heading"></a><h3>Deploying Examples</h3>

Pre built <tt>dist/click-examples.war</tt> file is provided in the Click distribution. 
Simply copy this file to your application servers deployment directory.
<p/>
This WAR file will deploy to the contexts:

<blockquote>
<pre>
/click-examples
</pre>    

</blockquote>

<a name="deploying" class="heading"></a><h2>Building Examples</h2>

To build the Examples application see the <a href="developer-guide/building.html">Building</a>
topic for details.
<p/>
Please also see the <tt>examples/README.txt</tt> file for additional details.
<p>&nbsp;</p>

<h2>Other Example Applications</h2>
The Click source repository contains a few other webpplications that can be used
as example.
<h4>Click Bench</h4>
A performance test bench webapplication.
<p/>
You can checkout this application from
<a target="_blank" class="external" href="http://svn.apache.org/repos/asf/click/trunk/examples/click-bench/">http://svn.apache.org/repos/asf/click/trunk/examples/click-bench/</a>

<h4>Click Cayenne</h4>
A very simple demo webapplication based only on Click and Cayenne.
<p/>
You can checkout this application from
<a target="_blank" class="external" href="http://svn.apache.org/repos/asf/click/trunk/examples/click-cayenne/">http://svn.apache.org/repos/asf/click/trunk/examples/click-cayenne/</a>

<h4>Click Spring Cayenne</h4>
A webapplication based on Click, Spring and Cayenne. This application is derrived from the classical
Petclinic webapplication.
<p/>
You can checkout this application from
<a target="_blank" class="external" href="http://svn.apache.org/repos/asf/click/trunk/examples/click-spring-cayenne/">http://svn.apache.org/repos/asf/click/trunk/examples/click-spring-cayenne/</a>
<p/>
For details about the original Petclinic application used here, please also see the <tt>petclinic/war/petclinic.html</tt> file.
<p/>
To build this webapplication, please also see the <tt><a target="_blank" class="external" href="http://svn.apache.org/repos/asf/click/trunk/examples/click-spring-cayenne/">README.txt</a></tt> file about how to proceed.

<p>&nbsp;</p>

<h2>Third-party Example Applications</h2>

<h4>ClickClick Demo</h4>
A <a target="_blank" class="external" href="http://clickclick-examples.appspot.com/">live demo</a> is hosted on Google App Engine.
<p/>
This example demonstrates some of ClickClick's features.
Please see the <a target="_blank" class="external" href="http://code.google.com/p/clickclick/">ClickClick</a> project for more details.

<h4>jQuery Demo</h4>
A <a target="_blank" class="external" href="http://clickclick-jquery.appspot.com/">live demo</a> is hosted on Google App Engine.
<p/>
This example demonstrates the <a rel="nofollow" class="external" target="_blank" href="http://jquery.com/">jQuery</a>
integration provided in ClickClick.
Please see the <a target="_blank" class="external" href="http://code.google.com/p/clickclick/">ClickClick</a> project for more details.

<h4>JPA Demo</h4>
A <a target="_blank" class="external" href="http://click-jpa.appspot.com/">live demo</a> is hosted on Google App Engine.
<p/>
This example demonstrates using JPA and Click.
The Click-JPA example is available <a target="_blank" class="external" href="http://code.google.com/p/click-jpa-demo/">here</a>.

<p>&nbsp;</p>

</body>
</html>

