|
Struts Interview Questions
Q. What is Struts
A. Struts is a J2EE Design Pattern
Struts follows Model-View-Controller (MVC) design paradigm for application architectures.
The main component of the Struts framework is the flexible control layer based on standard technologies like Java Servlets, JavaBeans, ResourceBundles, and XML, as well as various Jakarta Commons packages.
Struts provides its own Controller component which can be easily be integrated with Model and View layers of other technologies. For the Model, Struts can interact with standard data access technologies, like JDBC and EJB, as well as most any third-party packages, like Hibernate, iBATIS, or Object Relational Bridge. For the View, Struts allows to integrate JavaServer Pages, including JSTL and JSF, as well as Velocity Templates, XSLT, and other presentation systems.
Q. What is ActionServlet?
A. Struts Controller class is named as ActionServlet. It is the core of Struts Framework. The fully qualified name for this is org.apache.struts.action.ActionServlet. This Controller class is responsible for handling all the requests. It takes the requests, analyzes its type and forwards to the respective Model components.
Q. How is Struts Organized? What is the flow of control in Struts?
ActionServlet provides the "controller" in the
Model-View-Controller (MVC) design pattern for web applications that is
commonly known as "Model 2". This nomenclature originated with a
description in the JavaServerPages Specification, version 0.92, and has
persisted ever since (in the absence of a better name).
Generally, a "Model 2" application is architected as follows:
- The user interface will generally be created with server pages, which
will not themselves contain any business logic. These pages represent
the "view" component of an MVC architecture.
- Forms and hyperlinks in the user interface that require business logic
to be executed will be submitted to a request URI that is mapped to this
servlet.
- There can be one instance of this servlet class,
which receives and processes all requests that change the state of
a user's interaction with the application. The servlet delegates the
handling of a request to a @link(RequestProcessor) object. This component
represents the "controller" component of an MVC architecture.
- The
RequestProcessor selects and invokes an @link(Action) class to perform
the requested business logic, or delegates the response to another resource.
- The
Action classes can manipulate the state of the application's
interaction with the user, typically by creating or modifying JavaBeans
that are stored as request or session attributes (depending on how long
they need to be available). Such JavaBeans represent the "model"
component of an MVC architecture.
- Instead of producing the next page of the user interface directly,
Action classes generally return an @link(ActionForward) to indicate
which resource should handle the response. If the Action
does not return null, the RequestProcessor forwards or
redirects to the specified resource (by utilizing
RequestDispatcher.forward or Response.sendRedirect)
so as to produce the next page of the user interface.
The standard version of RequestsProcessor implements the
following logic for each incoming HTTP request. You can override
some or all of this functionality by subclassing this object and
implementing your own version of the processing.
- Identify, from the incoming request URI, the substring that will be
used to select an action procedure.
- Use this substring to map to the Java class name of the corresponding
action class (an implementation of the
Action interface).
- If this is the first request for a particular
Action class,
instantiate an instance of that class and cache it for future use.
- Optionally populate the properties of an
ActionForm bean
associated with this mapping.
- Call the
execute method of this Action class, passing
on a reference to the mapping that was used, the relevant form-bean
(if any), and the request and the response that were passed to the
controller by the servlet container (thereby providing access to any
specialized properties of the mapping itself as well as to the
ServletContext).
Q. What all design patterns does struts implement?
Struts controller uses the command design pattern and the action classes use the adapter design pattern. The process() method of the RequestProcessor uses the template method design pattern. Struts also implement the following J2EE design patterns.
-
Service to Worker
-
Dispatcher View
-
Composite View (Struts Tiles)
-
Front Controller
-
View Helper
-
|
|