What is Controller in MVC ?
Is it struts.xml
or Servlet
(Action Class)?
Can we have more than one Controller
in our application?
Is it good practice to have more than one controller?
What is Controller in MVC ?
Is it struts.xml
or Servlet
(Action Class)?
Can we have more than one Controller
in our application?
Is it good practice to have more than one controller?
In Struts, application Controller layer code/functionality is split into two parts:
ActionServlet
withRequestHandler
Action
classesActionServlet
acts like FrontController pattern.Image from this OnJava article.
The
ActionServlet
is the controller IMO.In a broader scope the
ActionServlet
together with theRequestProcessor
andAction
and the initialization info fromstruts-config.xml
could be called the controller in a struts app.As you will be knowing
MVC
stands for Model - View - Controller.Simply saying, Model contains our business components and logic, View contains our Presentation technology and Controller controls the flow of control and working of the application.
In
Struts
There are two versions of Struts :
Struts 1
andStruts 2
.**These two are different frameworks.
Struts 1 is based on Servlets. It has one
ActionServlet
that acts as its controller.Whereas in Struts 2 we have Filters. In this we can have Filter like
FilterDispatcher
orStrutsPrepareAndExecuteFilter
that acts as our Controller.**In Struts 2, Actions act as Model.
The main job of Controller is to decide which Action class will handle which request And controller does this with the help of Configuration defined by us in struts.xml file or by annotations in case of Struts 2.
The predefined servlet class is the controller which uses structs-config.xml to manage or control your whole application.
No, you can't have more than one controller in your struts application its just against the MVC rule (that you cant have more than one servlet in your app) struts is designed based on MVC.
A Struts-based Controller is a
"component"
consisting of many parts.Custom Action classes
are written by application developers.Struts ActionServlet
is provided by the framework. Astruts-config.xml
configuration file is written by application developers. The code that reads this file and creates Action** objects is provided by the framework. All of these elements together are the"Controller"
For more information about the Struts Action package, see API docs below:
http://struts.apache.org/1.x/apidocs/org/apache/st...ts/action/package-summary.html
As we know if we are using MVC there must be a front end controller we should declare in web.xml . i.e in struts2 there are two filters available
Front End controllers
1)org.apache.struts2.dispatcher.FilterDispatcher 2)org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
And these front end controller is responsible for loading struts.xml file
In struts.xml each form name attributes are getting handled . After the operation is completed then controller will return to which page to be forwarded(Again this operation is taken care by front end controller).
Hope it helps