blob: 2606a86c87e8ad5e9c9d22b5efbd2e6b3fd5b8bc [file] [log] [blame]
<?xml version="1.0"?>
<document url="./apps.xml">
<properties>
<title>Building Applications</title>
</properties>
<body>
<section name="How to Build Applications" href="building_apps"/>
<section href="intro" name="About This Document">
<p>
This document outlines one possible sequence of development steps that can be followed to create a
Struts application. It is not intended as a complete description of each
referenced development activity. More detailed documentation is available
elsewhere and is referenced by "(more...)" links where possible.
</p>
</section>
<section href="caveats" name="Caveats">
<ol>
<li>Requirements development and design are outside of the scope of this document.</li>
<li>For help installing Struts, see the <a href="../userGuide/installation.html">Getting Started</a> chapter.</li>
<li>There are many other ways to approach Struts development and there are many
other features available besides the ones discussed below. This document
outlines only one way to get started.</li>
<li>This document focuses on form/data centric applications, but may also work with
other types of applications.</li>
<li>This material was written for Struts 1.1 (beta 2).</li>
</ol>
</section>
<section href="overview" name="Overview">
<ol>
<li>Implement data entry forms as JSP files.</li>
<li>Implement one or more <code>ActionForm</code> descendents to buffer data
between JSPs and Actions.</li>
<li>Create an XML document that defines the validation rules for your
application.</li>
<li>Implement one or more <code>Action</code> descendents to respond form
submissions.</li>
<li>Create <code>struts-config.xml</code> to associate forms with
actions.</li>
<li>Create or update <code>web.xml</code> to reference
<code>ActionServlet</code>, taglibs used by Struts.</li>
<li>Parallel Tasks
<ol>
<li>Building</li>
<li>Unit Testing</li>
<li>Deployment</li>
</ol>
</li>
</ol>
</section>
<section href="details" name="Details">
<ol>
<li>Implement data entry forms as JSP files.
<ol>
<li>Use elements from the <code>html</code> taglib
to define the form elements. <a href="../userGuide/struts-html.html">
(more...)</a></li>
<li>Use <code>message</code> and other elements from the <code>bean</code>
taglib to define the labels and other static text of the form.
<a href="../userGuide/struts-bean.html">(more...)</a>
<ol>
<li>Create and maintain a properties file of the text elements
to be displayed. <a href="../userGuide/preface.html#resources">(more...)
</a></li>
</ol>
</li>
<li>Use <code>property</code> attributes to link form fields to
<code>ActionForm</code> instance variables.</li>
</ol>
</li>
<li>Implement one or more <code>ActionForm</code> descendents
to buffer data between JSPs and Actions.
<ol>
<li>Create get/set pairs that correspond to the property names
in your related JSP form. Example:
<pre>&lt;html:text property="city" /&gt;</pre>
needs:
<pre>getCity() and setCity(String c)</pre>
</li>
<li>When needed, create a <code>reset</code> method
that sets the fields of the <code>ActionForm</code> to their default values. Most ActionForms do not need to do this.</li>
</ol>
</li>
<li>Create an XML document that defines the validation rules for your
application.</li>
<li>Implement one or more <code>Action</code> descendents
to respond to form submissions.
<ol>
<li>Descend from DispatchAction or LookupDispatchAction if you
want one class to handle more than one kind of event (example: one Action
to handle 'insert', 'update' and 'delete' events, using a different "surrogate" execute method for each). <a href="http://husted.com/struts/tips/002.html">(more...)</a></li>
<li>Use the <code>execute</code> method
(or its surrogates) of your Action class to interface with objects in your
application responsible for database interaction, such as EJBs, etc.
<!-- [:TODO: find good doc to link to] -->
</li>
<li>Use the return value of the <code>execute</code> method
(or its surrogates) direct the user interface to the appropriate next page.
<!-- [:TODO: find good doc to link to] -->
</li>
</ol>
</li>
<li>Create <code>struts-config.xml</code> to
associate forms with actions. The file minimally needs:</li>
<li>Create or update <code>web.xml</code> to
reference <code>ActionServlet</code>, taglibs used by Struts. <a href="../userGuide/configuration.html#dd_config"> (more...)</a></li>
<li>Parallel Tasks
<ol>
<li>Building
<ol>
<li>Use Ant. It can compile, create WAR file, perform XSLT
transformations, run unit tests, interact with version control systems,
clean up, etc. <a href="http://jakarta.apache.org/ant"> (more...)</a></li>
<li>Create and use build script incrementally, as you create
files that need to be copied, compiled, etc. </li>
</ol>
</li>
<li>Unit Testing
<ol>
<li>Unit test normal java beans with JUnit. <a href="http://www.junit.org"> (more...)</a></li>
<li>Unit test JSP, taglibs and conventional servlet components
with Cactus. <a href="http://jakarta.apache.org/cactus"> (more...)</a></li>
<li>Unit test Action servlets with StrutsTestCase. <a href="http://strutstestcase.sourceforge.net"> (more...)</a></li>
<li>Add all unit tests to the build script as a separate
target. This target should use the <code>junit</code> tag to launch each TestCase descendent. <a href="http://jakarta.apache.org/ant/manual/OptionalTasks/junit.html"> (more...)</a></li>
</ol>
</li>
<li>Deployment
<ol>
<li>Build script should create a war file containing the
files developed above, along with files that make up the Struts framework.
<!-- [:TODO: describe this further, look for doc to link to] -->
</li>
</ol>
</li>
</ol>
</li>
</ol></section>
</body>
</document>