You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Next »

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 needed 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, and so each Interceptor has a unique class name. To make it easier to reference Interceptors, each class can be registered with the framework and given a simpler name.

Registering Interceptors
<interceptors>
  <interceptor name="security" class="com.mycompany.security.SecurityInterceptor"/>
  <interceptor-stack name="secureStack">
    <interceptor-ref name="security"/>
    <interceptor-ref name="defaultStack"/>
  </interceptor-stack>
</interceptors>

(tick) 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,

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

but each action can also define it's own local stack.

A local Interceptor Stack
<action name="VelocityCounter" class="com.opensymphony.webwork.example.counter.SimpleCounter">
   <result name="success">...</result>
   <interceptor-ref name="defaultComponentStack"/>
</action>

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

(lightbulb) For more, see Interceptors.

  • No labels