Welcome to Struts Config
Struts Config provides the invisible underpinnings every professional
web application needs to survive. Struts Config is a flexible control
layer based on standard technologies like Java Servlets, JavaBeans,
ResourceBundles, and XML, as well as various Jakarta Commons
packages.
Config helps you create an extensible development environment for
your
application, based on published standards and proven design patterns.
Struts Config provides its own Controller component and integrates
with
other technologies to provide the Model and the View. For the Model,
Config 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, Config works well
with JavaServer Pages, including JSTL and JSF, as well as Velocity
Templates, XSLT, and other presentation systems.
Struts Config 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, Config 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 Config
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 Config is an extensible framework. Every class deployed by
Config
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 Config . Config 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 Config 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 Config
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 Config User Guide