Author: buildbot
Date: Tue May  5 00:22:37 2020
New Revision: 1060159

Log:
Production update by buildbot for tapestry

Modified:
    websites/production/tapestry/content/cache/main.pageCache
    websites/production/tapestry/content/tapestry-tutorial.html

Modified: websites/production/tapestry/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/tapestry/content/tapestry-tutorial.html
==============================================================================
--- websites/production/tapestry/content/tapestry-tutorial.html (original)
+++ websites/production/tapestry/content/tapestry-tutorial.html Tue May  5 
00:22:37 2020
@@ -160,7 +160,7 @@
                 <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="getting-started.html">Getting Started</a>
+                        <a href="tapestry-tutorial.html">Tapestry Tutorial</a>
                 
                         
                     </div>
@@ -169,7 +169,7 @@
                 <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a href="tapestry-tutorial.html">Tapestry Tutorial</a>
+                        <a href="getting-started.html">Getting Started</a>
                 
                         
                     </div>
@@ -204,7 +204,7 @@
 </div>
 
 
-<h1 id="TapestryTutorial-TableofContents">Table of Contents</h1><ul 
class="childpages-macro"><li><a 
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a></li><li><a href="creating-the-skeleton-application.html">Creating 
The Skeleton Application</a></li><li><a 
href="exploring-the-project.html">Exploring the Project</a></li><li><a 
href="implementing-the-hi-lo-guessing-game.html">Implementing the Hi-Lo 
Guessing Game</a></li><li><a 
href="using-beaneditform-to-create-user-forms.html">Using BeanEditForm To 
Create User Forms</a></li><li><a 
href="using-tapestry-with-hibernate.html">Using Tapestry With 
Hibernate</a></li></ul><h1 
id="TapestryTutorial-Introduction">Introduction</h1><p>Welcome to 
Tapestry!</p><p>This is a tutorial for people who will be creating Tapestry web 
applications. It doesn't matter whether you have experience with earlier 
versions of Tapestry or other web frameworks. In fact, in some ways, the less 
you know about web development in general, the 
 better off you may be ... that much less to unlearn!</p><p>You do need to have 
a reasonable understanding of HTML, a smattering of XML, and a good 
understanding of basic Java language features, including Annotations.</p><h1 
id="TapestryTutorial-TheChallengesofWebApplicationDevelopment">The Challenges 
of Web Application Development</h1><p>If you're used to developing web 
applications using servlets and JSPs, or with Struts, you are simply used to a 
lot of pain. These are environments with few safety net; Struts and the Servlet 
API have no idea how your application is structured, or how the different 
pieces fit together. Any URL can be an action and any action can forward to any 
view (usually a JSP) to provide an HTML response to the web browser. The pain 
is the unending series of small, yet important, decisions you have to make as a 
developer (and communicate to the rest of your team). What are the naming 
conventions for actions, for pages, for attributes stored in the HttpSession or
  HttpServletRequest? Where do cross-cutting concerns such as database 
transactions, caching and security get implemented (and do you have to 
cut-and-paste Java or XML to make it work?) How are your packages organized ... 
where to the user interface classes go, and where do the data and entity 
objects go? How do you share code from one part of your application to 
another?</p><p>On top of all that, the traditional approaches thrust something 
most unwanted in your face: <em>multi-threaded coding</em>. Remember back to 
Object Oriented Programming 101 where an object was defined as a bundle of data 
and operations on that data? You have to unlearn that lesson as soon as you 
build a traditional web application, because web applications are 
multi-threaded. An application server could be handling dozens or hundreds of 
requests from individual users, each in their own thread, and each sharing the 
exact same objects. Suddenly, you can't store data inside an object (a servlet 
or a Struts Action
 ) because whatever data you store for one user will be instantly overwritten 
by some other user.</p><p>Worse, your objects each have only one operation: 
<code>doGet()</code> or <code>doPost()</code>.</p><p>Meanwhile, most of your 
day-to-day work involves deciding how to package up some data already inside a 
particular Java object and squeeze that data into a URL's query parameters, so 
that you can write more code to convert it back if the user clicks that 
particular link. And don't forget editing a bunch of XML files to keep the 
servlet container, or the Struts framework, aware of these 
decisions.</p><p>Just for laughs, remember that you have to rebuild, redeploy 
and restart your application after virtually any change. Is any of this 
familiar? Then perhaps you'd appreciate something a little <em>less</em> 
familiar: Tapestry.</p><h1 id="TapestryTutorial-TheTapestryWay">The Tapestry 
Way</h1><p>Tapestry uses a very different model: a structured, organized world 
of pages, and components
  within pages. Everything has a very specific name (that you provide). Once 
you know the name of a page, you know the location of the Java class for that 
page, the location of the template for that page, and the total structure of 
the page. Tapestry knows all this as well, and can make things <strong>just 
work</strong>.</p><p>As we'll see in the following pages, Tapestry lets you 
code in terms of your objects. You'll barely see any Tapestry classes, outside 
of a few Java annotations. If you have information to store, store it as fields 
of your classes, not inside the HttpServletRequest or HttpSession. If you need 
some code to execute, it's just a simple annotation or method naming convention 
to get Tapestry to invoke that method, at the right time, with the right 
data.</p><p>Tapestry also shields you from most of the multi-threaded aspects 
of web application development. Tapestry manages the life cycle of your page 
and components objects, and the fields of the pages and components, 
 in a thread-safe way. Your page and component classes always look like simple, 
standard <a class="external-link" 
href="http://en.wikipedia.org/wiki/Plain_Old_Java_Object"; 
rel="nofollow">POJOs</a>.</p><p>Tapestry began in January 2000, and it now 
reflects over eighteen years of experience of the entire Tapestry community. 
Tapestry brings to the table all that experience about the best ways to build 
scalable, maintainable, robust, internationalized, and Ajax-enabled 
applications.</p><h1 id="TapestryTutorial-GettingtheTutorialSource">Getting the 
Tutorial Source</h1><p>Although you won't need it, the source code for this 
tutorial is available on <a class="external-link" 
href="https://github.com/hlship/tapestry5-tutorial"; 
rel="nofollow">GitHub</a>.</p><h1 id="TapestryTutorial-TimetoBegin">Time to 
Begin</h1><p>Okay, enough background. Now let's dig in: <a 
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a></p></div>
+<h1 id="TapestryTutorial-TableofContents">Table of Contents</h1><ul 
class="childpages-macro"><li><a 
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a></li><li><a href="creating-the-skeleton-application.html">Creating 
The Skeleton Application</a></li><li><a 
href="exploring-the-project.html">Exploring the Project</a></li><li><a 
href="implementing-the-hi-lo-guessing-game.html">Implementing the Hi-Lo 
Guessing Game</a></li><li><a 
href="using-beaneditform-to-create-user-forms.html">Using BeanEditForm To 
Create User Forms</a></li><li><a 
href="using-tapestry-with-hibernate.html">Using Tapestry With 
Hibernate</a></li></ul><h1 
id="TapestryTutorial-Introduction">Introduction</h1><p>Welcome to 
Tapestry!</p><p>This is a tutorial for people who will be creating Tapestry web 
applications. It doesn't matter whether you have experience with earlier 
versions of Tapestry or other web frameworks. In fact, in some ways, the less 
you know about web development in general, the 
 better off you may be ... that much less to unlearn!</p><p>You do need to have 
a reasonable understanding of HTML, a smattering of XML, and a good 
understanding of basic Java language features, including Annotations.</p><h1 
id="TapestryTutorial-TheChallengesofWebApplicationDevelopment">The Challenges 
of Web Application Development</h1><p>If you're used to developing web 
applications using servlets and JSPs, or with Struts, you are simply used to a 
lot of pain. These are environments with few safety net; Struts and the Servlet 
API have no idea how your application is structured, or how the different 
pieces fit together. Any URL can be an action and any action can forward to any 
view (usually a JSP) to provide an HTML response to the web browser. The pain 
is the unending series of small, yet important, decisions you have to make as a 
developer (and communicate to the rest of your team). What are the naming 
conventions for actions, for pages, for attributes stored in the HttpSession or
  HttpServletRequest? Where do cross-cutting concerns such as database 
transactions, caching and security get implemented (and do you have to 
cut-and-paste Java or XML to make it work?) How are your packages organized ... 
where to the user interface classes go, and where do the data and entity 
objects go? How do you share code from one part of your application to 
another?</p><p>On top of all that, the traditional approaches thrust something 
most unwanted in your face: <em>multi-threaded coding</em>. Remember back to 
Object Oriented Programming 101 where an object was defined as a bundle of data 
and operations on that data? You have to unlearn that lesson as soon as you 
build a traditional web application, because web applications are 
multi-threaded. An application server could be handling dozens or hundreds of 
requests from individual users, each in their own thread, and each sharing the 
exact same objects. Suddenly, you can't store data inside an object (a servlet 
or a Struts Action
 ) because whatever data you store for one user will be instantly overwritten 
by some other user.</p><p>Worse, your objects each have only one operation: 
<code>doGet()</code> or <code>doPost()</code>.</p><p>Meanwhile, most of your 
day-to-day work involves deciding how to package up some data already inside a 
particular Java object and squeeze that data into a URL's query parameters, so 
that you can write more code to convert it back if the user clicks that 
particular link. And don't forget editing a bunch of XML files to keep the 
servlet container, or the Struts framework, aware of these 
decisions.</p><p>Just for laughs, remember that you have to rebuild, redeploy 
and restart your application after virtually any change. Is any of this 
familiar? Then perhaps you'd appreciate something a little <em>less</em> 
familiar: Tapestry.</p><h1 id="TapestryTutorial-TheTapestryWay">The Tapestry 
Way</h1><p>Tapestry uses a very different model: a structured, organized world 
of pages, and components
  within pages. Everything has a very specific name (that you provide). Once 
you know the name of a page, you know the location of the Java class for that 
page, the location of the template for that page, and the total structure of 
the page. Tapestry knows all this as well, and can make things <strong>just 
work</strong>.</p><p>As we'll see in the following pages, Tapestry lets you 
code in terms of your objects. You'll barely see any Tapestry classes, outside 
of a few Java annotations. If you have information to store, store it as fields 
of your classes, not inside the HttpServletRequest or HttpSession. If you need 
some code to execute, it's just a simple annotation or method naming convention 
to get Tapestry to invoke that method, at the right time, with the right 
data.</p><p>Tapestry also shields you from most of the multi-threaded aspects 
of web application development. Tapestry manages the life cycle of your page 
and components objects, and the fields of the pages and components, 
 in a thread-safe way. Your page and component classes always look like simple, 
standard <a class="external-link" 
href="http://en.wikipedia.org/wiki/Plain_Old_Java_Object"; 
rel="nofollow">POJOs</a>.</p><p>Tapestry began in January 2000, and it now 
reflects over twenty years of experience of the entire Tapestry community. 
Tapestry brings to the table all that experience about the best ways to build 
scalable, maintainable, robust, internationalized, and Ajax-enabled 
applications.</p><h1 id="TapestryTutorial-GettingtheTutorialSource">Getting the 
Tutorial Source</h1><p>Although you won't need it, the source code for this 
tutorial is available on <a class="external-link" 
href="https://github.com/hlship/tapestry5-tutorial"; 
rel="nofollow">GitHub</a>.</p><h1 id="TapestryTutorial-TimetoBegin">Time to 
Begin</h1><p>Okay, enough background. Now let's dig in: <a 
href="dependencies-tools-and-plugins.html">Dependencies, Tools and 
Plugins</a></p><p></p></div>
             </div>
             <!-- /// Content End -->
           </div>


Reply via email to