Home > Guides > Core Developers Guide > Configuration Elements > Interceptor Configuration |

Apache Struts 2 Documentation
Interceptor Configuration
Edit Page Browse Space Add Page Add News

Interceptors allow you to define code to be executed before and/or after the execution of an Action method. (The "Filter" pattern.) Interceptors can be a powerful tool when developing applications. There are many, many use cases for Interceptors, including validation, property population, security, logging, and profiling.

Validation | Examine input for correctness
Property Population | Transfer and convert input to object properties
Logging | Journal details regarding each action
Profiling | Time action throughput, looking for performance bottlenecks

Interceptors can be chained together to create an Interceptor "Stack". If an action neeeds to check the client's credentials, log the action, and time the action, all of these routines, and more, could be made part of the same Interceptor Stack.

Interceptors are implemented as Java classes, so each Interceptor has a class name. To make it easier to reference Interceptors, each class can be registered with the framework and given a unique, simpler name.

Registering Interceptors

Individual Interceptors and Interceptors Stacks can be "mixed and matched" in any order when defining an Interceptor Stack.

The framework will invoke each Interceptor on the stack in the order it is defined.

Most applications will define a default Interceptor Stack, such as

`<default-interceptor-ref name="secureStack"/>`

but any action may also define its own local stack.

A local Interceptor Stack

The default configuration (`struts-default.xml`) sets up a default Interceptor Stack that will work well for most applications.

For more, see Interceptors.