Struts is an MVC-framework, while Spring is a full-stack application framework that provides an MVC Framework (Spring MVC) as one of its many modules. In fact, it is possible to integrate a Struts-based web tier with Spring-managed components in the middle-tier. At the core Spring provides an Inversion of Control container to remove the burden of dependency management from application code. Spring also leverages Aspect-Oriented Programming to decorate POJOs with enterprise behavior - such as transactions, security, and logging. In addition to its MVC web framework, Spring provides support libraries for data access, messaging, scheduling, etc. As far as comparing the two web frameworks (Struts and Spring MVC), they are similar enough that developers familiar with Struts should be able to pick up Spring MVC rather quickly. For example, Spring MVC Controllers play the same general role as Struts' Actions - handling requests and typically delegating to the application layer. I'm no...