my dog learned polymorphism
The moose likes Struts and the fly likes MVC in Struts Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Frameworks » Struts
Bookmark "MVC in Struts" Watch "MVC in Struts" New topic

MVC in Struts

Amirr Rafique
Ranch Hand

Joined: Nov 14, 2005
Posts: 324

Please correct me if I am wrong in identifying Model, View and Controller in Struts

ActionServlet ==> Controller

Action ==> Model

ActionForm & JSP ==> View


"Know where to find the solution and how to use it - that's the secret of success."
Rama Krishna Ghanta
Ranch Hand

Joined: Nov 20, 2006
Posts: 59

You are absolutely right.

Rama Krishna Ghanta

Merrill Higginson
Ranch Hand

Joined: Feb 15, 2005
Posts: 4864
The above is basically correct except for one thing: The Action does not belong to the Model space, but rather is also part of the controller along with ActionServlet. As such, it should not contain business logic, but rather instantiate and call methods on other classes that do contain business logic.

While Struts provides a framework for you to write MVC applications, it provides no classes at all that are part of the model space. The expectation is that you will write these classes yourself, or tie into another framework such as EJBs or Spring to help you write the model.

Consultant, Sima Solutions
Amirr Rafique
Ranch Hand

Joined: Nov 14, 2005
Posts: 324
Guys thanks for ypur response

Due to conflict on Action's role I have posted this question. There are two school of thoughts one which consider Action as model (like me and Rama Krishna Ghanta) and others have thought like Merrill Higginson. These two thoughts are confusing me.

As per my understanding, ActionServlet calls execute of Action to process the request or to perform the business logic against that request. So as per role Action is model. Now its upto us how we implement our logic in Action, whether we write whole business logic in Action or delegate it to other layers[DAO, Business Logic layer or EJB].

One thing that I read in struts best practices is
Struts is a presentation layer framework and we should not use its Action for Application logic as the Action is model for presentation layer

So if we forget about our application and just think of Struts framework then Action seems model of the framework (where we integrate our application model layer or business logic layer) or the struts framework do not provide modle layer
Ramna Reddy
Ranch Hand

Joined: Aug 06, 2006
Posts: 96
Hi Amir,
Model layer doesn't belong to struts framework..that's the layer where we write the business logic.
The Model starts where the struts ends.
ActionServlet and Actions belong to Controler part and ActionForms & jsps belong to View.
And Model consists of business logic which we write.

This should clear your confusion...
happy coding...

Merrill Higginson
Ranch Hand

Joined: Feb 15, 2005
Posts: 4864
One of the criteria for writing a good model component is that it should be agnostic as to which type of presentation layer will be used. For example, it shouldn't know or care whether it is being presented in HTML, or in a client-side GUI, or whatever. Does the excecute method of an Action class pass this test? No, it does not. It requires an HttpServletRequest and HttpServletResponse as parameters.

As to whether the Struts authors consider the Action class to be a controller component or a model component, one only has to look as far as the User Guide. You will find all the information on creating Action classes under the main heading "Building Controller Componenets".

Note: This is not the first time this topic has been discussed in this forum. See this thread for an in-depth discussion of this topic.
[ December 26, 2006: Message edited by: Merrill Higginson ]
I agree. Here's the link:
subject: MVC in Struts
It's not a secret anymore!