You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by bu...@apache.org on 2013/01/19 14:18:01 UTC

svn commit: r847285 [12/13] - in /websites/staging/struts/trunk/content: ./ css/ dev/ images/ images/profiles/ img/ js/ proposals/ uml/

Added: websites/staging/struts/trunk/content/primer.html
==============================================================================
--- websites/staging/struts/trunk/content/primer.html (added)
+++ websites/staging/struts/trunk/content/primer.html Sat Jan 19 13:17:59 2013
@@ -0,0 +1,1940 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at Jan 19, 2013
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20130119" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>
+        Key Technologies Primer</title>
+    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
+    <link rel="stylesheet" href="./css/site.css" />
+    <link rel="stylesheet" href="./css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>
+
+    
+            </head>
+        <body class="topBarDisabled">
+          
+    
+    
+            
+    
+    
+    <a href="http://github.com/apache/struts2">
+      <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
+        src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"
+        alt="Fork me on GitHub">
+    </a>
+  
+                
+                    
+    
+        <div class="container-fluid">
+          <div id="banner">
+        <div class="pull-left">
+                                    <a href="http://www.apache.org/" id="bannerLeft">
+                                                                                        <img src="http://www.apache.org/images/asf-logo.gif"  alt="Apache Software Foundation"/>
+                </a>
+                      </div>
+        <div class="pull-right">                                <a href="../" id="bannerRight">
+                                                                                                <img src="images/struts.gif"  alt="Apache Struts"/>
+                </a>
+      </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                  <li id="publishDate">Last Published: 2013-01-19</li>
+                      
+                
+                    
+      
+                                              
+    <li class="pull-right">              <a href="../1.3.10/index.html" title="Struts 1">
+        Struts 1</a>
+  </li>
+
+        <li class="divider pull-right">|</li>
+      
+    <li class="pull-right">              <a href="../2.3.8/index.html" title="Struts 2">
+        Struts 2</a>
+  </li>
+
+        <li class="divider pull-right">|</li>
+      
+    <li class="pull-right">              <a href="http://www.apache.org/" class="externalLink" title="Apache">
+        Apache</a>
+  </li>
+
+                        </ul>
+      </div>
+
+            
+      <div class="row-fluid">
+        <div id="leftColumn" class="span3">
+          <div class="well sidebar-nav">
+                
+                    
+                <ul class="nav nav-list">
+                    <li class="nav-header">Apache Struts</li>
+                                
+      <li>
+    
+                          <a href="index.html" title="Welcome">
+          <i class="none"></i>
+        Welcome</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="downloads.html" title="Releases">
+          <i class="none"></i>
+        Releases</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="announce.html" title="Announcements">
+          <i class="none"></i>
+        Announcements</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="http://www.apache.org/licenses/" class="externalLink" title="License">
+          <i class="none"></i>
+        License</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="kickstart.html" title="Kickstart FAQ">
+          <i class="none"></i>
+        Kickstart FAQ</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="http://people.apache.org/~vgritsenko/stats/projects/struts" class="externalLink" title="Website Stats">
+          <i class="none"></i>
+        Website Stats</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="http://apache.org/foundation/thanks.html" class="externalLink" title="Thanks!">
+          <i class="none"></i>
+        Thanks!</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="http://apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">
+          <i class="none"></i>
+        Sponsorship</a>
+            </li>
+                              <li class="nav-header">Documentation</li>
+                                
+      <li class="active">
+    
+            <a href="#"><i class="none"></i>Key Technologies</a>
+          </li>
+                  
+      <li>
+    
+                          <a href="../2.3.8/index.html" title="Struts 2.3.8 (GA)">
+          <i class="none"></i>
+        Struts 2.3.8 (GA)</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../1.3.10/index.html" title="Struts 1.3.10 (GA)">
+          <i class="none"></i>
+        Struts 1.3.10 (GA)</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="downloads.html#PriorReleases" title="Prior Releases">
+          <i class="none"></i>
+        Prior Releases</a>
+            </li>
+                              <li class="nav-header">Support</li>
+                                
+      <li>
+    
+                          <a href="mail.html" title="User Mailing List">
+          <i class="none"></i>
+        User Mailing List</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="https://issues.apache.org/jira/browse/WW" class="externalLink" title="Issue Tracker (JIRA)">
+          <i class="none"></i>
+        Issue Tracker (JIRA)</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="security.html" title="Reporting Security Issues">
+          <i class="none"></i>
+        Reporting Security Issues</a>
+            </li>
+                              <li class="nav-header">Development</li>
+                                
+      <li>
+    
+                          <a href="../2.x/index.html" title="Struts 2.x Draft Docs">
+          <i class="none"></i>
+        Struts 2.x Draft Docs</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../1.x/index.html" title="Struts 1.x Draft Docs">
+          <i class="none"></i>
+        Struts 1.x Draft Docs</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="helping.html" title="How to Help FAQ">
+          <i class="none"></i>
+        How to Help FAQ</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="dev/dev-mail.html" title="Development Lists">
+          <i class="none"></i>
+        Development Lists</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="dev/builds.html" title="Source Code">
+          <i class="none"></i>
+        Source Code</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="dev/releases.html" title="Release Guidelines">
+          <i class="none"></i>
+        Release Guidelines</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="dev/bylaws.html" title="PMC Charter">
+          <i class="none"></i>
+        PMC Charter</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="dev/minutes.html" title="Minutes">
+          <i class="none"></i>
+        Minutes</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="dev/volunteers.html" title="Volunteers">
+          <i class="none"></i>
+        Volunteers</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../struts-sandbox/index.html" title="Sandbox">
+          <i class="none"></i>
+        Sandbox</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="http://svn.apache.org/viewvc/struts/" class="externalLink" title="Source Repository">
+          <i class="none"></i>
+        Source Repository</a>
+            </li>
+                              <li class="nav-header">See Also</li>
+                                
+      <li>
+    
+                          <a href="http://www.ApacheBookstore.com/" class="externalLink" title="Apache Bookstore">
+          <i class="none"></i>
+        Apache Bookstore</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="http://people.apache.org/~rubys/planet/struts/" class="externalLink" title="Our Blogs">
+          <i class="none"></i>
+        Our Blogs</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="http://struts.SourceForge.net/" class="externalLink" title="Struts SourceForge">
+          <i class="none"></i>
+        Struts SourceForge</a>
+            </li>
+            </ul>
+                
+                    
+                
+          <hr class="divider" />
+
+           <div id="poweredBy">
+                            <div class="clear"></div>
+                            <div class="clear"></div>
+                            <div class="clear"></div>
+                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+                  </div>
+          </div>
+        </div>
+        
+                
+        <div id="bodyColumn"  class="span9" >
+                                  
+            <!-- Copyright 1999-2005 The Apache Software Foundation
+Licensed 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. --><!-- // ======================================================================== 78 -->
+
+    
+
+        <div class="section"><h2>Key Technologies Primer<a name="Key_Technologies_Primer"></a></h2>
+
+            <blockquote><p><i>
+            &quot;The time has come,&quot; the Walrus said, &quot;To talk of many things: 
+            Of shoes -- and ships -- and sealing-wax -- Of cabbages -- and kings -- 
+            And why the sea is boiling hot -- And whether pigs have wings.&quot; 
+            </i></p></blockquote>
+
+
+            <a name="suspects"></a>
+            <div class="section"><h3>The Usual Suspects<a name="The_Usual_Suspects"></a></h3>
+
+                <p>
+                    The framework documentation is written for active web 
+                    developers and assumes a working
+                    knowledge about how Java web applications are built.
+                    Before getting started, you should
+                    understand the basics of several key technologies:
+                </p>
+
+                <ul>
+                    <li>
+                        <a href="#http">HTTP, HTML, and User Agents</a>
+                    </li>
+                    <li>
+                        <a href="#cycle">The HTTP Request/Response Cycle</a>
+                    </li>
+                    <li>
+                        <a href="#javascript">JavaScript, AJAX, and SOAP</a>
+                    </li>
+                    <li>
+                        <a href="#java">The Java Language and Application
+                            Frameworks</a>
+                    </li>
+                    <li>
+                        <a href="#javabeans">JavaBeans</a>
+                    </li>
+                    <li>
+                        <a href="#resources">Properties Files and
+                            ResourceBundles</a>
+                    </li>
+                    <li>
+                        <a href="#containers">Servlets, Filters and Web Containers</a>
+                    </li>
+                    <li>
+                        <a href="#jsp">JavaServer Pages and JSP Tag
+                            Libraries</a>
+                    </li>
+                    <li>
+                        <a href="#xml">Extensible Markup Language (XML)</a>
+                    </li>
+                    <li>
+                        <a href="#jaas">JAAS</a>
+                    </li>
+                    <li>
+                        <a href="#mvc">Model View Controller</a>
+                    </li>
+                </ul>
+                
+                <p>
+                    This primer briefly defines each of these technologies
+                    but does not describe them in detail.
+                    For your convenience, links to further information are
+                    provided if you would like to learn more about a
+                    technology.
+                </p>
+
+                <p> 
+                    If you are familiar with Java,
+                    but not these technologies,
+                    the best overall starting point is
+                    <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/index.html">
+                        The J2EE Tutorial.
+                    </a>
+                    The tutorial is also available for download in
+                    <a class="externalLink" href="http://java.sun.com/webservices/docs/1.0/tutorial/doc/JavaWSTutorial.pdf">
+                        PDF</a>
+                    format.
+                </p>
+
+                <p>
+                    If you've created web applications for other platforms, you
+                    may be able to follow along
+                    and visit the other references as needed. The core
+                    technologies used by the framework are
+                    also used by most other Java web development products, so
+                    the background information will be
+                    useful in any Java project.
+                </p>
+
+                <p>
+                    If you are not familiar with the Java language
+                    generally,
+                    then the best starting point is
+                    <a class="externalLink" href="http://java.sun.com/docs/books/tutorial/index.html">
+                        The Java Tutorial.
+                    </a>
+                    This overlaps with The J2EE Tutorial in some
+                    places, but the two work well together.
+                </p>
+
+                <p>
+                    For more about building Java application in general, see
+                    the
+                    <a class="externalLink" href="http://java.sun.com/developer/onlineTraining/new2java/">
+                        New to
+                        Java Center.</a>
+                </p>
+
+            </div>
+
+            <a name="http"></a>
+            <div class="section"><h3>HTTP, HTML and User Agents<a name="HTTP_HTML_and_User_Agents"></a></h3>
+
+                <p> 
+                    The World Wide Web was built over the Hypertext Transfer
+                    Protocol
+                    <a class="externalLink" href="http://www.ietf.org/rfc/rfc2616.txt?number=2616">
+                        (HTTP)</a>
+                    and the Hypertext Markup Language
+                    <a class="externalLink" href="http://www.w3.org/MarkUp/">(HTML).</a>
+                    A User Agent, like a web browser, uses HTTP to request
+                    a HTML document. The browser then formats and displays the
+                    document to its user. HTTP is used to
+                    transport more than HTML, but HTML is the lingua franca of
+                    the Web and web applications.
+                </p>
+
+                <p>
+                    While building web applications, some Java developers 
+                    write their own HTML. Others leave that responsibility to
+                    the
+                    page designers.</p>
+
+                <p>For more about HTTP, HTML, and User Agents, see:</p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://www.w3.org/MarkUp/Guide/">
+                            Getting started with HTML
+                        </a>
+                        by Dave Raggett
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/HTTP.html">
+                            HTTP Overview
+                        </a>
+                        in The J2EE Tutorial.
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://www.rfc-editor.org/rfc/rfc2616.txt">
+                            HTTP/1.1
+                            
+                        </a>
+                        Specification
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://www.rfc-editor.org/rfc/rfc2617.txt">
+                            HTTP
+                                Basic and Digest Authentication
+                        </a>
+                        Specification
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://www.rfc-editor.org/rfc/rfc2109.txt">
+                            State
+                                Management Mechanism
+                        </a>
+                        Specification (Cookies)
+                    </li>
+                </ul>
+            </div>
+
+            <a name="cycle"></a>
+            <div class="section"><h3>The HTTP Request/Response cycle<a name="The_HTTP_RequestResponse_cycle"></a></h3>
+
+                <p>
+                    A very important part of HTTP for the web developer is the
+                    request/response cycle. To use HTTP
+                    you have to make a request. A HTTP server, like a web
+                    server, is then obliged to respond. When you
+                    build your web application, you design it to react to a
+                    HTTP request by returning a HTTP response.
+                    Frameworks abstract much of these nuts and bolts, but it
+                    is important to understand
+                    what is happening behind the scenes.</p>
+
+                <p>If you are not familiar with the HTTP request/response
+                    cycle, we
+                    <b>strongly</b>
+                    recommend the
+                    <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/HTTP.html">
+                        HTTP Overview</a>
+                    in The J2EE Tutorial.
+                </p>
+
+            </div>
+
+            <a name="javascript"></a>
+            <div class="section"><h3>JavaScript, AJAX, and SOAP<a name="JavaScript_AJAX_and_SOAP"></a></h3>
+                    
+                    <p>
+                        A problem with the HTTP request/response cycle is that 
+                        it does not promote an interactive user interface. 
+                        Web developers often resort to scripting language, 
+                        like JavaScript, to make web applications more 
+                        interesting.
+                    </p>
+                    <p>
+                        An advanced usage of JavaScript, called AJAX, can  
+                        help developers create web applications that are as 
+                        interactive and responsive as desktop applications. 
+                    </p>
+                        
+                    <p>For more about JavaScript and AJAX, see</p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://en.wikipedia.org/wiki/JavaScript">
+                            Wikipedia - JavaScript</a>
+                    </li>                    
+                    <li>
+                        <a class="externalLink" href="http://www.adaptivepath.com/publications/essays/archives/000385.php">
+                            Ajax: A New Approach to Web Applications
+                        </a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://en.wikipedia.org/wiki/AJAX">
+                            Wikipedia - AJAX</a>
+                    </li>
+                </ul>
+                
+                <p>
+                    Another technology that can enhance the HTTP 
+                    request/response cycle is SOAP. 
+                    Using SOAP, an application can access data and invoke 
+                    business logic on another server using HTTP as transfer 
+                    layer. 
+                    Using AJAX and SOAP together is becoming a popular way for 
+                    page to submit finely-grained requests directly to a 
+                    remote server, 
+                    while still retaining a separation of concerns beween the 
+                    the business logic and the page markup,. 
+                </p>    
+
+                <p>For more about SOAP, see</p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://en.wikipedia.org/wiki/SOAP">
+                            Wikipedia - SOAP</a>
+                    </li>                    
+                </ul>
+
+            </div>
+
+            <a name="java"></a>
+            <div class="section"><h3>The Java Language and Application Frameworks<a name="The_Java_Language_and_Application_Frameworks"></a></h3>
+
+                <p> 
+                    The framework is written in the popular and versatile
+                    <a class="externalLink" href="http://java.sun.com/docs/books/jls/first_edition/html/index.html">
+                        Java programming language.</a>
+                    Java is an object-orientated language, and the framework
+                    makes good use of many
+                    object-orientated techniques. In addition, Java natively
+                    supports the
+                    concept of
+                    <i>threads,</i>
+                    which allows more than one task to be
+                    performed at the same time. A good understanding of Java,
+                    and especially
+                    object-orientated programming (OOP) and threading, will
+                    help
+                    you get the most out of the framework and this User Guide.
+                </p>
+
+                <p>For more about Java and threads, see</p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/docs/books/tutorial/java/index.html">
+                            Learning the Java Language
+                        </a>
+                        in the Java Tutorial
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html">
+                            Threads: Doing Two or More Tasks At Once
+                        </a>
+                        in the Java Language
+                        Tutorial
+                    </li>
+                </ul>
+
+                <p> 
+                    Even if you have worked with Java and OOP before, it can
+                    also help to be aware of the
+                    programming challenges specific to creating and using
+                    application frameworks. For more about application
+                    frameworks, see the classic white papers</p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://www.laputan.org/drc/drc.html">
+                            Designing Reusable Classes
+                        </a>
+                        by Ralph E. Johnson &amp; Brian Foote
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://www.cs.wustl.edu/~schmidt/CACM-frameworks.html">
+                            Object-Oriented Application
+                                Frameworks
+                        </a>
+                        by Mohamed Fayad and Douglas C. Schmidt
+                    </li>
+                </ul>
+
+                <p> 
+                    These papers can be especially helpful if you are
+                    fact-finding or reviewing server-side
+                    <a class="externalLink" href="http://www.dmoz.org/Computers/Programming/Languages/Java/Enterprise_Edition/Libraries_and_Frameworks/">
+                        frameworks</a>
+                    .
+                </p>
+
+            </div>
+
+            <a name="javabeans"></a>
+            <div class="section"><h3>JavaBeans<a name="JavaBeans"></a></h3>
+
+                <p> 
+                    Like many Java applications, most of the framework objects
+                    are designed as
+                    <a class="externalLink" href="http://java.sun.com/products/javabeans/">
+                        JavaBeans.</a>
+                    Following the JavaBean design patterns makes
+                    the framework's classes easier to use -- both by Java
+                    developers and by Java development tools.
+                </p>
+
+                <p> 
+                    Although JavaBeans were first created for visual elements,
+                    these object design patterns have been found to
+                    be useful as the basis for any reusable component, like
+                    those used by the framework.</p>
+
+                <p>For more about JavaBeans, see:</p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/products/javabeans/docs/">
+                            The
+                                JavaBeans Component Architecture
+                                Documentation
+                        </a>
+                        page at
+                        <tt>java.sun.com,</tt>
+                        including a link to download the
+                        <a class="externalLink" href="http://java.sun.com/products/javabeans/docs/spec.html">
+                            JavaBeans 1.01 Specification</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/docs/books/tutorial/javabeans/index.html">
+                            The JavaBeans Trail
+                        </a>
+                        in the Java Tutorial
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPBeans.html">
+                            JavaBeans Components in JSP Pages
+                        </a>
+                        in The J2EE Tutorial
+                    </li>
+                </ul>
+
+            </div>
+
+            <a name="reflection"></a>
+            <div class="section"><h3>Reflection and Introspection<a name="Reflection_and_Introspection"></a></h3>
+
+                <p>
+                    Reflection is the process of determining which member
+                    fields and methods are available on an object.
+                    Introspection is a specialized form of reflection used by
+                    the JavaBean API.
+                    Using Introspection, we can determine which methods of a
+                    JavaBean are intended to be accessed by other objects.
+                    (The getters and the setters, for example.)
+                </p>
+
+                <p>
+                    The framework uses Introspection to convert HTTP
+                    parameters into JavaBean properties and to populate HTML
+                    fields from JavaBean properties.
+                    This technique makes it easy to &quot;roundtrip&quot; properties
+                    between HTML forms and JavaBeans.
+                </p>
+
+                <p>
+                    For more about Reflection and Introspection, see
+                </p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/docs/books/tutorial/reflect/">
+                            The Reflection Trail</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/products/javabeans/docs/spec.html">
+                            Chapter 8 of the JavaBeans API Specification</a>
+                    </li>
+                </ul>
+
+            </div>
+
+            <a name="maps"></a>
+            <div class="section"><h3>Maps<a name="Maps"></a></h3>
+
+                <p>
+                    JavaBeans store data as properties and may act on that
+                    data through other methods.
+                    JavaBeans are flexible and powerful objects but are not
+                    the only object that programmers use to store data.
+                    Another popular object is the Map 
+                    <tt>[java.util.Map].</tt>
+                    A Map is a simple collection of name and value pairs.
+                    Maps are often used &quot;behind the scenes&quot; as a flexible way
+                    to store dynamic data.
+                </p>
+
+            </div>
+
+
+            <a name="resources"></a>
+            <div class="section"><h3>Properties Files and ResourceBundles<a name="Properties_Files_and_ResourceBundles"></a></h3>
+
+                <p> 
+                    Java applications, including web applications, are often
+                    configured using
+                    <a class="externalLink" href="http://java.sun.com/j2se/1.4.1/docs/api/java/util/Properties.html">
+                        Properties</a>
+                    files. Properties files are the basis for the
+                    <a class="externalLink" href="http://java.sun.com/j2se/1.4.1/docs/api/java/util/ResourceBundle.html">
+                        ResourceBundles</a>
+                    that the framework uses to provide message resources
+                    to an application.
+                </p>
+
+                <p>For more about Properties files, see:</p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://docs.oracle.com/javase/tutorial/essential/environment/properties.html">
+                            Using Properties to Manage Program
+                                Attributes
+                        </a>
+                        in The Java Tutorial
+                    </li>
+                </ul>
+
+                <p>Java ResourceBundles use one or more Properties files to
+                    provide internationalized messages
+                    to users based their
+                    <a class="externalLink" href="http://java.sun.com/j2se/1.4.1/docs/api/java/util/Locale.html">
+                        Locale.</a>
+                    Support for localizing an application was built into the
+                    framework from the ground-up.
+                </p>
+
+                <p>For more about localization and ResourceBundles, see</p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/docs/books/tutorial/i18n/resbundle/concept.html">
+                            About the ResourceBundle Class
+                        </a>
+                        in the Java Tutorial
+                    </li>
+                </ul>
+
+            </div>
+
+            <a name="containers"></a>
+            <div class="section"><h3>Servlets, Filters, and Web Containers<a name="Servlets_Filters_and_Web_Containers"></a></h3>
+                <p>
+                    Since Java is an object-orientated language, the
+                    <a class="externalLink" href="http://www.novocode.com/doc/servlet-essentials/">
+                        Java Servlet</a>
+                    platform strives to cast HTTP into an object-orientated
+                    form.
+                    This strategy makes it easier for Java developers to
+                    concentrate on what they need their application to do --
+                    rather than the mechanics of HTTP.
+                </p>
+
+                <p>
+                    HTTP provides a standard mechanism for extending servers
+                    called the Common Gateway Interface, or CGI.
+                    The server can pass a request to a CGI-aware program, and
+                    the program will pass back a response.
+                    Likewise, a Java-aware server can pass a request to a
+                    servlet container.
+                    The container can fulfill the request or it can pass the
+                    request back to the HTTP server.
+                    The container decides whether it can handle the request by
+                    checking its list of servlets.
+                    If there is a servlet registered for the request, the
+                    container passes the request to the servlet.
+                </p>
+
+                <p>
+                    When a request comes in, the container checks to see if
+                    there is a servlet registered for that request.
+                    If there is a match,
+                    the request is given to the servlet.
+                    If not, the request is returned to the HTTP server.
+                </p>
+
+                <p>
+                    It's the container's job to manages the servlet lifecycle.
+                    The container creates the servlets, invokes the servlets,
+                    and ultimately disposes the servlets.
+                </p>
+
+                <p>
+                    A servlet is generally a subclass of
+                    <tt>javax.servlet.http.HttpServlet.</tt>
+                    A servlet must implement four methods, which are invoked
+                    by the container as needed:
+                </p>
+
+                <ul>
+                    <li>
+                        <b>public void init(ServletConfig
+                            config)</b>
+                        - Called by the
+                        servlet container when the servlet instance is first
+                        created, and
+                        before any request is processed.
+                    </li>
+                    <li>
+                        <b>public void doGet(HttpServletRequest request,
+                            HttpServletResponse response)</b>
+                        - Called to process a
+                        specific request received using the HTTP
+                        <tt>GET</tt>
+                        protocol,
+                        which generates a corresponding dynamic response.
+                    </li>
+                    <li>
+                        <b>public void doPost(HttpServletRequest request,
+                            HttpServletResponse response)</b>
+                        - Called to process a
+                        specific request received using the HTTP
+                        <tt>POST</tt>
+                        protocol,
+                        which generates a corresponding dynamic response.
+                    </li>
+                    <li>
+                        <b>public void destroy()</b>
+                        - Called by the servlet
+                        container when it takes this servlet instance out of
+                        service,
+                        such as when a web application is being undeployed or
+                        when the
+                        entire container is being shut down.
+                    </li>
+                </ul>
+
+                <p>
+                    The framework provides a ready-to-use servlet for your
+                    application 
+                    <tt>[org.apache.struts.action.ActionServlet].</tt>
+                    As a developer, you can then just write objects
+                    that the ActionServlet calls when needed.
+                    But it is still helpful to understand the  
+                    servlet essentials,
+                    and the role they play in a Java web application.
+                </p>
+
+                <p>
+                    For more about Java Servlets, see:
+                </p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/products/servlet/">
+                            The
+                                Java Servlet Technology
+                        </a>
+                        page at
+                        <tt>java.sun.com</tt>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/products/servlet/download.html">
+                            The
+                                Servlet 2.3 and 2.4 Specifications
+                        </a>
+                        download page at
+                        <tt>java.sun.com</tt>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets.html">
+                            Java Servlet Technology
+                        </a>
+                        in The J2EE Tutorial.
+                    </li>
+                </ul>
+
+            </div>
+
+            <a name="threads"></a>
+            <div class="section"><h3>Servlets and Threads<a name="Servlets_and_Threads"></a></h3>
+
+                <p>
+                    To boost performance, the container can multi-thread
+                    servlets.
+                    Only one instance of a particular servlet is created,
+                    and each request for that servlet passes through the same
+                    object.
+                    This strategy helps the container make the best use of
+                    available resources.
+                    The tradeoff is that the servlet's
+                    <tt>doGet()</tt>
+                    and
+                    <tt>doPost()</tt>
+                    methods must be programmed in a
+                    <i>thread-safe</i>
+                    manner.
+                </p>
+
+                <p>
+                    For more about servlets and thread-safety, see:
+                </p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets5.html#102985">
+                            Controlling Concurrent Access to Shared
+                            Resources</a>
+                        in The J2EE Tutorial.
+                    </li>
+                </ul>
+
+            </div>
+
+            <a name="context"></a>
+            <div class="section"><h3>Servlet Context<a name="Servlet_Context"></a></h3>
+
+                <p> 
+                    The
+                    <i>ServletContext</i>
+                    interface 
+                    <tt>[javax.servlet.ServletContext]</tt>
+                    defines a servlet's view of
+                    the web application within which the servlet is running.
+                    It is
+                    accessible in a servlet via the
+                    <tt>getServletConfig()</tt>
+                    method,
+                    and in a JSP page as the
+                    <tt>application</tt>
+                    implicit variable.
+                    Servlet contexts provide several APIs that are very useful
+                    in building web applications:
+                </p>
+                <ul>
+                    <li>
+                        <i>Access To Web Application Resources</i>
+                        - A servlet can
+                        access static resource files within the web
+                        application using the
+                        <tt>getResource()</tt>
+                        and
+                        <tt>getResourceAsStream()</tt>
+                        methods.
+                    </li>
+                    <li>
+                        <i>Servlet Context Attributes</i>
+                        - The context makes available
+                        a storage place for Java objects, identified by
+                        string-valued keys.
+                        These attributes are global to the entire web
+                        application, and may
+                        be accessed by a servlet using the
+                        <tt>getAttribute(),</tt>
+                        <tt>getAttributeNames(),</tt>
+                        <tt>removeAttribute(),</tt>
+                        and
+                        <tt>setAttribute()</tt>
+                        methods. From a JSP page, servlet
+                        context attributes are also known as &quot;application
+                        scope beans&quot;.
+                    </li>
+                </ul>
+
+                <p>
+                    For more about the servlet context, see:
+                </p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets10.html#75507">
+                            Accessing the Web Context</a>
+                        in The J2EE Tutorial.
+                    </li>
+                </ul>
+
+            </div>
+
+            <a name="request"></a>
+            <div class="section"><h3>Servlet Request<a name="Servlet_Request"></a></h3>
+
+                <p> 
+                    Each request processed by a servlet is represented by a
+                    Java
+                    interface, normally a
+                    <tt>HttpServletRequest</tt>
+                    <tt>[javax.servlet.http.HttpServletRequest].</tt>
+                    The request interface provides an object-oriented
+                    mechanism to access
+                    all of the information that was included in the underlying
+                    HTTP request,
+                    including:
+                </p>
+                <ul>
+                    <li>
+                        <i>Cookies</i>
+                        - The set of cookies included with this request
+                        are available via the
+                        <tt>getCookies()</tt>
+                        method.
+                    </li>
+                    <li>
+                        <i>Headers</i>
+                        - HTTP headers that were included with
+                        the request are accessible by name. You can enumerate
+                        the names
+                        of all included headers.
+                    </li>
+                    <li>
+                        <i>Parameters</i>
+                        - Request parameters, including those from
+                        the query string portion of the URL and from the
+                        embedded content
+                        of the request (POST only) are available by name.
+                    </li>
+                    <li>
+                        <i>Request Characteristics</i>
+                        - Many other characteristics
+                        of the incoming HTTP request, such as the method used
+                        (normally
+                        GET or POST) the protocol scheme used (&quot;http&quot; or
+                        &quot;https&quot;), and
+                        similar values.
+                    </li>
+                    <li>
+                        <i>Request URI Information</i>
+                        - The original request URI
+                        being processed is available via
+                        <tt>getRequestURI()</tt>
+                        .
+                        In addition, the constituent parts into which the
+                        servlet container
+                        parses the request URI (contextPath, servletPath, and
+                        pathInfo) are
+                        available separately.
+                    </li>
+                    <li>
+                        <i>User Information</i>
+                        - If you are using
+                        <a href="#security">Container Managed Security</a>
+                        , you can ask for
+                        the username of the authenticated user, retrieve a
+                        <tt>Principal</tt>
+                        object representing the current user, and
+                        whether the current user is authorized for a specified
+                        role.
+                    </li>
+                </ul>
+
+                <p> 
+                    In addition, servlet requests support
+                    <i>request attributes</i>
+                    (from JSP, these are &quot;request scope beans&quot;), analogous to
+                    the servlet
+                    context attributes described above. Request attributes are
+                    often used
+                    to communicate state information from a business logic
+                    class that
+                    generates it to a view component (such as a JSP page) that
+                    will use
+                    the information to produce the corresponding response.
+                </p>
+
+                <p> 
+                    The servlet container guarantees that a particular request
+                    will
+                    be processed by a servlet on a single thread. Therefore,
+                    you do not
+                    generally have to worry about the thread safety of your
+                    access to
+                    request properties and attributes.</p>
+
+                <p>
+                    For more about the servlet request, see:
+                </p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets7.html#63090">
+                            Getting Information from Requests</a>
+                        in The J2EE Tutorial.
+                    </li>
+                </ul>
+
+            </div>
+
+            <a name="response"></a>
+            <div class="section"><h3>Servlet Response<a name="Servlet_Response"></a></h3>
+
+                <p> 
+                    The primary purpose of a servlet is to process an incoming
+                    <a href="#request">Servlet Request</a>
+                    <tt>[javax.servlet.http.HttpServletRequest]</tt>
+                    and convert it into a
+                    corresponding response. This is performed by calling
+                    appropriate
+                    methods on the servlet response 
+                    <tt>[javax.servlet.http.HttpServletResponse]</tt>
+                    interface. Available methods let you:
+                </p>
+                <ul>
+                    <li>
+                        <i>Set Headers</i>
+                        - You can set HTTP headers that will be
+                        included in the response. The most important header is
+                        the
+                        <tt>Content-Type</tt>
+                        header, which tells your client what
+                        kind of information is included in the body of this
+                        response.
+                        This is typically set to
+                        <tt>text/html</tt>
+                        for an HTML page,
+                        or
+                        <tt>text/xml</tt>
+                        for an XML document.
+                    </li>
+                    <li>
+                        <i>Set Cookies</i>
+                        - You can add cookies to the current
+                        response.
+                    </li>
+                    <li>
+                        <i>Send Error Responses</i>
+                        - You can send an HTTP error status
+                        (instead of a usual page of content) using
+                        <tt>sendError()</tt>
+                        .
+                    </li>
+                    <li>
+                        <i>Redirect To Another Resource</i>
+                        - You can use the
+                        <tt>sendRedirect()</tt>
+                        method to redirect the client to
+                        some other URL that you specify.
+                    </li>
+                </ul>
+
+                <p> 
+                    An important principle in using the servlet response APIs
+                    is that
+                    any methods you call to manipulate headers or cookies
+                    <b>MUST</b>
+                    be performed before the first buffer-full of
+                    content has been flushed to the client. The reason for
+                    this restriction
+                    is that such information is transmitted at the beginning
+                    of the HTTP
+                    response, so trying things like adding a header after the
+                    headers have
+                    already been sent will not be effective.
+                </p>
+
+                <p>
+                    When you are using presentation pages in a Model 2
+                    application,
+                    you will not generally use the servlet response APIs
+                    directly.
+                    In the case of JavaServerPages, the JSP page compiler
+                    in your servlet container will convert your page into a
+                    servlet.
+                    The JSP servlet renders the response, interspersing
+                    dynamic
+                    information where you have interposed JSP custom tags.
+                </p>
+
+                <p>
+                    Other presentation systems, like Velocity Tools for
+                    Struts,
+                    may delegate rendering the response to a specialized
+                    servlet,
+                    but the same pattern holds true.
+                    You create a template,
+                    and the dynamic response is generated automatically from
+                    the template.
+                </p>
+
+                <p>
+                    For more about the servlet response, see:
+                </p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets7.html#79563">
+                            Constructing Responses</a>
+                        in The J2EE Tutorial.
+                    </li>
+                </ul>
+
+            </div>
+
+            <a name="filters"></a>
+            <div class="section"><h3>Filters<a name="Filters"></a></h3>
+
+                <p> 
+                    If you are using a servlet container based on version
+                    <b>2.3</b>
+                    or later of the Servlet Specification (such as
+                    Tomcat 4.x), you can take advantage of the new Filter APIs
+                    <tt>[javax.servlet.Filter]</tt>
+                    that
+                    let you compose a set of components that will process a
+                    request or
+                    response. Filters are aggregated into a chain in which
+                    each filter
+                    has a chance to process the request and response before
+                    and after
+                    it is processed by subsequent filters (and the servlet
+                    that is ultimately
+                    called).
+                </p>
+
+                <p> 
+                    Struts 1.2 and earlier require your container to implement 
+                    version 2.2 or later of the Servlet Specification,
+                    so those versions of the Struts framework do not use 
+                    Filters internaly. Beginning with Struts 1.3, a container 
+                    that supports version 2.3 or later of the Servlet
+                    Specification is required.
+                    Struts 2 uses a filter as the base of the controller, 
+                    instead of a servlet.
+                    </p>
+
+                <p>
+                    For more about filters, see:
+                </p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets8.html#103101">
+                            Filtering Requests and Responses</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/products/servlet/Filters.html">
+                            The Essentials of Filters</a>
+                    </li>
+                </ul>
+
+            </div>
+
+            <a name="session"></a>
+            <div class="section"><h3>Sessions<a name="Sessions"></a></h3>
+
+                <p> 
+                    One of the key characteristics of HTTP is that it is
+                    <i>stateless.</i>
+                    In other words, there is nothing built in to
+                    HTTP that identifies a subsequent request from the same
+                    user as being
+                    related to a previous request from that user. This makes
+                    building an
+                    application that wants to engage in a conversation with
+                    the user over
+                    several requests to be somewhat difficult.
+                </p>
+
+                <p> 
+                    To alleviate this difficulty, the servlet API provides a
+                    programmatic
+                    concept called a
+                    <i>session,</i>
+                    represented as an object that
+                    implements the
+                    <tt>javax.servlet.http.HttpSession</tt>
+                    interface.
+                    The servlet container will use one of two techniques
+                    (cookies or
+                    URL rewriting) to ensure that the next request from the
+                    same user will
+                    include the
+                    <i>session id</i>
+                    for this session, so that state
+                    information saved in the session can be associated with
+                    multiple
+                    requests. This state information is stored in
+                    <i>session
+                        attributes</i>
+                    (in JSP, they are known as &quot;session scope beans&quot;).
+                </p>
+
+                <p> 
+                    To avoid occupying resources indefinitely when a user fails to
+                    complete
+                    an interaction, sessions have a configurable
+                    <i>timeout interval.</i>
+                    If the time gap between two requests exceeds this
+                    interval, the session
+                    will be timed out, and all session attributes removed. You
+                    define a
+                    default session timeout in your web application deployment
+                    descriptor,
+                    and you can dynamically change it for a particular session
+                    by calling
+                    the
+                    <tt>setMaxInactiveInterval()</tt>
+                    method.
+                </p>
+
+                <p>Unlike requests, you need to be concerned about thread
+                    safety on
+                    your session attributes (the methods these beans provide,
+                    not the
+                    <tt>getAttribute()</tt>
+                    and
+                    <tt>setAttribute()</tt>
+                    methods
+                    of the session itself). It is surprisingly easy for there
+                    to be
+                    multiple simultaneous requests from the same user, which
+                    will therefore
+                    access the same session.
+                </p>
+
+                <p>Another important consideration is that session attributes
+                    occupy
+                    memory in your server
+                    <i>in between</i>
+                    requests. This can have
+                    an impact on the number of simultaneous users that your
+                    application can
+                    support. If your application requirements include very
+                    large numbers of
+                    simultaneous users, you will likely want to minimize your
+                    use of
+                    session attributes, in an effort to control the overall
+                    amount of memory
+                    required to support your application.
+                </p>
+
+                <p>
+                    For more about sessions, see:
+                </p>
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets11.html#63281">
+                            Maintaining Client State</a>
+                        in The J2EE Tutorial
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/products/servlet/2.1/api/javax.servlet.http.HttpSession.html">
+                            <tt>javax.servlet.http.HttpSession</tt>
+                        </a>
+                    </li>
+                </ul>
+
+            </div>
+
+            <a name="dispatch"></a>
+            <div class="section"><h3>Dispatching Requests<a name="Dispatching_Requests"></a></h3>
+
+                <p>
+                    The Java Servlet specification extends the HTTP
+                    request/response cycle by allowing the request to be
+                    dispatched,
+                    or forwarded, between resources.
+                    The framework uses this feature to pass a request through
+                    specialized components,
+                    each handling one aspect of the response.
+                    In the normal course, a request may pass through a
+                    controller object, a model object,
+                    and finally to a view object as part of a single
+                    request/response cycle.
+                </p>
+
+            </div>
+
+            <a name="webapp"></a>
+            <div class="section"><h3>Web Applications<a name="Web_Applications"></a></h3>
+
+                <p>
+                    Just as a HTTP server can be used to host several distinct
+                    websites,
+                    a servlet container can be used to host more than one web
+                    application.
+                    The Java servlet platform provides a well-defined
+                    mechanism for organizing and deploying web applications.
+                    Each application runs in its own namespace so that they
+                    can be developed and deployed separately.
+                    A web application can be assembled into a Web Application
+                    Archive, or WAR file.
+                    The single WAR can be uploaded to the server and
+                    automatically deployed.
+                </p>
+
+            </div>
+
+            <a name="events"></a>
+            <div class="section"><h3>Web application deployment descriptor (web.xml)<a name="Web_application_deployment_descriptor_web.xml"></a></h3>
+
+                <p>
+                    Most aspects of an application's lifecycle are configured
+                    through an XML document called the Web application
+                    deployment descriptor.
+                    The schema of the descriptor, or web.xml, is given by the
+                    Java servlet specification.
+                </p>
+
+            </div>
+
+            <a name="security"></a>
+            <div class="section"><h3>Security<a name="Security"></a></h3>
+
+                <p>
+                    One detail that can be configured in the Web application
+                    deployment descriptor is container-managed security.
+                    Declarative security can be used to protect requests for
+                    URIs that match given patterns.
+                    Pragmatic security can be used to fine-tune security make
+                    authorization decisions based on the time of day,
+                    the parameters of a call, or the internal state of a Web
+                    component.
+                    It can also be used to restrict authentication based on
+                    information in a database.
+                </p>
+
+                <p>
+                    For more about security, see:
+                </p>
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/blueprints/guidelines/designing_enterprise_applications/security/index.html">
+                          J2EE Blueprints: Security</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://securityfilter.sourceforge.net/">
+                            SecurityFilter
+                        </a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://www.springframework.org/spring-security/">
+                            Spring Security</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://sslext.sourceforge.net/">
+                            The Struts SSL Extension for HTTP/HTTPS switching </a>
+                    </li>
+                </ul>
+
+            </div>
+
+            <a name="jsp"></a>
+            <div class="section"><h3>JavaServer Pages, JSP Tag Libraries, and JavaServer Faces<a name="JavaServer_Pages_JSP_Tag_Libraries_and_JavaServer_Faces"></a></h3>
+                <p>
+                    <a class="externalLink" href="http://java.sun.com/products/jsp/product.html">
+                        JavaServer Pages</a>
+                    (JSPs) are
+                    &quot;inside-out servlets&quot; that make it easier to create and
+                    maintain dynamic web pages. Instead
+                    of putting what you want to write to the HTTP response
+                    inside of a Java
+                    <tt>print</tt>
+                    statement, everything in a JavaServer Page is written to
+                    the response,
+                    <b>except</b>
+                    what is
+                    placed within special Java statements.
+                </p>
+
+                <p>With
+                    <b>JavaServer Pages</b>
+                    you can start by writing the page in standard HTML and
+                    then add the
+                    dynamic features using statements in the Java language or
+                    by using
+                    <a class="externalLink" href="http://java.sun.com/products/jsp/taglibraries.html">
+                        JSP tags.</a>
+                    The framework distribution includes several JSP tags
+                    that make it easy to access the framework's
+                    features from a JavaServer Page.
+                </p>
+
+                <p>For more about JavaServer Pages and Custom JSP Tag
+                    Libraries see</p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/products/jsp/">
+                            The
+                                JavaServer Pages Technology
+                        </a>
+                        page at
+                        <tt>java.sun.com</tt>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/products/jsp/reference/api/index.html">
+                            The
+                                JSP 1.2 and 2.0 Specifications
+                        </a>
+                        download page at
+                        <tt>java.sun.com</tt>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPIntro.html">
+                            JavaServer Pages Technology
+                        </a>
+                        in The J2EE Tutorial
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPTags.html">
+                            Custom Tags in JSP Pages
+                        </a>
+                        in The J2EE Tutorial
+                    </li>
+                </ul>
+
+                <p>
+                    Many times, JSP tags work hand-in-hand with JavaBeans. The
+                    application sends a JavaBean to
+                    the JSP, and the JSP tag uses the bean to customize the
+                    page for the instant user. For more, see
+                    <a class="externalLink" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPBeans.html">
+                        JavaBeans Components in JSP Pages</a>
+                    in The J2EE Tutorial.
+                </p>
+
+                <p>
+                    The framework also works well with the
+                    <a class="externalLink" href="http://java.sun.com/products/jsp/jstl">
+                        JavaServer Pages Standard Tag Library
+                    </a>
+                    (JSTL) and taglibs from other sources, like
+                    <a class="externalLink" href="http://jsptags.com/">JSP Tags,</a>
+                    <a class="externalLink" href="http://jakarta.apache.org/taglibs/index.html">
+                        Jakarta Taglibs,</a>
+                    <a class="externalLink" href="http://struts.application-servers.com">Struts
+                        Layout,</a>
+                    and
+                    <a class="externalLink" href="http://displaytag.sourceforge.net/">
+                        Display Tags.</a>
+                </p>
+
+                <p>
+                    One of the components available with the framework is
+                    <a class="externalLink" href="http://struts.apache.org/struts-el/index.html">
+                        Struts-EL</a>
+                    .
+                    This taglib is specifically designed to work well with
+                    JSTL.
+                    In particular, it uses the same &quot;expression language&quot;
+                    engine for evaluating tag attribute values as JSTL.
+                    This is in contrast to the original Struts tag library,
+                    which can only use &quot;rtexprvalue&quot;s (runtime scriptlet
+                    expressions) for dynamic attribute values.
+                </p>
+
+                <p>There are also toolkits available that make the framework
+                    easy to use with
+                    <a class="externalLink" href="http://stxx.sourceforge.net/">XSLT</a>
+                    and
+                    <a class="externalLink" href="http://velocity.apache.org/tools/devel/">
+                        Velocity Templates.</a>
+                </p>
+
+                <p>
+                    The newest star on the Java horizon is
+                    <a class="externalLink" href="http://java.sun.com/j2ee/javaserverfaces/">
+                        JavaServer Faces technology.</a>
+                    JSF aims to simplify building user interfaces for JavaServer
+                    applications, both for the web and for the desktop.
+                </p>
+                <p>
+                    For an open source implementation of JSF, visit our
+                    sibling project, <a class="externalLink" href="http://myfaces.apache.org">
+                    Apache MyFaces.</a>
+                </p>
+
+                <p>For more about JSTL and JavaServer Faces see</p>
+
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://today.java.net/pub/a/today/2003/10/07/jstl1.html">
+                            Practical JSTL, Part 1</a>
+                        by Sue Spielman
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://www.jsfcentral.com">
+                            JSF Central
+                        </a>
+                        - JavaServer Faces resources.
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://www.jamesholmes.com/JavaServerFaces/">
+                            JavaServer Faces Resources
+                        </a>
+                        - James Holmes dot Com.
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://myfaces.apache.org">Apache MyFaces</a>
+                        - An open source implementation of
+                        the JSF specification.
+                    </li>
+                </ul>
+                
+            </div>
+
+            <a name="xml"></a>
+            <div class="section"><h3>Extensible Markup Language (XML)<a name="Extensible_Markup_Language_XML"></a></h3>
+
+                <p>The features provided by the framework rely on a number of
+                    objects that are
+                    usually deployed using a configuration file written in
+                    <a class="externalLink" href="http://www.w3.org/XML/">Extensible Markup
+                        Language.</a>
+                    XML is also used to
+                    configure Java web applications; so, this is yet another
+                    familiar approach.
+                </p>
+
+                <p>
+                    For more about how XML is used with Java applications
+                    generally, see the
+                    <a class="externalLink" href="http://jaxp.java.net/">
+                        Java API for XML Processing</a> Tutorial.
+                    While the framework makes good use of this API internally,
+                    it is not something most developers would use
+                    when writing their own applications with the framework.
+                </p>
+
+            </div>
+            
+            <a name="descriptors"></a>
+            <div class="section"><h3>Descriptors<a name="Descriptors"></a></h3>
+
+                <p>
+                    When Java applications use XML configuration files,
+                    the elements are most often used as
+                    <i>descriptors.</i>
+                    The application does not use the XML elements directly.
+                    The elements are used to create and configure (or deploy)
+                    Java objects.
+                </p>
+
+                <p>
+                    The Java Servlet platform uses an XML configuration file
+                    to deploy servlets (among other things).
+                    Likewise, The framework uses an XML configuration file to
+                    deploy objects.
+                </p>
+
+            </div>
+
+            <a name="jaas"></a>
+            <div class="section"><h3>JAAS<a name="JAAS"></a></h3>
+
+                <p>
+                    While the framework can work with any approach to user
+                    authentication and authorization, version 1.1 and later
+                    offers
+                    direct support for the standard Java Authentication and
+                    Authorization Service (JAAS).
+                    You can now specify security roles on an action-by-action
+                    basis.
+                </p>
+
+                <p>For more about JAAS, see the Sun Developer Network
+                    <a class="externalLink" href="http://download.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html">product
+                        page</a>.
+                </p>
+
+                <p>
+                    A popular extension for handling security in a Java web
+                    application, including a framework application,
+                    is
+                    <a class="externalLink" href="http://securityfilter.sourceforge.net/">
+                        SecurityFilter</a>                    .
+                </p>
+                
+            </div>
+                        
+            <a name="mvc"></a>
+            <div class="section"><h3>Model View Controller (MVC)<a name="Model_View_Controller_MVC"></a></h3>
+            
+                <p>
+                     Web applications based on JavaServer Pages sometimes 
+                     commingle database code, page design code, and control flow 
+                     code. In practice, we find that unless these concerns are 
+                     separated, larger applications become difficult to maintain.
+                </p>
+                
+                <p>
+                     One way to separate concerns in a software application is 
+                     to use a Model-View-Controller (MVC) architecture. The 
+                     Model represents the business or database code, the View 
+                     represents the page design code, and the Controller 
+                     represents the navigational code. 
+                </p>
+            
+                <p>
+                    The term &quot;MVC&quot; originated with the SmallTalk 
+                    Model-View-Controller framework.
+                    In Smalltalk MVC, the View updates itself from the Model, via 
+                    the &quot;Observer&quot; pattern. The original MVC pattern is like a 
+                    closed loop: The View talks to the Controller, which talks to 
+                    the Model, which talks to the View.
+                </p>
+
+                <p>
+                    But, a direct link between the Model and the View is not 
+                    practical for web applications, and we modify the classic MVC 
+                    arrangement so that it would look less like a loop and more 
+                    like a horseshoe with the controller in the middle.
+                </p>
+
+                <p>
+                    In the MVC/Model 2 design pattern, application flow is mediated 
+                    by a central Controller. The Controller delegates requests -
+                    in our case, HTTP requests - to an appropriate handler. The 
+                    handlers are tied to a Model, and each handler acts as an 
+                    adapter between the request and the Model. The Model
+                    represents, or encapsulates, an application's business logic or 
+                    state. Control is usually then forwarded back through the 
+                    Controller to the appropriate View. The forwarding can be 
+                    determined by consulting a set of mappings, usually loaded from a 
+                    database or configuration file. This provides a loose coupling 
+                    between the View and Model, which can make applications 
+                    significantly easier to create and maintain. 
+                </p>
+                
+                <p>
+                    While MVC is a convenient paradigm, many workers find that 
+                    applcations may utilize more than three layers. 
+                    For example, within the Model, there is often distinct business 
+                    logic and data access layers. 
+                </p>
+            
+                <p>
+                    The framework provides the control layer for a Model 2 web
+                    applications.
+                    Developers can use this layer with other standard
+                    technologies to build the business, data access, and 
+                    presentation layers.
+                </p>
+                
+                <p>
+                    For more about MVC, see 
+                </p>
+                
+                <ul>
+                <li>
+                    <a class="externalLink" href="http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier5.html">
+                        Web-Tier Application Framework Design</a> (Sun J2EE Blueprints)
+                </li>
+                <li>
+                    <a class="externalLink" href="http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html">
+                       Smalltalk MVC framework.</a>
+                </li>
+                <li>
+                    <a class="externalLink" href="http://en.wikipedia.org/wiki/Model_view_controller">
+                       Wikipedia - MVC</a>
+                </li>
+                </ul>                
+            </div>
+            
+            <a name="logic_frameworks"></a>
+            <div class="section"><h3>Business Logic Frameworks<a name="Business_Logic_Frameworks"></a></h3>
+
+                <p>
+                    Most teams still roll their own business logic layer using
+                    plain old JavaBeans (POJOs).
+                    Though, business layer frameworks are beginning to emerge,
+                    and now include:
+                </p>
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://commons.apache.org/chain/">
+                            Commons Chain of Responsiblity</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://springframework.org/">Spring</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://struts.apache.org/2.x/">XWork</a>
+                    </li>
+                </ul>
+
+            </div>
+                   
+            <a name="data_frameworks"></a>
+            <div class="section"><h3>Data Access Frameworks<a name="Data_Access_Frameworks"></a></h3>
+
+                <p>
+                    Most often, the business layer is seen to be distinct from
+                    the data access layer.
+                    Some teams roll their own data access objects (DAOs),
+                    but more and more teams are turning to one of the many
+                    data access frameworks.
+                    Some popular data access frameworks include:
+                </p>
+
+                <ul>
+                
+                    <li>
+                        <a class="externalLink" href="http://www.objectstyle.org/cayenne/">
+                            Cayenne</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/products/ejb/index.html">
+                            Enterprise Java Beans</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://www.hibernate.org/">
+                            Hibernate</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://ibatis.apache.org">
+                            iBATIS</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://java.sun.com/products/jdbc/index.html">
+                            JDBC</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://db.apache.org/ojb/">
+                            Object Relational Bridge</a>
+                    </li>
+                </ul>
+
+            </div>        
+                        
+            <a name="view_frameworks"></a>
+            <div class="section"><h3>View Frameworks<a name="View_Frameworks"></a></h3>
+
+                <p>
+                    Aside from Java Server Pages, there are several other 
+                    presentation technologies available to Java web applications. 
+                </p>
+                
+                <ul>
+                    <li>
+                        <a class="externalLink" href="http://www.freemarker.org/">
+                            Freemarker</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://www.lowagie.com/iText/">
+                            iText (PDF)</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://jaspersoft.com/">
+                            JasperReports</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://velocity.apache.org/">
+                            Velocity</a>
+                    </li>
+                    <li>
+                        <a class="externalLink" href="http://www.w3.org/TR/xslt">XSLT</a>
+                    </li>
+                </ul>
+
+            </div>
+            
+           </div>
+        
+    
+
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2000-2013
+                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+            All Rights Reserved.      
+                    
+      </div>
+
+                                                                  <?xml version="1.0" encoding="UTF-8"?>
+<div class="row span12">Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts
+                project logos are trademarks of The Apache Software Foundation.</div>
+                  
+        
+                </div>
+    </footer>
+  </body>
+</html>

Added: websites/staging/struts/trunk/content/proposals/navigation.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/navigation.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/release-plan-1.0.1.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/release-plan-1.0.1.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/release-plan-1.0b1.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/release-plan-1.0b1.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/release-plan-1.1.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/release-plan-1.1.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/release-plan-1.1b1.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/release-plan-1.1b1.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/release-plan-1.1b2.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/release-plan-1.1b2.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/release-plan-1.1b3.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/release-plan-1.1b3.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/release-plan-1.1rc1.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/release-plan-1.1rc1.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/release-plan-1.1rc2.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/release-plan-1.1rc2.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/release-plan_1_2_0.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/release-plan_1_2_0.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/struts-faces.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/struts-faces.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/todo-1.0.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/todo-1.0.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/todo-1.1.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/todo-1.1.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/struts/trunk/content/proposals/workflow.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/struts/trunk/content/proposals/workflow.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml