How Struts Works
The basic purpose of the Java Servlets in struts is to
handle requests made by the client or by web browsers. In struts JavaServerPages
(JSP) are used to design the dynamic web pages. In struts, servlets helps to
route request which has been made by the web browsers to the appropriate
ServerPage. The use of servlet as a router helps to make the web applications
easier to design, create, and maintain. Struts is purely based on the Model-
View- Contoller (MVC) design pattern. It is one of the best and most well
developed design patterns in use. By using the MVC architecture we break the
processing in three sections named Model, the View, and the Controller. Below we
are describing the working of struts.
- As we all are well aware of the fact that each
application we develop has a deployment descriptor i.e. WEB-INF/web.xml.
This is the file which the container reads.
This file has all the
configuration information which we have defined for our web application. The
configuration information includes the index file, the default welcome page,
the mapping of our servlets including path and the extension name, any init
parameters, information related to the context elements.
In the file WEB-INF/web.xml of struts application we need to configure the
Struts ActionServlet which handles all the request made by the web browsers
to a given mapping. ActionServlet is the central component of the
Struts controller. This servlet extends the HttpServlet. This servlet
basically performs two important things. First is : When the
container gets start, it reads the Struts Configuration files and loads it
into memory in the init() method. You will know more about the Struts
Configuration files below. Second point is: It intercepts the
HTTP request in the doGet() and doPost() method and handles it
- In struts application we have another xml file which
is a Struts configuration file named as struts.config.xml. The name
of this file can be changed. The name of the struts configuration file can
be configured in the web.xml file. This file is placed under the WEB-INF
directory of the web application. It is an XML document that describes
all or part of Struts application. This file has all the information about
many types of Struts resources and configures their interaction. This
file is used to associate paths with the controller components of your
application., known as Action classes like <action path
="/login" type = "LoginAction">. This tag
tells the Struts ActionServlet that whenever the incoming request is http://myhost/myapp/login.do,
then it must invoke the controller component LoginAction. Above, you
can see that we have written .do in the URL. This mapping is done to
tell the web application that whenever a request is received with the .do
extension then it should be appended to the URL.
- For each action we also
have to configure Struts with the names of the resulting pages that will be
shown as a result of that action. In our application there can be more than
one view which depends on the result of an action. One can be for a success
and the other for the failure. If the result action is
"success" then the action tells the ActionServlet that the action
has been successfully accomplished or vice- versa. The struts knows
how to forward the specific page to the concerned destination. The
model which we want to use is entirely to you, the model is called from
within the controller components.
- Action can also get associate with a JavaBean in our
Struts configuration file. Java bean is nothing but a class having getter
and setter methods that can be used to communicate between the view and the
controller layer. These java beans are validated by invoking the validate()
method on the ActionForm by the help of the Struts system. The client
sends the request by the normal form submission by using Get or Post method,
and the Struts system updates that data in the Bean before calling the
- The view we use in the struts can be either Jsp
page, Velocity templates, XSLT pages etc. In struts there are set of JSP
tags which has been bundled with the struts distribution, but it is not
mandatory to use only Jsp tags, even plain HTML files can be used within our
Struts application but the disadvantage of using the html is that it can't
take the full advantage of all the dynamic features provided in the struts
The framework includes a set of custom tag libraries that facilitate in
creating the user interfaces that can interact gracefully with ActionForm
beans. The struts Jsp taglibs has a number of generic and struts specific
tags tags which helps you to use dynamic data in your view. These tags helps
us to interact with your controller without writing much java code inside
your jsp. These tags are used create forms, internally forward to other
pages by interacting with the bean and helps us to invoke other actions of
the web application.
There are many tags provided to you in the struts frameworks which helps you
in sending error messages, internationalization etc.
Note: The points we have described above will be in
effect if and only if when the ActionServlet is handling the request. When the
request is submitted to the container which call the ActionServlet, make sure
that the extension of the file which we want to access should have the extension
web.xml : Whenever the container gets start up
the first work it does is to check the web.xml file and determine what struts
action Servlets exist. The container is responsible for mapping all the file
request to the correct action Servlet.
A Request : This is the second step performed by
the container after checking the web.xml file. In this the user submits a form
within a browser and the request is intercepted by the controller.
The Controller : This is the heart of the
container. Most Struts application will have only one controller that is
ActionServlet which is responsible for directing several Actions. The
controller determines what action is required and sends the information to be
processed by an action Bean. The key advantage of having a controller is its
ability to control the flow of logic through the highly controlled, centralized
struts.config.xml : Struts has a configuration
file to store mappings of actions. By using this file there is no need to hard
code the module which will be called within a component. The one more
responsibility of the controller is to check the struts.config.xml file to
determine which module to be called upon an action request. Struts only reads
the struts.config.xml file upon start up.
Model : The model is basically a business logic
part which takes the response from the user and stores the result for the
duration of the process. This is a great place to perform the preprocessing of
the data received from request. It is possible to reuse the same model for many
page requests. Struts provides the ActionForm and the Action classes which can
be extended to create the model objects.
View : The view in struts framework is mainly a
jsp page which is responsible for producing the output to the user.
Struts tag libraries : These are struts
components helps us to integrate the struts framework within the project's
logic. These struts tag libraries are used within the JSP page. This means that
the controller and the model part can't make use of the tag library but instead
use the struts class library for strut process control.
Property file : It is used to store the messages
that an object or page can use. Properties files can be used to store the titles
and other string data. We can create many property files to handle different
Business objects : It is the place where
the rules of the actual project exists. These are the modules which just
regulate the day- to- day site activities.
The Response : This is the output of the View