开发者

Controller in Struts

开发者 https://www.devze.com 2022-12-10 06:44 出处:网络
What is Controller in MVC ? Is it struts.xml or Servlet (Action Class)? Can we have more than开发者_如何学JAVA one Controller in our application?

What is Controller in MVC ?

Is it struts.xml or Servlet (Action Class)?

Can we have more than开发者_如何学JAVA 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 with RequestHandler
  • Action classes

ActionServlet acts like FrontController pattern.

Controller in Struts

Image from this OnJava article.


The ActionServlet is the controller IMO.

In a broader scope the ActionServlet together with the RequestProcessor and Action and the initialization info from struts-config.xml could be called the controller in a struts app.


struts.xml is the controller. You can have a look at this Struts 2 Architecture


The controller is responsible for intercepting and translating user input into actions to be performed by the model. The controller is responsible for selecting the next view based on user input and the outcome of model operations. The Controller receives the request from the browser, invoke a business operation and coordinating the view to return to the client.

whenever the request for any resource comes, first it goes to the controller. In simple words we can say that controller is a navigator. And its job is to find the corresponding action class for the incoming request and transfer it to that particular action. Or in technical word we can say that it performs the mapping.

he controller is implemented by a java servlet, this servlet is centralized point of control for the web application. In struts framework the controller responsibilities are implemented by several different components like

The ActionServlet Class The RequestProcessor Class The Action Class

for more reference on this you can go to the following link http://www.allapplabs.com/struts/struts_controller.htm


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. A struts-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


The struts Action class is effectively the Controller as it determines what should happen next in the processing of the request (from the browser). The Action class has an execute method that contains the controller logic. The Action class is a good example of the use of Command Pattern.

The struts-config.xml contains the routing information that determines which Controller (Action class) the request is forwarded to. It is good practice to have more than one controller, as a rule of thumb you have one controller per view, but this is not a strict rule and you may have more than one controller per view if the view is complex and has distinct features that merit separation of concerns within the controllers.

Also, be careful not to burden your Controller classes with business logic, this leads to duplication of code within controllers when the code should be factored out to the business classes in the Model layer of your MVC application.


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 and Struts 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 or StrutsPrepareAndExecuteFilter 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.


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


  1. The predefined servlet class is the controller which uses structs-config.xml to manage or control your whole application.

  2. 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.

0

精彩评论

暂无评论...
验证码 换一张
取 消