<?xml version="1.0"?>
<document url="./learning.xml">

<!--
// ======================================================================== 78
-->

<properties>
    <title>Learning - The Apache Struts Web Application Framework</title>
    <author>Craig R. McClanahan</author>
    <author>Ted Husted</author>
    <author>Martin Cooper</author>
    <author>James Holmes</author>
</properties>

<body>
<section name="Learning About Struts" href="Docs">

    <p>
    The <strong>official documentation</strong> for the framework is provided both 
    online and as a self-installing WAR in the distribution. 
    The <code>struts-documentation.war</code> includes our 
    </p>

    <ul>
    <li>
    <a href="userGuide/index.html">User and Developer Guides</a>,
    </li>
    <li>
    <a href="api/index.html">Comprehensive Javadocs</a>,
    </li>
    <li>
    <a href="./faqs/index.html">FAQ and Howto Guides</a>,
    </li>
    <li>
    and everything else you find here.
    </li>
    </ul>

    <p>
    You are invited to preview the documentation online and then install 
    the application locally for closer study.
    </p>

    
    <strong>NOTE:</strong> If you are previewing the documentation on the website, 
    most of the links in this section will refer to the <strong>Nightly Build</strong>.
    When learning about Struts, <strong>be sure to refer to the documentation for 
    the version you are actually using</strong>. 
    The documentation is bundled with each distribution as an application that 
    you can install and use locally.
    

    <p>
    The concise Struts <a href="userGuide/index.html"><strong>User Guide</strong></a> 
    introduces the Model-View-Controller architecture, and how it relates to 
    the major components of Struts.
    If you want to find out "How Struts works", this is the place to start.
    Along with an architectural overview, the User Guide also includes 
    detailed installation instructions and release notes for each version of 
    the framework.
    </p>

    <p>
        Our <strong>Developer Guides</strong> are detailed technical references to the extensions and components provided in the
        Struts distribution.
        Included are package overviews and API reference for each of the Struts taglibs, along with guides to the
        Struts Utilities and the Struts Validator.
        The Developer Guides are designed as a day-to-day reference to help you get the most out of the standard
        packages.
        Links to the various Developer Guides are provided as part of
        <a href="userGuide/index.html"><strong>User Guide</strong></a> menu.
    </p>

    <p>
    For more detail about a specific class or package, the Struts 
    <a href="api/index.html"><strong>Javadocs</strong></a> are <strong>surprisingly 
    comprehensive and carefully maintained</strong>. 
    It is <em>strongly</em> recommended that you refer to the 
    <a href="api/index.html"> Javadoc</a> for each class as you begin to use 
    it. 
    This will help ensure that important features and options are not 
    overlooked. 
    <em>What you don't know, can't help you.</em>
    </p>

    <p id="faqs">
    The Struts <strong>FAQs</strong> are designed to fill in any small gaps left by the 
    Javadocs or the User and Developer Guides. 
    </p>

    <ul>
    <li>The <a href="./faqs/kickstart.html">Kickstart FAQ</a> 
    answers the most common non-technical questions people first ask about 
    Struts. 
    </li>
    <li>
    The <a href="./faqs/newbie.html">Struts Newbie FAQ</a> answers the most 
    common technical questions asked by first-timer Struts developers. 
    </li>
    <li>
    The <a href="./faqs/helping.html">How to Help FAQ</a> answers the most 
    common questions about contributing to the Apache Struts project.
    </li>
    </ul>

    <p id="howtos">
    The <strong>Howto Guides</strong> are designed to help you get started with some of 
    the optional extensions and components available for Struts. 
    These include topics like using the Secure Socket Layer (SSL) protocol 
    with Struts and how to unit test your Struts applications. 
    </p>

    <p>
        The <a href="http://wiki.apache.org/struts/"><strong>Struts Wiki</strong></a> is a
        relatively new addition to the Struts documentation.
        All members of the Struts Community are invited to post comments to the Wiki, as well as the User List.
        The Wiki is best suited for threads that you think are of lasting importance, while the mailing lists are best
        suited for incidental questions.
    </p>

    <p>
        If you have any comments on the pages you see here, they can be posted to the Wiki by following the link on the
        bottom of any page.
    </p>

    <p>
        For more help, you might try the JGuru Struts knowledgebase at the <a href="http://jguru.com/faq/Struts">JGuru
        FAQ</a> and <a href="http://jguru.com/forums/Struts">Forum</a>.

    </p>
    <p>
    Of course, the only true documentation is the code itself. 
    If you have any questions about how Struts actually works, do not hesitate 
    to <em>use the source</em>. 
    For the complete, buildable source code to the entire Struts framework, 
    see the "src" folder in
    <a href="http://jakarta.apache.org/site/sourceindex.html"><strong>your source 
    distribution</strong></a>.
    </p>

</section>

<section name="Struts by Example" href="Examples">

    <p>
        To help you see how it all fits together, several example applications are bundled with the Struts
        distribution:
    </p>

    <ul>
        <li>
            Blank - A simple template for starting new Struts applications.</li>
        <li>
            Documentation - The Struts documentation bundle, as seen on the website.</li>
        <li>
            <strong>MailReader</strong> - The original Struts example application. <em>Try me first!</em></li>
        <li>Examples - Various demonstration applications combined as separate modules:<ul>
        <li>
            Exercise-Taglib - A set of test pages that also demonstrate use of the custom tags.</li>
        <li>
            Tiles-Doc - Extensive demonstration of Tiles extension.</li>
        <li>
            Upload - Demonstrates using the file upload facilities. (Based on Commons Upload.)</li>
        <li>
            Validator - Demonstrates using the Validator extension.</li>
        </ul></li>
    </ul>

    <p>
        These applications are provided as standalone WARs in the binary distribution.
        The source code for each application is available under <code>WEB-INF/src</code> in the binaries and under the
        <code>web</code> package in the source distribution.
    </p>

    <p>
        There are also many third-party example applications available for study, including these:
    </p>

    <ul>
        <li>
            <a href="http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse">AppFuse</a> - Demonstrates using XDoclet with
            Struts, along with different security packages and Hibernate for database persistence.
        </li>
        <li>
            <a href="http://www.ibatis.com/jpetstore/jpetstore.html">JPetStore</a> - A streamlined version of the Java
            Petstore application implemented with Struts and iBATIS database layer.
        </li>
        <li>
           <a href="http://www.codeczar.com/products/logweb/index.html">LogWeb</a> - A Struts webapp for configuring
            Log4J at runtime within a servlet container.
        </li>
    </ul>

</section>

<section name="Learning More About Struts" href="More">
    <p>
    The Struts <a href="using.html#Lists">Mailing Lists</a> are a treasure trove of 
    useful, interactive information. The user list tends to carry a high 
    volume, so always check the published documentation and the
    <a href="http://mail-archives.apache.org/eyebrowse/SummarizeList?listId=42">
    <strong>MAILING LIST ARCHIVE</strong></a> before 
    <a href="http://www.catb.org/~esr/faqs/smart-questions.html">posting a
    new question</a>.
    Like as not, it's already been asked and answered.
    </p>

    <p>
    If you really can't find the answer to your question in the 
    <a href="#faqs">FAQs</a> or
    <a href="http://mail-archives.apache.org/eyebrowse/SummarizeList?listId=42">
    list archive</a>, you can post your query to the Struts User list -- 
    <strong>BUT YOU MUST SUBSCRIBE TO THE 
    <a href="mailto:user-subscribe@struts.apache.org">USER LIST</a>
    OR THE <a href="mailto:user-digest-subscribe@struts.apache.org">
    USER LIST DIGEST</a> BEFORE POSTING</strong>. </p>

    <p>
        Please note that the Struts User list enjoys a "casual friday" policy. 
        More off-topic  messages are tolerated on Fridays so long as the 
        message is prefixed with the token [FRIDAY]. 
        If you'd rather not be troubled by these postings, please set your 
        mail filter accordingly. 
        Posting [FRIDAY] articles on any other weekday is <strong>strongly 
        discouraged</strong>. 
        We thank you for your cooperation.
    </p>

    <p>
        The Struts <a href="http://nagoya.apache.org/wiki/apachewiki.cgi?StrutsProjectPages"><strong>Wiki</strong></a> is a relatively
        new addition to our documentation.
        Any member of the community (that means you!) is invited to post new material to the Wiki.
        However, the Wiki is not the place to ask incidental questions.
        <strong>All support questions should be directed to the <a href="using.html#Lists">Struts User list</a> or
        other support forum</strong>.
    </p>

    <p>
        There is also a set of Wiki pages devoted to comments on the documentation.
        To comment on the documentation, follow the "Comments?" link at the bottom of any page.
    </p>

    <p>
    The <a href="status.html#roadmap"><strong>Roadmap</strong></a> page outlines our tentative plans for future development.
    </p>

</section>

    <section name="Struts Community Resources" href="resources">

    <p>
        Struts has attracted a large and robust community of developers,
        which have created a vast number of Struts related resources.
        Several pages on our wiki are devoted to listing <a href="http://wiki.apache.org/struts/StrutsResources">Struts resources</a>.
    </p>

    <ul>
        <li>
            <a href="http://wiki.apache.org/struts/StrutsArticles">articles</a>,
        </li>

    <li>
        <a href="http://wiki.apache.org/struts/StrutsBooks">books</a>,
    </li>

        <li>
            <a href="http://wiki.apache.org/struts/StrutsApplications">sample applications</a>,
        </li>

        <li>
            <a href="http://wiki.apache.org/struts/StrutsTraining">training</a>, and more!
        </li>

    </ul>

</section>

    <section name="Books about Struts" href="books">

       <p>
       The Apache Software Foundation does not provide printed manuals,
       but several third-party books about Struts are available.
       A current list of books about Struts is maintained as a
       <a href="http://wiki.apache.org/struts/StrutsBooks">wiki page</a>.
       </p>

    </section>

    <section>
        <p class="right">
        Next: <a href="acquiring.html">Acquiring Struts</a>
        </p>
    </section>

</body>
</document>
