What is Struts - Struts Architecture

In this section we will discuss about Architecture.
Struts is famous for its robust Architecture and it is being used for
developing small and big software projects.
Struts is an open source framework used for developing
J2EE web applications using Model View Controller (MVC) design pattern. It uses
and extends the Java Servlet API to encourage developers to adopt an MVC
architecture. Struts framework provides three key components:
- A request handler provided by the application
developer that is used to mapped to a particular URI.
- A response handler which is used to transfer
the control to another resource which will be responsible for completing the
response.
- A tag library which helps developers to
create the interactive form based applications with server pages.
Struts provides you the basic infrastructure
infrastructure for implementing MVC allowing the developers to concentrate on
the business logic.
MVC Architecture
The main aim of the MVC architecture is to
separate the business logic and application data from the presentation data to
the user.
Here are the reasons why we should use the MVC design
pattern.
- They are resuable : When the problems recurs,
there is no need to invent a new solution, we just have to follow the
pattern and adapt it as necessary.
- They are expressive: By using the MVC design
pattern our application becomes more expressive.
1). Model: The model object knows about
all the data that need to be displayed. It is model who is aware about all the
operations that can be applied to transform that object. It only represents the
data of an application. The model represents enterprise data and the business
rules that govern access to and updates of this data. Model is not aware about
the presentation data and how that data will be displayed to the
browser.
2). View : The view represents the presentation
of the application. The view object refers to the model. It uses the query
methods of the model to obtain the contents and renders it. The view is not
dependent on the application logic. It remains same if there is any modification
in the business logic. In other words, we can say that it is the responsibility
of the of the view's to maintain the consistency in its presentation when the
model changes.
3). Controller: Whenever the user sends a
request for something then it always go through the controller. The controller
is responsible for intercepting the requests from view and passes it to the
model for the appropriate action. After the action has been taken on the data,
the controller is responsible for directing the appropriate view to the user.
In GUIs, the views and the controllers often work very closely together.
Overview of the Struts Framework
The Struts framework is composed of approximately 300
classes and interfaces which are organized in about 12 top level packages. Along
with the utility and helper classes framework also provides the classes and
interfaces for working with controller and presentation by the help of the
custom tag libraries. It is entirely on to us which model we want to choose. The
view of the Struts architecture is given below:
The Struts Controller Components:
Whenever a user request for something, then the request
is handled by the Struts Action Servlet. When the ActionServlet receives the
request, it intercepts the URL and based on the Struts Configuration files, it
gives the handling of the request to the Action class. Action class is a part of
the controller and is responsible for communicating with the model layer.
The Struts View Components:
The view components are responsible for presenting
information to the users and accepting the input from them. They are responsible
for displaying the information provided by the model components. Mostly we use
the Java Server Pages (JSP) for the view presentation. To extend the capability
of the view we can use the Custom tags, java script etc.
The Struts model component:
The model components provides a model of the business
logic behind a Struts program. It provides interfaces to databases or back- ends
systems. Model components are generally a java class. There is not any such
defined format for a Model component, so it is possible for us to reuse Java
code which are written for other projects. We should choose the model according
to our client requirement.

|