In between coping with a crashed server on my local network, I've
started to make the "final" round of changes on the new website.

I'll be committing these as I go along, but I thought it appropriate
to post the reworked text for the Site and Core homepages directly to
the list. We had talked about the project's goal in terms of a
particular technology ("Struts Classic"). In this version, the
underlying "Model 2" goal bubbles up to the first sentance. From day
one, the idea that Struts exists to promote Model 2 application
architectures has always been there, we've just never put that
sentence front and center before.

----

Welcome to Apache Struts!

The goal of the Apache Struts project is to encourage application
architectures based on the "Model 2" approach, a variation of the
classic Model-View-Controller (MVC) design paradigm. Under Model 2, a
servlet manages business logic execution, and presentation logic
resides mainly in server pages.

The Apache Struts project encourages Model 2 designs in two ways.
First, by providing open source frameworks and toolkits that help
developers build applications for the web. Second, by providing
friendly and honest mailing lists where both newcomers and veterans
can discuss how to use Struts software in their own Model 2
applications.

Originally, the Apache Struts software was distributed as one
monolithic bundle. Today, the Struts project is comprised of several
subprojects. Each subproject has its own website, documentation, and
release cycle, and may be downloaded separately. The six original
Apache Struts subprojects -- Core, Taglibs, Tiles, Extras,
Applications, and EL -- are also being bundled into a distribution
known as "Struts Classic".

Apache Struts is a volunteer project and all support for the framework
is provided by unpaid volunteers. This documentation bundle and the
mailing lists are the primary ways to learn how to use Struts. The
next few pages are devoted to helping you understand what resources
are available to you. Since Apache Struts is a volunteer project, and
our resources are limited, it is important that we first help you help
yourself.

Struts is a project of the The Apache Software Foundation. The
official Apache Struts home page is at http://struts.apache.org/.

----

The rest of the Welcome page text now lives under Struts Core: 

----

Welcome to Struts Core

Struts Core provides the invisible underpinnings every professional
web application needs to survive. Struts Core is a flexible control
layer based on standard technologies like Java Servlets, JavaBeans,
ResourceBundles, and XML, as well as various Jakarta Commons packages.
Core helps you create an extensible development environment for your
application, based on published standards and proven design patterns.

Struts Core provides its own Controller component and integrates with
other technologies to provide the Model and the View. For the Model,
Core can interact with standard data access technologies, like JDBC
and EJB, as well as most any third-party packages, like Hibernate,
iBATIS, or Object Relational Bridge. For the View, Core works well
with JavaServer Pages, including JSTL and JSF, as well as Velocity
Templates, XSLT, and other presentation systems.

Struts Core in a Nutshell

A web application uses a deployment descriptor to initialize resources
like servlets and taglibs. The deployment descriptor is formatted as a
XML document and named "web.xml". Likewise, Core uses a configuration
file to initialize its own resources. These resources include
ActionForms to collect input from users, ActionMappings to direct
input to server-side Actions, and ActionForwards to select output
pages.

Here's a simple Struts configuration (struts-config.xml) for a login workflow:

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd";>
    <struts-config>
        <form-beans>
            <form-bean
                name="logonForm"
                type="app.LogonForm"/>
        </form-beans>
        <action-mappings>
            <action
                path="/Welcome"
                forward="/pages/Welcome.jsp"/>
            <action
                path="/Logon"
                forward="/pages/Logon.jsp"/>
            <action
                path="/LogonSubmit"
                type="app.LogonAction"
                name="logonForm"
                scope="request"
                validate="true"
                input="/pages/Logon.jsp">
                <forward
                    name="success"
                    path="/pages/Welcome.jsp"/>
                <forward
                    name="failure"
                    path="/pages/Logon.jsp"/>
            </action>
            <action
                path="/Logoff"
                type="app.LogoffAction">
                <forward
                    name="success"
                    path="/pages/Logoff.jsp"/>
            </action>
        </action-mappings>
        <message-resources parameter="resources.application"/>
    </struts-config>
    
There are several other resources you can specify in Struts
configuration files. You can specify validations for the ActionForms
in an XML descriptor, using the Struts Validator. A standard
extension, Tiles, helps you build pages from smaller fragments.

Struts Core is an extensible framework. Every class deployed by Core
can be replaced by your own default class. The properties of your
default class can be set using the Digester's set-property feature.
This is one reason why there are so many contributor extensions for
Struts Core. Core provides a base framework, but you can still write
your application your way.

For more about Struts and its underlying technologies, see the User
Guide and the Developer Guides.

Is Struts Core the best choice for every project?

No. If you need to write a very simple application, with a handful of
pages, then you might consider a "Model 1" solution that uses only
server pages.

But, if you are writing a more complicated application, with dozens of
pages, that need to be maintained over time, then Struts can help. For
more about whether Model 1 or or MVC/Model 2 is right for you, see
Understanding JavaServer Pages Model 2 architecture and Issues in
Struts Adoption.

What about JSTL and JavaServer Faces?

Next: Struts Core User Guide 

----

I really must commend Wendy and James for the excellent work on the
new Struts build. It's working well, and I'm having fun with it. :)

-Ted.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to