Difference between Struts and Spring

Here we have discussed the difference between Struts and Spring framework. Struts was launched first. Spring was launched to overcome the shortcomings of Struts. But after the launch of Struts 2, which is equivalent to Spring both are now being used extensively to develop Java web applications.

Difference between Struts and Spring

To know the difference between Struts and Spring, we must first explain and understand both the frameworks a little.

Spring framework is a Java platform that is used to develop modular, portable and testable Java applications. It is an open source framework that is used extensively to develop applications. Spring is so popular that it is referred as de-facto standard for developing Enterprise Java applications.

Spring handles the infrastructure, allowing developers to create high performing, easily testable and reusable code and application. It is also used to build web applications on top of the J2EE platform.

Spring works on Dependency Injection concept aka Inversion of Control (IoC) component and Aspect Oriented Container Framework. It supplies input parameters at runtime that reduces the coupling between various modules.

Spring provides a framework to integrate OR mapping, JDBC etc.

Apache Struts framework

Struts is a cross-platform framework that promotes MVC architecture i.e. Model, View and Controller. It is an open source framework that is now extensively used to develop Java EE web applications.

Its current stable release is version 2.3.15.1.

Struts is a request-based framework, which means that it receives a request from the user, carries out the required task and then sends back the result. For this it has a request handler, a response handler, and a tag library.

Struts support REST applications and various technologies like SOAP, AJAX, etc.

All the requests are mapped by Controller to a specific action. Action mapping is specified in Struts-config.xml file. It than creates an instance of this action and invoke interceptors. Interceptor are invoked before and after the action is executed.

Model contains the data and the business logic and is implemented by the Action component.

View displays the result.

Spring Struts
Layered Architecture No
Light weight Heavy weight
does not supports tag Library supports tag Library
loosely coupled tightly coupled
provides easy integration with ORM technologies Manual Coding

Resources: