My link above leads to presentations that discuss the pros and cons of many frameworks.
Struts 2 and Spring are not really the same thing. Struts is a
Front Controller. Spring has a Front Controller (SpringMVC) and much more (Inversion of Control configuration,
EJB support, a
JDBC library, Hibernate integration, declarative transaction support and AOP). As a matter of fact, Struts 2 has a
Spring Plugin which makes integration of Spring Dependency Injection easy.
So your question is not "which framework is best". Your should be asking "I have x requirements and need a framework with those features".
That said, our
Struts 2 FAQ has many links to tutorials and books.
You can also browse through our
Book Reviews forum to find good books.