I don't really see Struts and Spring as competing in the same space. Spring is famous for its AOP/Dependency Injection capabilities, and that's mostly what it's used for. Yes, it has an MVC framework, but for whatever reason, that module is not widely used. It's certainly possible to use both Struts and Spring, with Spring being used for the back-end part of the development and Struts for the front-end.
Even though I've been a fan of Struts for a number of years, I do recognize that Struts 1 has some weaknesses. It can be a little cumbersome with the amount of XML that has to be written to support it. I also don't like the fact that it doesn't handle data type conversions very well, nor does it integrate with newer technologies such as AJAX as well as one might hope. Struts 2 solves most of these problems, however.
I see the main competitors for the web framework space (besides Struts) as being
Java Server Faces (
JSF) and two or three of the plethora of Open Source Web Application Frameworks such as Stripes, Grails, and Tapestry. I don't see Spring MVC being a major contender in this space.