| <?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><html:text property="city" /></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> |