A
framework tries to automate the common tasks and provides a platform for the
users to build applications quickly.
Struts 2 is based on the OpenSymphony Web Works Framework.
Struts 2 framework implements the Model-View-Controller (MVC)
design pattern.
In Struts 2 the model, view and controller are implemented by
the action, result and FilterDispatcherrespectively.
The
controller's job is to map the user request to appropriate action.
In
Struts 2 FilterDispatcher does the job of Controller.
Model
contains the data and the business logic.
In
Struts 2 the model is implemented by the Action component.
View
is the presentation component of the MVC Pattern.
In
Struts 2 the view is commonly implemented using JSP, Velocity Template,
Freemaker or some other presentation-layer technology.
The
controller receives the user request and determine which Struts 2 action to
invoke.
The
framework creates an instance of this action and associate it with the newly
created instance of the ActionInvocation.
In
Struts 2 the invocation of action should pass through a series of interceptors
as defined in the application's XML file.
The
framework calls the ActionInvocations invoke() method to start the execution of
the action.
Each
time the invoke() method is called, ActionInvocation consults its state and
executes whichever interceptor comes next.
ActionInvocation
hands control over to the interceptor in the stack by calling the interceptors
intercept() method.
The
intercept() method of the interceptor inturn calls the invoke() method of the
ActionInvocation till all the interceptors are invoked, in the end the action
itself will be called and the corresponding result will be returned back to the
user.
Some
interceptor do work before the action is executed and some do work after the
action is executed. It's not necessary that it should do something each time it
is invoked.
These
interceptors are invoke both before and after the action.
First
all the interceptors are executed in the order they are defined in the stack.
Then
the action is invoked and the result is generated.
Again
all the interceptors present in the stack are invoked in the reverse order.
The other important features of Struts 2 are OGNL and ValueStack.
Object-Graph
Navigation Language (OGNL) is a powerful expression language that is used to
reference and manipulate data on the ValueStack.
OGNL
expression language provides simplified stytax to reference java objects.
OGNL
is used to bind the java-side data properties to the string-based view layer.
In Struts 2 the action resides on the ValueStack which is a part
of the ActionContext.
ActionContext is a global storage area that holds all the data associated with
the processing of a request.
When a request comes the params interceptor helps in moving the request
data to the ValueStack.
Now the OGNL does the job of converting the string based form
data to their corresponding java types. OGNL does this by using the set of
available built-in type converters.
Again
when the results are generated the OGNL converts the java types of the property
on the ValueStack to the string-based HTML output.
ActionContext is thread local which means that the values stored
in the ActionContext are unique per thread, this makes the Struts 2 actions thread safe.
No comments:
Post a Comment