You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by ma...@apache.org on 2001/10/19 07:51:09 UTC

cvs commit: jakarta-struts/doc/userGuide building_controller.xml building_model.xml building_view.xml introduction.xml

martinc     01/10/18 22:51:09

  Modified:    doc/userGuide building_controller.xml building_model.xml
                        building_view.xml introduction.xml
  Log:
  Applied some documentation changes suggested by Ed Burns, along with some
  general corrections, and some corrections to the proposed changes.
  
  PR: 4140
  Submitted by: Ed Burns
  
  Revision  Changes    Path
  1.6       +17 -5     jakarta-struts/doc/userGuide/building_controller.xml
  
  Index: building_controller.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/doc/userGuide/building_controller.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- building_controller.xml	2001/10/07 04:48:08	1.5
  +++ building_controller.xml	2001/10/19 05:51:09	1.6
  @@ -5,6 +5,8 @@
       <author>Craig R. McClanahan</author>
       <author>Mike Schachter</author>
       <author>Ted Husted</author>
  +    <author>Martin Cooper</author>
  +    <author>Ed Burns</author>
       <title>The Struts User's Guide - Building Controller Components</title>
     </properties>
     
  @@ -29,7 +31,8 @@
              extension of the <code>ActionMapping</code> class) that defines the class
              names and other information associated with each possible mapping.</li>
           <li>Write the action mapping configuration file (in XML) that is used
  -            to configure the controller servlet.</li>
  +            to configure the controller servlet. This file is usually named
  +            <code>struts-config.xml</code>.</li>
           <li>Update the web application deployment descriptor file (in XML)
               for your application to include the necessary Struts components.</li>
           <li>Add the appropriate Struts components to your application.</li>
  @@ -206,11 +209,13 @@
               for each form bean, which has the following important attributes:
               <ul>
                 <li>
  -                <b>name</b>: The name of the request or session level attribute that this form
  -                bean will be stored as
  +                <b>name</b>: A unique identifier for this bean, which will be used
  +                to reference it in corresponding action mappings. Usually, this
  +                is also the name of the request or session attribute under which
  +                this form bean will be stored.
                 </li>
                 <li>
  -                <b>type</b>: The fully-qualified Java classname of your form bean
  +                <b>type</b>: The fully-qualified Java classname of your form bean.
                 </li>
               </ul>
           </blockquote>
  @@ -235,6 +240,13 @@
           
         </p>
           
  +
  +      <p>
  +        For every &lt;form-bean&gt; tag in your <code>struts-config.xml</code>
  +        file, you must have a corresponding Java class. The same holds true for
  +        each &lt;action-mapping&gt; tag.
  +      </p>
  +
         <p>
           The <code>struts-config.xml</code> file from the example application includes
           the following mapping entry for the "log on" function, which we will use
  @@ -623,7 +635,7 @@
            <code>WEB-INF/lib</code> directory.
           </p>
                                   <p>
  -                                        Next: <a href="resources.html">Resources</a>
  +                                        Next: <a href="resources.html">Struts Resources</a>
                                   </p>
         </section>
       </section>
  
  
  
  1.3       +16 -11    jakarta-struts/doc/userGuide/building_model.xml
  
  Index: building_model.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/doc/userGuide/building_model.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- building_model.xml	2001/10/07 04:48:08	1.2
  +++ building_model.xml	2001/10/19 05:51:09	1.3
  @@ -5,6 +5,8 @@
       <author>Craig R. McClanahan</author>
       <author>Mike Schachter</author>
       <author>Ted Husted</author>
  +    <author>Martin Cooper</author>
  +    <author>Ed Burns</author>
       <title>The Struts User's Guide - Building Model Components</title>
     </properties>
     
  @@ -14,16 +16,18 @@
         <section name="2.1 Overview" href="overview">
           
           <p>
  -          The application requirements document that you are using will likely
  -        have focused on the user interface to be created.  However, you should ensure
  -        that the processing required for each submitted request is also clearly
  -        defined.  In general, the developer of the <i>Model</i> components will be
  -        focusing on the creation of JavaBeans classes that support all of the
  -        functional requirements.  The precise nature of the beans required by a
  -        particular application will vary widely depending on those requirements,
  -        but they can generally be classified into several categories discussed
  -        below.  However, a brief review of the concept of "scope" as it relates
  -        to beans is useful first.
  +        Many requirements documents used for building web applications
  +        focus on the <i>View</i>.  However, you should ensure that the
  +        processing required for each submitted request is also clearly
  +        defined from the <i>Model's</i> perspective.  In general, the
  +        developer of the <i>Model</i> components will be focusing on
  +        the creation of JavaBeans classes that support all of the
  +        functional requirements.  The precise nature of the beans
  +        required by a particular application will vary widely
  +        depending on those requirements, but they can generally be
  +        classified into several categories discussed below.  However,
  +        a brief review of the concept of "scope" as it relates to
  +        beans and JSP is useful first.
         </p>
       </section>
       
  @@ -84,7 +88,8 @@
           The Struts framework generally assumes that you have created an
           <code>ActionForm</code> bean (that is, a Java class extending the
           <code>ActionForm</code> class) for each input form required in your
  -        application.  If you define such beans in your <code>ActionMapping</code>
  +        application. <code>ActionForm</code> beans are sometimes just called
  +        "form beans". If you declare such beans in your <code>ActionMapping</code>
           configuration file (see "<a href="building_controller.html#config">
           Building the Controller Components</a>"), the Struts  controller servlet 
           will automatically perform the following services for you, before 
  
  
  
  1.5       +11 -0     jakarta-struts/doc/userGuide/building_view.xml
  
  Index: building_view.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/doc/userGuide/building_view.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- building_view.xml	2001/10/07 04:48:08	1.4
  +++ building_view.xml	2001/10/19 05:51:09	1.5
  @@ -5,6 +5,8 @@
       <author>Craig R. McClanahan</author>
       <author>Mike Schachter</author>
       <author>Ted Husted</author>
  +    <author>Martin Cooper</author>
  +    <author>Ed Burns</author>
       <title>The Struts User's Guide - Building View Components</title>
     </properties>
     
  @@ -78,6 +80,13 @@
         </ul>
           
         <p>
  +        Please note that the i18n support in Struts is currently limited to the
  +        <b>presentation</b> of internationalized information to the user.
  +        Support for various Locale specific <b>input methods</b> is left up
  +        to the client device, which is usually a web browser.
  +      </p>
  +
  +      <p>
           For an internationalized application, follow the steps described in
           the Internationalization document in the JDK documentation bundle for your
           platform to create a properties file containing the messages for each
  @@ -279,6 +288,8 @@
                 <code>&lt;form&gt;</code> element, based on the specified attributes.
                 It also associates all of the fields within this form with a session
                 scoped FormBean that is stored under the key <code>logonForm</code>.
  +              The Struts developer provides the Java implementation of this form
  +              bean, subclassing the Struts class <code>ActionForm</code>.
                 This bean is used to provide initial values for all of the input
                 fields that have names matching the property names of the bean.
                 If an appropriate bean is not found, a new one will be created
  
  
  
  1.6       +73 -43    jakarta-struts/doc/userGuide/introduction.xml
  
  Index: introduction.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/doc/userGuide/introduction.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- introduction.xml	2001/10/19 05:15:16	1.5
  +++ introduction.xml	2001/10/19 05:51:09	1.6
  @@ -6,6 +6,8 @@
       <author>Mike Schachter</author>
       <author>Larry McCay</author>
       <author>Ted Husted</author>
  +    <author>Martin Cooper</author>
  +    <author>Ed Burns</author>
       <title>The Struts User's Guide - Introduction</title>
     </properties>
   
  @@ -16,6 +18,23 @@
         <section name="1.1 Preface: Forward into the Past! (or a brief history of Struts)" href="preface">
   
           <p>
  +          Before getting started, you should know the basics of the following
  +          technologies:
  +        </p>
  +
  +	<ul>
  +	  <li>The HTTP Request/Response sequence. The canonical source for this
  +	    is <a href="http://www.ietf.org/rfc/rfc2616.txt?number=2616">RFC 2616
  +	    - Hypertext Transfer Protocol (HTTP/1.1)</a>.</li>
  +	  <li>Java Servlets. A good place to start is the
  +	    <a href="http://java.sun.com/products/servlet/technical.html#tutorials">
  +	    servlet tutorials</a>.</li>
  +	  <li>JavaServer Pages (JSP). Again, a good place to start is the
  +	    <a href="http://java.sun.com/products/jsp/technical.html#tutorials">
  +	    JSP tutorials</a>.</li>
  +	</ul>
  +
  +        <p>
             When Java servlets were first invented, many programmers quickly realized that they were a
             Good Thing. They were faster and more powerful that standard CGI, portable, and infinitely
             extensible.
  @@ -60,51 +79,59 @@
         <section name="1.2 The Model-View-Controller ('MVC') Design Pattern" href="mvc">
         
           <p>
  -          In the MVC design pattern, application flow is mediated by a central Controller. The           
  -          Controller delegates requests to an appropriate handler. The handlers are tied to a Model,           
  -          which act 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 an application           
  -          significantly easier to create and maintain.
  -        </p>        
  -        
  +          In the MVC 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 an
  +          application significantly easier to create and maintain.
  +        </p>
  +
         </section>
         
   
         <section name="1.3 Struts Framework Overview" href="overview">
         
  -         <p>
  -           True to the Model-View-Controller design pattern, Struts applications have three 
  -          major components: a servlet controller, JavaServer pages (the "view"), and the 
  -          application's business logic (or the "model"). Let's step through how this all 
  -          fits together.</p>
  -         <p>
  -           The controller bundles and routes HTTP requests to other objects in the framework,
  -          including JavaServer Pages. When initialized, the controller parses a configuration 
  -          resource file. The configuration resource defines (among other things) the action
  -          mappings for the application. The controller uses these mappings to turn HTTP
  -          requests into application actions.
  +        <p>
  +          True to the Model-View-Controller design pattern, Struts applications have three 
  +          major components: a servlet controller, which is provided by Struts itself,
  +          JSP pages (the "view"), and the application's business logic (or the
  +          "model"). Let's step through how this all fits together.
  +        </p>
  +
  +        <p>
  +          The Struts controller servlet bundles and routes HTTP requests to other
  +          objects in the framework, including JavaServer Pages and
  +          <code>org.apache.struts.action.Action</code> subclasses provided by the
  +          Struts developer. When initialized, the controller parses a configuration
  +          resource file. The configuration resource defines (among other things)
  +          the action mappings for the application. The controller uses these
  +          mappings to turn HTTP requests into application actions.
           </p>
           
           <p>
             At a minimum, a mapping must specify (1) a request path and (2) the object
  -          type to act upon the request. The action object can handle the request and respond 
  +          type to act upon the request. The Action object can handle the request and respond 
             to the client (usually a Web browser), or indicate that control should be forwarded 
             to another action. For example, if a login succeeds, a loginAction object may wish 
             to forward control to a mainMenu action.
           </p>
         
           <p>
  -          Action objects are linked to the application's controller, and so have access
  -          to that servlet's methods. When forwarding control, an object can indirectly
  +          Action objects have access to the application's controller servlet, and so have access
  +          to that servlet's methods. When forwarding control, an Action object can indirectly
             forward one or more shared objects, including JavaBeans, by placing them in one
             of the standard collections shared by Java servlets.
           </p>
           
           <p>
  -          An action object can create a shopping cart bean, add an item to the
  +          An Action object can create a shopping cart bean, add an item to the
             cart, place the bean in the session collection, and then forward control to
             another action -- that may use a JSP to display the contents of the user's cart.
             Since each client has their own session, they will each also have their own
  @@ -115,34 +142,37 @@
           <p>
             JavaBeans can also be used to manage input forms. A key problem in designing
             Web applications is retaining and validating what a user has entered between
  -          requests. With Struts, you can easily store the data for a input form in a form
  -          bean. The bean is saved in one of the standard, shared context collections, 
  -          so that it can be used by other objects, especially the action object.
  +          requests. With Struts, you can define your own set of form bean classes, by
  +          subclassing <code>org.apache.struts.action.ActionForm</code>, and easily store
  +          the data for an input form in these form beans. The bean is saved in one of the
  +          standard, shared context collections, so that it can be used by other objects,
  +          especially the Action object.
           </p>
           
           <p>
             The form bean can be used by a JSP to collect data from the user ... by an
  -          action object to validate the user-entered data ... and then by the JSP again to
  +          Action object to validate the user-entered data ... and then by the JSP again to
             re-populate the form fields. In the case of validation errors, Struts has a
             shared mechanism for raising and displaying error messages.
           </p>
           
           <p>
  -          A Struts form bean is defined in the configuration resource and linked to an action
  -          mapping using a common property name. When a request calls for an action that uses
  -          a form bean, the controller servlet either retrieves or creates the form bean, and
  -          passes it to the action object. The action object can then check the contents of
  -          the form bean before its input form is displayed, and also queue messages to be
  -          handled by the form. When ready, the action object can return control with a
  -          forwarding to its input form, usually a JSP. The controller can then respond to
  -          the HTTP request and direct the client to the Java Server Page.
  +          A Struts form bean is declared in the configuration resource, defined in a Java
  +          source file, and linked to an action mapping using a common property name. When
  +          a request calls for an action that uses a form bean, the controller servlet
  +          either retrieves or creates the form bean, and passes it to the Action object.
  +          The action object can then check the contents of the form bean before its input
  +          form is displayed, and also queue messages to be handled by the form. When
  +          ready, the Action object can return control with a forwarding to its input
  +          form, usually a JSP. The controller can then respond to the HTTP request and
  +          direct the client to the Java Server Page.
           </p>
           
           <p>
             The Struts framework includes custom tags that can automatically populate
             fields from a form bean. The only thing most JavaServer Pages need to know
             about the rest of the framework is the proper field names and where to submit
  -          the form. Components like the messages set by the action object can be output
  +          the form. Components like the messages set by the Action object can be output
             using a single custom tag. Other application-specific tags can also be defined
             to hide implementation details from the JSPs.
           </p>
  @@ -162,11 +192,11 @@
           </p>
           
           <p>
  -          For the simplest applications, an action object can handle the business logic
  -          associated with a request. However, in most cases, an action object should pass
  +          For the simplest applications, an Action object can handle the business logic
  +          associated with a request. However, in most cases, an Action object should pass
             the request to another object, usually a JavaBean. To allow reuse on other
             platforms, business-logic JavaBeans should not refer to any Web application
  -          objects. The action object should translate needed details from the HTTP request
  +          objects. The Action object should translate needed details from the HTTP request
             and pass those along to the business-logic beans as regular Java variables.
           </p>
             
  @@ -214,8 +244,8 @@
         </p>
           
         <p>
  -        Large-scale applications will often represent the business logic actions
  -        that are possible in a system as methods that can be called on the beans
  +        Large-scale applications will often represent the set of possible
  +        business logic actions as methods that can be called on the beans
           maintaining the state information.  For example, you might have a shopping
           cart bean, stored in session scope for each current user, with properties
           that represent the current set of items that the user has decided to
  
  
  

Re: cvs commit: jakarta-struts/doc/userGuide building_controller.xml building_model.xml building_view.xml introduction.xml

Posted by ma...@tumbleweed.com.
Ya know, you're right. When I read the original proposed change, it seemed
to make sense, but I guess I was thinking only of the common case where the
'type' attribute is used. It's not true when either 'forward' or 'include'
are used.

Now that I think about it, technically, the previous sentence is not true
either, since it's perfectly legal to have multiple form bean names
referencing the same Java class (although I doubt that this is common).

I'll go ahead and zap that paragraph. :-)

Regarding input methods, this is related to i18n mechanisms to deal with
input of languages such as Japanese, Chinese or Korean. There's a good
Java-oriented description here:

http://java.sun.com/j2se/1.3/docs/guide/intl/intl.doc.html#inputmethod

This is not something that is likely to be addressed by Struts in the near
future, if at all. If you'd prefer, we can either zap the paragraph, or
remove "currently".

--
Martin Cooper


----- Original Message -----
From: "Ted Husted" <hu...@apache.org>
To: <st...@jakarta.apache.org>
Sent: Friday, November 02, 2001 2:32 AM
Subject: Re: cvs commit: jakarta-struts/doc/userGuide
building_controller.xml building_model.xml building_view.xml
introduction.xml


>   +      <p>
>   +        For every &lt;form-bean&gt; tag in your
> <code>struts-config.xml</code>
>   +        file, you must have a corresponding Java class. The same
> holds true for
>   +        each &lt;action-mapping&gt; tag.
>   +      </p>
>   +
>
> Is this accurate? What something like:
>
>     <action
>         path="/Menu"
>         forward="/pages/article/Menu.jsp">
>     </action>
>
>
> >          <p>
> >   +        Please note that the i18n support in Struts is currently
limited to the
> >   +        <b>presentation</b> of internationalized information to the
user.
> >   +        Support for various Locale specific <b>input methods</b> is
left up
> >   +        to the client device, which is usually a web browser.
> >   +      </p>
> >   +
>
> What sort of input methods are we talking about here?
>
> Does "currently" imply that these might be supported by Struts in the
> near future.
>
> The other changes look great ;-)
>
> -Ted.
>
>
> martinc@apache.org wrote:
> >
> > martinc     01/10/18 22:51:09
> >
> >   Modified:    doc/userGuide building_controller.xml building_model.xml
> >                         building_view.xml introduction.xml
> >   Log:
> >   Applied some documentation changes suggested by Ed Burns, along with
some
> >   general corrections, and some corrections to the proposed changes.
> >
> >   PR: 4140
> >   Submitted by: Ed Burns
> >
> >   Revision  Changes    Path
> >   1.6       +17 -5
jakarta-struts/doc/userGuide/building_controller.xml
> >
> >   Index: building_controller.xml
> >   ===================================================================
> >   RCS file:
/home/cvs/jakarta-struts/doc/userGuide/building_controller.xml,v
> >   retrieving revision 1.5
> >   retrieving revision 1.6
> >   diff -u -r1.5 -r1.6
> >   --- building_controller.xml   2001/10/07 04:48:08     1.5
> >   +++ building_controller.xml   2001/10/19 05:51:09     1.6
> >   @@ -5,6 +5,8 @@
> >        <author>Craig R. McClanahan</author>
> >        <author>Mike Schachter</author>
> >        <author>Ted Husted</author>
> >   +    <author>Martin Cooper</author>
> >   +    <author>Ed Burns</author>
> >        <title>The Struts User's Guide - Building Controller
Components</title>
> >      </properties>
> >
> >   @@ -29,7 +31,8 @@
> >               extension of the <code>ActionMapping</code> class) that
defines the class
> >               names and other information associated with each possible
mapping.</li>
> >            <li>Write the action mapping configuration file (in XML) that
is used
> >   -            to configure the controller servlet.</li>
> >   +            to configure the controller servlet. This file is usually
named
> >   +            <code>struts-config.xml</code>.</li>
> >            <li>Update the web application deployment descriptor file (in
XML)
> >                for your application to include the necessary Struts
components.</li>
> >            <li>Add the appropriate Struts components to your
application.</li>
> >   @@ -206,11 +209,13 @@
> >                for each form bean, which has the following important
attributes:
> >                <ul>
> >                  <li>
> >   -                <b>name</b>: The name of the request or session level
attribute that this form
> >   -                bean will be stored as
> >   +                <b>name</b>: A unique identifier for this bean, which
will be used
> >   +                to reference it in corresponding action mappings.
Usually, this
> >   +                is also the name of the request or session attribute
under which
> >   +                this form bean will be stored.
> >                  </li>
> >                  <li>
> >   -                <b>type</b>: The fully-qualified Java classname of
your form bean
> >   +                <b>type</b>: The fully-qualified Java classname of
your form bean.
> >                  </li>
> >                </ul>
> >            </blockquote>
> >   @@ -235,6 +240,13 @@
> >
> >          </p>
> >
> >   +
> >   +      <p>
> >   +        For every &lt;form-bean&gt; tag in your
<code>struts-config.xml</code>
> >   +        file, you must have a corresponding Java class. The same
holds true for
> >   +        each &lt;action-mapping&gt; tag.
> >   +      </p>
> >   +
> >          <p>
> >            The <code>struts-config.xml</code> file from the example
application includes
> >            the following mapping entry for the "log on" function, which
we will use
> >   @@ -623,7 +635,7 @@
> >             <code>WEB-INF/lib</code> directory.
> >            </p>
> >                                    <p>
> >   -                                        Next: <a
href="resources.html">Resources</a>
> >   +                                        Next: <a
href="resources.html">Struts Resources</a>
> >                                    </p>
> >          </section>
> >        </section>
> >
> >
> >
> >   1.3       +16 -11    jakarta-struts/doc/userGuide/building_model.xml
> >
> >   Index: building_model.xml
> >   ===================================================================
> >   RCS file: /home/cvs/jakarta-struts/doc/userGuide/building_model.xml,v
> >   retrieving revision 1.2
> >   retrieving revision 1.3
> >   diff -u -r1.2 -r1.3
> >   --- building_model.xml        2001/10/07 04:48:08     1.2
> >   +++ building_model.xml        2001/10/19 05:51:09     1.3
> >   @@ -5,6 +5,8 @@
> >        <author>Craig R. McClanahan</author>
> >        <author>Mike Schachter</author>
> >        <author>Ted Husted</author>
> >   +    <author>Martin Cooper</author>
> >   +    <author>Ed Burns</author>
> >        <title>The Struts User's Guide - Building Model
Components</title>
> >      </properties>
> >
> >   @@ -14,16 +16,18 @@
> >          <section name="2.1 Overview" href="overview">
> >
> >            <p>
> >   -          The application requirements document that you are using
will likely
> >   -        have focused on the user interface to be created.  However,
you should ensure
> >   -        that the processing required for each submitted request is
also clearly
> >   -        defined.  In general, the developer of the <i>Model</i>
components will be
> >   -        focusing on the creation of JavaBeans classes that support
all of the
> >   -        functional requirements.  The precise nature of the beans
required by a
> >   -        particular application will vary widely depending on those
requirements,
> >   -        but they can generally be classified into several categories
discussed
> >   -        below.  However, a brief review of the concept of "scope" as
it relates
> >   -        to beans is useful first.
> >   +        Many requirements documents used for building web
applications
> >   +        focus on the <i>View</i>.  However, you should ensure that
the
> >   +        processing required for each submitted request is also
clearly
> >   +        defined from the <i>Model's</i> perspective.  In general, the
> >   +        developer of the <i>Model</i> components will be focusing on
> >   +        the creation of JavaBeans classes that support all of the
> >   +        functional requirements.  The precise nature of the beans
> >   +        required by a particular application will vary widely
> >   +        depending on those requirements, but they can generally be
> >   +        classified into several categories discussed below.  However,
> >   +        a brief review of the concept of "scope" as it relates to
> >   +        beans and JSP is useful first.
> >          </p>
> >        </section>
> >
> >   @@ -84,7 +88,8 @@
> >            The Struts framework generally assumes that you have created
an
> >            <code>ActionForm</code> bean (that is, a Java class extending
the
> >            <code>ActionForm</code> class) for each input form required
in your
> >   -        application.  If you define such beans in your
<code>ActionMapping</code>
> >   +        application. <code>ActionForm</code> beans are sometimes just
called
> >   +        "form beans". If you declare such beans in your
<code>ActionMapping</code>
> >            configuration file (see "<a
href="building_controller.html#config">
> >            Building the Controller Components</a>"), the Struts
controller servlet
> >            will automatically perform the following services for you,
before
> >
> >
> >
> >   1.5       +11 -0     jakarta-struts/doc/userGuide/building_view.xml
> >
> >   Index: building_view.xml
> >   ===================================================================
> >   RCS file: /home/cvs/jakarta-struts/doc/userGuide/building_view.xml,v
> >   retrieving revision 1.4
> >   retrieving revision 1.5
> >   diff -u -r1.4 -r1.5
> >   --- building_view.xml 2001/10/07 04:48:08     1.4
> >   +++ building_view.xml 2001/10/19 05:51:09     1.5
> >   @@ -5,6 +5,8 @@
> >        <author>Craig R. McClanahan</author>
> >        <author>Mike Schachter</author>
> >        <author>Ted Husted</author>
> >   +    <author>Martin Cooper</author>
> >   +    <author>Ed Burns</author>
> >        <title>The Struts User's Guide - Building View Components</title>
> >      </properties>
> >
> >   @@ -78,6 +80,13 @@
> >          </ul>
> >
> >          <p>
> >   +        Please note that the i18n support in Struts is currently
limited to the
> >   +        <b>presentation</b> of internationalized information to the
user.
> >   +        Support for various Locale specific <b>input methods</b> is
left up
> >   +        to the client device, which is usually a web browser.
> >   +      </p>
> >   +
> >   +      <p>
> >            For an internationalized application, follow the steps
described in
> >            the Internationalization document in the JDK documentation
bundle for your
> >            platform to create a properties file containing the messages
for each
> >   @@ -279,6 +288,8 @@
> >                  <code>&lt;form&gt;</code> element, based on the
specified attributes.
> >                  It also associates all of the fields within this form
with a session
> >                  scoped FormBean that is stored under the key
<code>logonForm</code>.
> >   +              The Struts developer provides the Java implementation
of this form
> >   +              bean, subclassing the Struts class
<code>ActionForm</code>.
> >                  This bean is used to provide initial values for all of
the input
> >                  fields that have names matching the property names of
the bean.
> >                  If an appropriate bean is not found, a new one will be
created
> >
> >
> >
> >   1.6       +73 -43    jakarta-struts/doc/userGuide/introduction.xml
> >
> >   Index: introduction.xml
> >   ===================================================================
> >   RCS file: /home/cvs/jakarta-struts/doc/userGuide/introduction.xml,v
> >   retrieving revision 1.5
> >   retrieving revision 1.6
> >   diff -u -r1.5 -r1.6
> >   --- introduction.xml  2001/10/19 05:15:16     1.5
> >   +++ introduction.xml  2001/10/19 05:51:09     1.6
> >   @@ -6,6 +6,8 @@
> >        <author>Mike Schachter</author>
> >        <author>Larry McCay</author>
> >        <author>Ted Husted</author>
> >   +    <author>Martin Cooper</author>
> >   +    <author>Ed Burns</author>
> >        <title>The Struts User's Guide - Introduction</title>
> >      </properties>
> >
> >   @@ -16,6 +18,23 @@
> >          <section name="1.1 Preface: Forward into the Past! (or a brief
history of Struts)" href="preface">
> >
> >            <p>
> >   +          Before getting started, you should know the basics of the
following
> >   +          technologies:
> >   +        </p>
> >   +
> >   +     <ul>
> >   +       <li>The HTTP Request/Response sequence. The canonical source
for this
> >   +         is <a
href="http://www.ietf.org/rfc/rfc2616.txt?number=2616">RFC 2616
> >   +         - Hypertext Transfer Protocol (HTTP/1.1)</a>.</li>
> >   +       <li>Java Servlets. A good place to start is the
> >   +         <a
href="http://java.sun.com/products/servlet/technical.html#tutorials">
> >   +         servlet tutorials</a>.</li>
> >   +       <li>JavaServer Pages (JSP). Again, a good place to start is
the
> >   +         <a
href="http://java.sun.com/products/jsp/technical.html#tutorials">
> >   +         JSP tutorials</a>.</li>
> >   +     </ul>
> >   +
> >   +        <p>
> >              When Java servlets were first invented, many programmers
quickly realized that they were a
> >              Good Thing. They were faster and more powerful that
standard CGI, portable, and infinitely
> >              extensible.
> >   @@ -60,51 +79,59 @@
> >          <section name="1.2 The Model-View-Controller ('MVC') Design
Pattern" href="mvc">
> >
> >            <p>
> >   -          In the MVC design pattern, application flow is mediated by
a central Controller. The
> >   -          Controller delegates requests to an appropriate handler.
The handlers are tied to a Model,
> >   -          which act 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 an application
> >   -          significantly easier to create and maintain.
> >   -        </p>
> >   -
> >   +          In the MVC 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 an
> >   +          application significantly easier to create and maintain.
> >   +        </p>
> >   +
> >          </section>
> >
> >
> >          <section name="1.3 Struts Framework Overview" href="overview">
> >
> >   -         <p>
> >   -           True to the Model-View-Controller design pattern, Struts
applications have three
> >   -          major components: a servlet controller, JavaServer pages
(the "view"), and the
> >   -          application's business logic (or the "model"). Let's step
through how this all
> >   -          fits together.</p>
> >   -         <p>
> >   -           The controller bundles and routes HTTP requests to other
objects in the framework,
> >   -          including JavaServer Pages. When initialized, the
controller parses a configuration
> >   -          resource file. The configuration resource defines (among
other things) the action
> >   -          mappings for the application. The controller uses these
mappings to turn HTTP
> >   -          requests into application actions.
> >   +        <p>
> >   +          True to the Model-View-Controller design pattern, Struts
applications have three
> >   +          major components: a servlet controller, which is provided
by Struts itself,
> >   +          JSP pages (the "view"), and the application's business
logic (or the
> >   +          "model"). Let's step through how this all fits together.
> >   +        </p>
> >   +
> >   +        <p>
> >   +          The Struts controller servlet bundles and routes HTTP
requests to other
> >   +          objects in the framework, including JavaServer Pages and
> >   +          <code>org.apache.struts.action.Action</code> subclasses
provided by the
> >   +          Struts developer. When initialized, the controller parses a
configuration
> >   +          resource file. The configuration resource defines (among
other things)
> >   +          the action mappings for the application. The controller
uses these
> >   +          mappings to turn HTTP requests into application actions.
> >            </p>
> >
> >            <p>
> >              At a minimum, a mapping must specify (1) a request path and
(2) the object
> >   -          type to act upon the request. The action object can handle
the request and respond
> >   +          type to act upon the request. The Action object can handle
the request and respond
> >              to the client (usually a Web browser), or indicate that
control should be forwarded
> >              to another action. For example, if a login succeeds, a
loginAction object may wish
> >              to forward control to a mainMenu action.
> >            </p>
> >
> >            <p>
> >   -          Action objects are linked to the application's controller,
and so have access
> >   -          to that servlet's methods. When forwarding control, an
object can indirectly
> >   +          Action objects have access to the application's controller
servlet, and so have access
> >   +          to that servlet's methods. When forwarding control, an
Action object can indirectly
> >              forward one or more shared objects, including JavaBeans, by
placing them in one
> >              of the standard collections shared by Java servlets.
> >            </p>
> >
> >            <p>
> >   -          An action object can create a shopping cart bean, add an
item to the
> >   +          An Action object can create a shopping cart bean, add an
item to the
> >              cart, place the bean in the session collection, and then
forward control to
> >              another action -- that may use a JSP to display the
contents of the user's cart.
> >              Since each client has their own session, they will each
also have their own
> >   @@ -115,34 +142,37 @@
> >            <p>
> >              JavaBeans can also be used to manage input forms. A key
problem in designing
> >              Web applications is retaining and validating what a user
has entered between
> >   -          requests. With Struts, you can easily store the data for a
input form in a form
> >   -          bean. The bean is saved in one of the standard, shared
context collections,
> >   -          so that it can be used by other objects, especially the
action object.
> >   +          requests. With Struts, you can define your own set of form
bean classes, by
> >   +          subclassing
<code>org.apache.struts.action.ActionForm</code>, and easily store
> >   +          the data for an input form in these form beans. The bean is
saved in one of the
> >   +          standard, shared context collections, so that it can be
used by other objects,
> >   +          especially the Action object.
> >            </p>
> >
> >            <p>
> >              The form bean can be used by a JSP to collect data from the
user ... by an
> >   -          action object to validate the user-entered data ... and
then by the JSP again to
> >   +          Action object to validate the user-entered data ... and
then by the JSP again to
> >              re-populate the form fields. In the case of validation
errors, Struts has a
> >              shared mechanism for raising and displaying error messages.
> >            </p>
> >
> >            <p>
> >   -          A Struts form bean is defined in the configuration resource
and linked to an action
> >   -          mapping using a common property name. When a request calls
for an action that uses
> >   -          a form bean, the controller servlet either retrieves or
creates the form bean, and
> >   -          passes it to the action object. The action object can then
check the contents of
> >   -          the form bean before its input form is displayed, and also
queue messages to be
> >   -          handled by the form. When ready, the action object can
return control with a
> >   -          forwarding to its input form, usually a JSP. The controller
can then respond to
> >   -          the HTTP request and direct the client to the Java Server
Page.
> >   +          A Struts form bean is declared in the configuration
resource, defined in a Java
> >   +          source file, and linked to an action mapping using a common
property name. When
> >   +          a request calls for an action that uses a form bean, the
controller servlet
> >   +          either retrieves or creates the form bean, and passes it to
the Action object.
> >   +          The action object can then check the contents of the form
bean before its input
> >   +          form is displayed, and also queue messages to be handled by
the form. When
> >   +          ready, the Action object can return control with a
forwarding to its input
> >   +          form, usually a JSP. The controller can then respond to the
HTTP request and
> >   +          direct the client to the Java Server Page.
> >            </p>
> >
> >            <p>
> >              The Struts framework includes custom tags that can
automatically populate
> >              fields from a form bean. The only thing most JavaServer
Pages need to know
> >              about the rest of the framework is the proper field names
and where to submit
> >   -          the form. Components like the messages set by the action
object can be output
> >   +          the form. Components like the messages set by the Action
object can be output
> >              using a single custom tag. Other application-specific tags
can also be defined
> >              to hide implementation details from the JSPs.
> >            </p>
> >   @@ -162,11 +192,11 @@
> >            </p>
> >
> >            <p>
> >   -          For the simplest applications, an action object can handle
the business logic
> >   -          associated with a request. However, in most cases, an
action object should pass
> >   +          For the simplest applications, an Action object can handle
the business logic
> >   +          associated with a request. However, in most cases, an
Action object should pass
> >              the request to another object, usually a JavaBean. To allow
reuse on other
> >              platforms, business-logic JavaBeans should not refer to any
Web application
> >   -          objects. The action object should translate needed details
from the HTTP request
> >   +          objects. The Action object should translate needed details
from the HTTP request
> >              and pass those along to the business-logic beans as regular
Java variables.
> >            </p>
> >
> >   @@ -214,8 +244,8 @@
> >          </p>
> >
> >          <p>
> >   -        Large-scale applications will often represent the business
logic actions
> >   -        that are possible in a system as methods that can be called
on the beans
> >   +        Large-scale applications will often represent the set of
possible
> >   +        business logic actions as methods that can be called on the
beans
> >            maintaining the state information.  For example, you might
have a shopping
> >            cart bean, stored in session scope for each current user,
with properties
> >            that represent the current set of items that the user has
decided to
> >
> >
> >
>
> -- Ted Husted, Husted dot Com, Fairport NY USA.
> -- Custom Software ~ Technical Services.
> -- Tel +1 716 737-3463
> -- http://www.husted.com/struts/
>
> --
> To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>
>



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: cvs commit: jakarta-struts/doc/userGuide building_controller.xml building_model.xml building_view.xml introduction.xml

Posted by Ted Husted <hu...@apache.org>.
  +      <p>
  +        For every &lt;form-bean&gt; tag in your
<code>struts-config.xml</code>
  +        file, you must have a corresponding Java class. The same
holds true for
  +        each &lt;action-mapping&gt; tag.
  +      </p>
  +

Is this accurate? What something like:

    <action 
        path="/Menu"
        forward="/pages/article/Menu.jsp">
    </action>


>          <p>
>   +        Please note that the i18n support in Struts is currently limited to the
>   +        <b>presentation</b> of internationalized information to the user.
>   +        Support for various Locale specific <b>input methods</b> is left up
>   +        to the client device, which is usually a web browser.
>   +      </p>
>   +

What sort of input methods are we talking about here?

Does "currently" imply that these might be supported by Struts in the
near future.

The other changes look great ;-)

-Ted.


martinc@apache.org wrote:
> 
> martinc     01/10/18 22:51:09
> 
>   Modified:    doc/userGuide building_controller.xml building_model.xml
>                         building_view.xml introduction.xml
>   Log:
>   Applied some documentation changes suggested by Ed Burns, along with some
>   general corrections, and some corrections to the proposed changes.
> 
>   PR: 4140
>   Submitted by: Ed Burns
> 
>   Revision  Changes    Path
>   1.6       +17 -5     jakarta-struts/doc/userGuide/building_controller.xml
> 
>   Index: building_controller.xml
>   ===================================================================
>   RCS file: /home/cvs/jakarta-struts/doc/userGuide/building_controller.xml,v
>   retrieving revision 1.5
>   retrieving revision 1.6
>   diff -u -r1.5 -r1.6
>   --- building_controller.xml   2001/10/07 04:48:08     1.5
>   +++ building_controller.xml   2001/10/19 05:51:09     1.6
>   @@ -5,6 +5,8 @@
>        <author>Craig R. McClanahan</author>
>        <author>Mike Schachter</author>
>        <author>Ted Husted</author>
>   +    <author>Martin Cooper</author>
>   +    <author>Ed Burns</author>
>        <title>The Struts User's Guide - Building Controller Components</title>
>      </properties>
> 
>   @@ -29,7 +31,8 @@
>               extension of the <code>ActionMapping</code> class) that defines the class
>               names and other information associated with each possible mapping.</li>
>            <li>Write the action mapping configuration file (in XML) that is used
>   -            to configure the controller servlet.</li>
>   +            to configure the controller servlet. This file is usually named
>   +            <code>struts-config.xml</code>.</li>
>            <li>Update the web application deployment descriptor file (in XML)
>                for your application to include the necessary Struts components.</li>
>            <li>Add the appropriate Struts components to your application.</li>
>   @@ -206,11 +209,13 @@
>                for each form bean, which has the following important attributes:
>                <ul>
>                  <li>
>   -                <b>name</b>: The name of the request or session level attribute that this form
>   -                bean will be stored as
>   +                <b>name</b>: A unique identifier for this bean, which will be used
>   +                to reference it in corresponding action mappings. Usually, this
>   +                is also the name of the request or session attribute under which
>   +                this form bean will be stored.
>                  </li>
>                  <li>
>   -                <b>type</b>: The fully-qualified Java classname of your form bean
>   +                <b>type</b>: The fully-qualified Java classname of your form bean.
>                  </li>
>                </ul>
>            </blockquote>
>   @@ -235,6 +240,13 @@
> 
>          </p>
> 
>   +
>   +      <p>
>   +        For every &lt;form-bean&gt; tag in your <code>struts-config.xml</code>
>   +        file, you must have a corresponding Java class. The same holds true for
>   +        each &lt;action-mapping&gt; tag.
>   +      </p>
>   +
>          <p>
>            The <code>struts-config.xml</code> file from the example application includes
>            the following mapping entry for the "log on" function, which we will use
>   @@ -623,7 +635,7 @@
>             <code>WEB-INF/lib</code> directory.
>            </p>
>                                    <p>
>   -                                        Next: <a href="resources.html">Resources</a>
>   +                                        Next: <a href="resources.html">Struts Resources</a>
>                                    </p>
>          </section>
>        </section>
> 
> 
> 
>   1.3       +16 -11    jakarta-struts/doc/userGuide/building_model.xml
> 
>   Index: building_model.xml
>   ===================================================================
>   RCS file: /home/cvs/jakarta-struts/doc/userGuide/building_model.xml,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- building_model.xml        2001/10/07 04:48:08     1.2
>   +++ building_model.xml        2001/10/19 05:51:09     1.3
>   @@ -5,6 +5,8 @@
>        <author>Craig R. McClanahan</author>
>        <author>Mike Schachter</author>
>        <author>Ted Husted</author>
>   +    <author>Martin Cooper</author>
>   +    <author>Ed Burns</author>
>        <title>The Struts User's Guide - Building Model Components</title>
>      </properties>
> 
>   @@ -14,16 +16,18 @@
>          <section name="2.1 Overview" href="overview">
> 
>            <p>
>   -          The application requirements document that you are using will likely
>   -        have focused on the user interface to be created.  However, you should ensure
>   -        that the processing required for each submitted request is also clearly
>   -        defined.  In general, the developer of the <i>Model</i> components will be
>   -        focusing on the creation of JavaBeans classes that support all of the
>   -        functional requirements.  The precise nature of the beans required by a
>   -        particular application will vary widely depending on those requirements,
>   -        but they can generally be classified into several categories discussed
>   -        below.  However, a brief review of the concept of "scope" as it relates
>   -        to beans is useful first.
>   +        Many requirements documents used for building web applications
>   +        focus on the <i>View</i>.  However, you should ensure that the
>   +        processing required for each submitted request is also clearly
>   +        defined from the <i>Model's</i> perspective.  In general, the
>   +        developer of the <i>Model</i> components will be focusing on
>   +        the creation of JavaBeans classes that support all of the
>   +        functional requirements.  The precise nature of the beans
>   +        required by a particular application will vary widely
>   +        depending on those requirements, but they can generally be
>   +        classified into several categories discussed below.  However,
>   +        a brief review of the concept of "scope" as it relates to
>   +        beans and JSP is useful first.
>          </p>
>        </section>
> 
>   @@ -84,7 +88,8 @@
>            The Struts framework generally assumes that you have created an
>            <code>ActionForm</code> bean (that is, a Java class extending the
>            <code>ActionForm</code> class) for each input form required in your
>   -        application.  If you define such beans in your <code>ActionMapping</code>
>   +        application. <code>ActionForm</code> beans are sometimes just called
>   +        "form beans". If you declare such beans in your <code>ActionMapping</code>
>            configuration file (see "<a href="building_controller.html#config">
>            Building the Controller Components</a>"), the Struts  controller servlet
>            will automatically perform the following services for you, before
> 
> 
> 
>   1.5       +11 -0     jakarta-struts/doc/userGuide/building_view.xml
> 
>   Index: building_view.xml
>   ===================================================================
>   RCS file: /home/cvs/jakarta-struts/doc/userGuide/building_view.xml,v
>   retrieving revision 1.4
>   retrieving revision 1.5
>   diff -u -r1.4 -r1.5
>   --- building_view.xml 2001/10/07 04:48:08     1.4
>   +++ building_view.xml 2001/10/19 05:51:09     1.5
>   @@ -5,6 +5,8 @@
>        <author>Craig R. McClanahan</author>
>        <author>Mike Schachter</author>
>        <author>Ted Husted</author>
>   +    <author>Martin Cooper</author>
>   +    <author>Ed Burns</author>
>        <title>The Struts User's Guide - Building View Components</title>
>      </properties>
> 
>   @@ -78,6 +80,13 @@
>          </ul>
> 
>          <p>
>   +        Please note that the i18n support in Struts is currently limited to the
>   +        <b>presentation</b> of internationalized information to the user.
>   +        Support for various Locale specific <b>input methods</b> is left up
>   +        to the client device, which is usually a web browser.
>   +      </p>
>   +
>   +      <p>
>            For an internationalized application, follow the steps described in
>            the Internationalization document in the JDK documentation bundle for your
>            platform to create a properties file containing the messages for each
>   @@ -279,6 +288,8 @@
>                  <code>&lt;form&gt;</code> element, based on the specified attributes.
>                  It also associates all of the fields within this form with a session
>                  scoped FormBean that is stored under the key <code>logonForm</code>.
>   +              The Struts developer provides the Java implementation of this form
>   +              bean, subclassing the Struts class <code>ActionForm</code>.
>                  This bean is used to provide initial values for all of the input
>                  fields that have names matching the property names of the bean.
>                  If an appropriate bean is not found, a new one will be created
> 
> 
> 
>   1.6       +73 -43    jakarta-struts/doc/userGuide/introduction.xml
> 
>   Index: introduction.xml
>   ===================================================================
>   RCS file: /home/cvs/jakarta-struts/doc/userGuide/introduction.xml,v
>   retrieving revision 1.5
>   retrieving revision 1.6
>   diff -u -r1.5 -r1.6
>   --- introduction.xml  2001/10/19 05:15:16     1.5
>   +++ introduction.xml  2001/10/19 05:51:09     1.6
>   @@ -6,6 +6,8 @@
>        <author>Mike Schachter</author>
>        <author>Larry McCay</author>
>        <author>Ted Husted</author>
>   +    <author>Martin Cooper</author>
>   +    <author>Ed Burns</author>
>        <title>The Struts User's Guide - Introduction</title>
>      </properties>
> 
>   @@ -16,6 +18,23 @@
>          <section name="1.1 Preface: Forward into the Past! (or a brief history of Struts)" href="preface">
> 
>            <p>
>   +          Before getting started, you should know the basics of the following
>   +          technologies:
>   +        </p>
>   +
>   +     <ul>
>   +       <li>The HTTP Request/Response sequence. The canonical source for this
>   +         is <a href="http://www.ietf.org/rfc/rfc2616.txt?number=2616">RFC 2616
>   +         - Hypertext Transfer Protocol (HTTP/1.1)</a>.</li>
>   +       <li>Java Servlets. A good place to start is the
>   +         <a href="http://java.sun.com/products/servlet/technical.html#tutorials">
>   +         servlet tutorials</a>.</li>
>   +       <li>JavaServer Pages (JSP). Again, a good place to start is the
>   +         <a href="http://java.sun.com/products/jsp/technical.html#tutorials">
>   +         JSP tutorials</a>.</li>
>   +     </ul>
>   +
>   +        <p>
>              When Java servlets were first invented, many programmers quickly realized that they were a
>              Good Thing. They were faster and more powerful that standard CGI, portable, and infinitely
>              extensible.
>   @@ -60,51 +79,59 @@
>          <section name="1.2 The Model-View-Controller ('MVC') Design Pattern" href="mvc">
> 
>            <p>
>   -          In the MVC design pattern, application flow is mediated by a central Controller. The
>   -          Controller delegates requests to an appropriate handler. The handlers are tied to a Model,
>   -          which act 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 an application
>   -          significantly easier to create and maintain.
>   -        </p>
>   -
>   +          In the MVC 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 an
>   +          application significantly easier to create and maintain.
>   +        </p>
>   +
>          </section>
> 
> 
>          <section name="1.3 Struts Framework Overview" href="overview">
> 
>   -         <p>
>   -           True to the Model-View-Controller design pattern, Struts applications have three
>   -          major components: a servlet controller, JavaServer pages (the "view"), and the
>   -          application's business logic (or the "model"). Let's step through how this all
>   -          fits together.</p>
>   -         <p>
>   -           The controller bundles and routes HTTP requests to other objects in the framework,
>   -          including JavaServer Pages. When initialized, the controller parses a configuration
>   -          resource file. The configuration resource defines (among other things) the action
>   -          mappings for the application. The controller uses these mappings to turn HTTP
>   -          requests into application actions.
>   +        <p>
>   +          True to the Model-View-Controller design pattern, Struts applications have three
>   +          major components: a servlet controller, which is provided by Struts itself,
>   +          JSP pages (the "view"), and the application's business logic (or the
>   +          "model"). Let's step through how this all fits together.
>   +        </p>
>   +
>   +        <p>
>   +          The Struts controller servlet bundles and routes HTTP requests to other
>   +          objects in the framework, including JavaServer Pages and
>   +          <code>org.apache.struts.action.Action</code> subclasses provided by the
>   +          Struts developer. When initialized, the controller parses a configuration
>   +          resource file. The configuration resource defines (among other things)
>   +          the action mappings for the application. The controller uses these
>   +          mappings to turn HTTP requests into application actions.
>            </p>
> 
>            <p>
>              At a minimum, a mapping must specify (1) a request path and (2) the object
>   -          type to act upon the request. The action object can handle the request and respond
>   +          type to act upon the request. The Action object can handle the request and respond
>              to the client (usually a Web browser), or indicate that control should be forwarded
>              to another action. For example, if a login succeeds, a loginAction object may wish
>              to forward control to a mainMenu action.
>            </p>
> 
>            <p>
>   -          Action objects are linked to the application's controller, and so have access
>   -          to that servlet's methods. When forwarding control, an object can indirectly
>   +          Action objects have access to the application's controller servlet, and so have access
>   +          to that servlet's methods. When forwarding control, an Action object can indirectly
>              forward one or more shared objects, including JavaBeans, by placing them in one
>              of the standard collections shared by Java servlets.
>            </p>
> 
>            <p>
>   -          An action object can create a shopping cart bean, add an item to the
>   +          An Action object can create a shopping cart bean, add an item to the
>              cart, place the bean in the session collection, and then forward control to
>              another action -- that may use a JSP to display the contents of the user's cart.
>              Since each client has their own session, they will each also have their own
>   @@ -115,34 +142,37 @@
>            <p>
>              JavaBeans can also be used to manage input forms. A key problem in designing
>              Web applications is retaining and validating what a user has entered between
>   -          requests. With Struts, you can easily store the data for a input form in a form
>   -          bean. The bean is saved in one of the standard, shared context collections,
>   -          so that it can be used by other objects, especially the action object.
>   +          requests. With Struts, you can define your own set of form bean classes, by
>   +          subclassing <code>org.apache.struts.action.ActionForm</code>, and easily store
>   +          the data for an input form in these form beans. The bean is saved in one of the
>   +          standard, shared context collections, so that it can be used by other objects,
>   +          especially the Action object.
>            </p>
> 
>            <p>
>              The form bean can be used by a JSP to collect data from the user ... by an
>   -          action object to validate the user-entered data ... and then by the JSP again to
>   +          Action object to validate the user-entered data ... and then by the JSP again to
>              re-populate the form fields. In the case of validation errors, Struts has a
>              shared mechanism for raising and displaying error messages.
>            </p>
> 
>            <p>
>   -          A Struts form bean is defined in the configuration resource and linked to an action
>   -          mapping using a common property name. When a request calls for an action that uses
>   -          a form bean, the controller servlet either retrieves or creates the form bean, and
>   -          passes it to the action object. The action object can then check the contents of
>   -          the form bean before its input form is displayed, and also queue messages to be
>   -          handled by the form. When ready, the action object can return control with a
>   -          forwarding to its input form, usually a JSP. The controller can then respond to
>   -          the HTTP request and direct the client to the Java Server Page.
>   +          A Struts form bean is declared in the configuration resource, defined in a Java
>   +          source file, and linked to an action mapping using a common property name. When
>   +          a request calls for an action that uses a form bean, the controller servlet
>   +          either retrieves or creates the form bean, and passes it to the Action object.
>   +          The action object can then check the contents of the form bean before its input
>   +          form is displayed, and also queue messages to be handled by the form. When
>   +          ready, the Action object can return control with a forwarding to its input
>   +          form, usually a JSP. The controller can then respond to the HTTP request and
>   +          direct the client to the Java Server Page.
>            </p>
> 
>            <p>
>              The Struts framework includes custom tags that can automatically populate
>              fields from a form bean. The only thing most JavaServer Pages need to know
>              about the rest of the framework is the proper field names and where to submit
>   -          the form. Components like the messages set by the action object can be output
>   +          the form. Components like the messages set by the Action object can be output
>              using a single custom tag. Other application-specific tags can also be defined
>              to hide implementation details from the JSPs.
>            </p>
>   @@ -162,11 +192,11 @@
>            </p>
> 
>            <p>
>   -          For the simplest applications, an action object can handle the business logic
>   -          associated with a request. However, in most cases, an action object should pass
>   +          For the simplest applications, an Action object can handle the business logic
>   +          associated with a request. However, in most cases, an Action object should pass
>              the request to another object, usually a JavaBean. To allow reuse on other
>              platforms, business-logic JavaBeans should not refer to any Web application
>   -          objects. The action object should translate needed details from the HTTP request
>   +          objects. The Action object should translate needed details from the HTTP request
>              and pass those along to the business-logic beans as regular Java variables.
>            </p>
> 
>   @@ -214,8 +244,8 @@
>          </p>
> 
>          <p>
>   -        Large-scale applications will often represent the business logic actions
>   -        that are possible in a system as methods that can be called on the beans
>   +        Large-scale applications will often represent the set of possible
>   +        business logic actions as methods that can be called on the beans
>            maintaining the state information.  For example, you might have a shopping
>            cart bean, stored in session scope for each current user, with properties
>            that represent the current set of items that the user has decided to
> 
> 
> 

-- Ted Husted, Husted dot Com, Fairport NY USA.
-- Custom Software ~ Technical Services.
-- Tel +1 716 737-3463
-- http://www.husted.com/struts/

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>