Home > Guides |

Apache Struts 2 Documentation
Guides
Edit Page Browse Space Add Page Add News

Our in-depth guides focus on specific areas of the framework, such as Views, the Core framework, and Third-party Extensions.

Icon

We started work on a new User Guide, that should simplify learning process. Please feel free to contribute!

## Core Developers Guide

Struts 2 processes requests using three core types: interceptors, actions, and results. Each may be configured via XML or annotations.

Tutorials - Read me first! Developing Applications with Struts 2 Nutshell AJAX Dependency Injection Profiling Debugging Development Mode Configuration Configuration by Convention Annotations Configuration Elements Actions, Wildcard Mappings, Beans, Constants Exceptions, Includes, Interceptors Namespaces, Packages, Results Unknown Handlers, Dispatcher Configuration Files web.xml struts.xml struts.properties struts-default.xml velocity.properties struts-default.vm Application Servers Performance Tuning Security | Testing Actions (arsenalist) (rosa) Interceptors Writing Interceptors Excluding Parameters Actions Model Driven Action Chaining ActionEventListener Results Result Types DispatcherListener PreResultListener Validation Localization Formatting Dates and Numbers Type Conversion Static Content Portlets Tutorial Configuration/Documentation Logging FAQs Struts 2 Maven Archetypes Cookbook Javadoc APIs

## Tag Developers Guide

The framework offers a flexible view layer that supports multiple view technologies, including JSP, FreeMaker, and Velocity.

Struts Tags Generic Tags UI Tags Themes and Templates Tag Reference Ajax Tags Ajax and JavaScript Recipes OGNL Tag Syntax Alt Syntax | JSP specific tags FreeMarker specific tags Velocity specific tags

## Plugin Developers Guide

Apache Struts 2 provides a simple plugin architecture so that developers can extend the framework just by adding a JAR to the application's classpath. Since plugins are contained in a JAR, they are easy to share with others. Several plugins are bundled with the framework, and others are available from third-party sources.

- Plugins
- Extending an Application with Custom Plugins

### Bundled Plugins

CDI (JSR 299) Plugin (2.3.1+) Codebehind Plugin (deprecated) Config Browser Plugin Convention Plugin (2.1.3+) DWR Plugin Embedded JSP Plugin (2.1.7+) JasperReports Plugin Javatemplates Plugin (2.1.3+) JFreeChart Plugin JSF Plugin JSON Plugin (2.1.7+) JUnit Plugin | OVal Plugin (2.1.7+) OSGi Plugin (2.1.7+) Plexus Plugin Portlet Plugin Portlet Tiles Plugin (2.3.5+) REST Plugin (2.1.1+) SiteGraph Plugin Sitemesh Plugin Spring Plugin Struts 1 Plugin TestNG Plugin Tiles 2 Plugin Tiles 3 Plugin

For a complete list of bundled and third-party plugins, visit the Plugin Registry..

## Architects Guide

- Big Picture
  - ObjectFactory
  - ActionMapper
  - Action Proxy & ActionProxy Factory
  - Configuration Provider & Configuration

## Migration Guide

Getting here from there.

### Version Notes 2.3.x

- Version Notes 2.3.17
- Version Notes 2.3.16.1
- Version Notes 2.3.16
- Version Notes 2.3.15.3
- Version Notes 2.3.15.2
- Version Notes 2.3.15.1
- Version Notes 2.3.15
- Version Notes 2.3.14.3
- Version Notes 2.3.14.2
- Version Notes 2.3.14.1
- Version Notes 2.3.14
- Version Notes 2.3.12.0
- Version Notes 2.3.8
- Version Notes 2.3.7
- Version Notes 2.3.4.1
- Version Notes 2.3.4
- Version Notes 2.3.3
- Version Notes 2.3.1.2
- Version Notes 2.3.1.1
- Version Notes 2.3.1

### Version Notes 2.2.x

- Version Notes 2.2.3.1
- Version Notes 2.2.3
- Version Notes 2.2.1.1
- Version Notes 2.2.1

### Version Notes 2.1.x

- Version Notes 2.1.8.1
- Version Notes 2.1.8
- Version Notes 2.1.6
- Version Notes 2.1.5
- Version Notes 2.1.4
- Version Notes 2.1.3
- Version Notes 2.1.2
- Version Notes 2.1.1
- Version Notes 2.1.0

### Release Notes 2.0.x

- Release Notes 2.0.14
- Release Notes 2.0.13
- Release Notes 2.0.12
- Release Notes 2.0.11.2
- Release Notes 2.0.11.1
- Release Notes 2.0.11
- Release Notes 2.0.10
- Release Notes 2.0.9
- Release Notes 2.0.8
- Release Notes 2.0.7
- Release Notes 2.0.6
- Release Notes 2.0.5
- Release Notes 2.0.4
- Release Notes 2.0.3
- Release Notes 2.0.2
- Release Notes 2.0.1
- Release Notes 2.0.0

### Struts 1 to Struts 2

Comparing Struts 1 and 2 | How are Struts 1 and Struts 2 alike? How are they different?
Struts 1 Solutions | Various issues (and hopefully their solutions!) encountered during migrations to Struts 2.
Migration Strategies | Steps and overall strategies for migrating Struts 1 applications to Struts 2.
Migration Tools | Development tools to help aid the migration process.

#### Tutorials

Migrating Applications to Struts 2 | A three-part series by Ian Roughley (Sep 2006)

#### Roadmap

Roadmap FAQ | What's in store for Struts 2?
A History of Struts 2 | Don Brown's summary of events

### Webwork 2.2 to Struts 2

Key Changes From WebWork 2 | What has been removed or changed from WebWork 2.2 to Struts 2
WebWork 2 Migration Strategies | Steps and overall strategies for migrating WebWork 2 applications to Struts 2.

## Contributors Guide

### Source

- Building the Framework from Source
  - Building with Maven
- Creating and Signing a Distribution
- Requirements and Use Cases - under construction
- Precise Error Reporting
- Obtaining an IDEA license
- How to Write Doc Comments for the Javadoc Tool (Sun)

### Documentation

- Editing the Documentation
- Documentation Colophon
- Documentation Style Guide

#### Core Guide TODOs

- Creating Resources
- Writing Validators
- Writing Type Converters
- Actions
- Writing Actions
- Writing Results

### Licensing and Copyright

- Third Party Licensing Policy RFC
- ASF Source Header and Copyright Notice Policy
- Author Tags

## Errata?

Icon

To suggest a change or a correction to any part of the documentation, log in and leave a comment on the appropriate page. We are always looking for help with the documentation!

## Next: FAQs

Children Show Children Hide Children
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)