Why Struts 2
The new version Struts 2.0 is a combination of the Sturts action framework and
Webwork. According to the Struts 2.0.1 release announcement, some key features are:
Design - Programming the abstract classes
instead of interfaces is one of design problem of struts1 framework that has
been resolved in the struts 2 framework. Most of the Struts 2 classes
are based on interfaces and most of its core interfaces are HTTP
independent. Struts 2 Action classes are
framework independent and are simplified to look as simple POJOs. Framework
components are tried to keep loosely coupled.
- Simplified Actions
- Actions are simple POJOs. Any java class with execute() method can
be used as an Action class. Even we don't need to implement interfaces
always. Inversion of Control is introduced while developing the action
classes. This make the actions to be neutral to the underlying framework .
- No more ActionForms -
ActionForms feature is no more known to the struts2 framework. Simple
JavaBean flavored actions are used to put properties directly. No need to
use all String properties.
- Simplified testability -
Struts 2 Actions are HTTP independent and framework neutral. This enables to
test struts applications very easily without resorting to mock objects.
Defaults - Most configuration elements have a default value which can
be set according to the need. Even there are xml-based default configuration
files that can be overridden according to the need.
- Improved results - Unlike ActionForwards, Struts 2 Results
flexibility to create multiple type of outputs and in actual it helps to
prepare the response.
- Better Tag
features - Struts 2 tags enables to add style sheet-driven markup
capabilities, so that we can create consistent pages with less code. Struts
2 tags are more capable and result oriented. Struts 2 tag markup can be
altered by changing an underlying stylesheet. Individual tag markup can be
changed by editing a FreeMarker template. Both JSP and FreeMarker tags are
- Annotations introduced :
Applications in struts 2 can use Java 5 annotations as an alternative to
XML and Java properties configuration.
Annotations minimize the use of xml.
Checkboxes - Struts 2 checkboxes do not require special handling for
- Many changes can be made on the fly without restarting a web container.
controller - Struts 1 lets to customize the request processor per
module, Struts 2 lets to customize the request handling per action, if
- Easy Spring
integration - Struts 2 Actions are Spring-aware. Just need to add
plugins - Struts 2 extensions can be added by dropping in a JAR. No
manual configuration is required!
support - The AJAX theme gives interactive applications a significant
The framework provides a set of
tags to help you ajaxify your applications, even on Dojo
- AJAX Client Side Validation
- Remote form submission support (works
with the submit tag as well)
- An advanced div template that provides
dynamic reloading of partial HTML
- An advanced template that provides the
- An AJAX-only tabbed Panel implementation
- A rich pub-sub event model
- Interactive auto complete tag