This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori 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).