This week's book giveaway is in the OCPJP forum. We're giving away four copies of OCA/OCP Java SE 7 Programmer I & II Study Guide and have Kathy Sierra & Bert Bates on-line! See this thread for details.
Spring is a lot of things. Struts is primarily a web application framework. It is not unusual to use both in the same application. Which framework is "best" depends on your requirements. You have to look at the features provided by each (including the possibilities of mixing and matching frameworks to create an application stack) and see which matches your requirements best (the same goes with all the other technologies you mention).