Preface
In mid-2006, I started a new project. Since in this case I was developing for myself, under the banner of my own company, I had the pleasure of making all the technological choices myself. Most of my previous experience had been with Struts 1, a framework that proved to me that you wouldn’t want to work without a framework, but no longer convinced me that I was working with the best option available. For my new project, I was going to choose one of the new, second-generation web application frameworks.
To be honest, I can no longer recall why I chose Struts 2. I know that I also considered using Spring’s MVC framework, but something made me go with Struts 2. I probably chose Struts 2 because I figured it would be more widely in demand in my contract work. At any rate, the choice was not that impassioned. But once I started development, I almost couldn’t believe the power of this new framework. It’s the perfect blend of a dedication to software engineering, which yields high levels of architectural componentization and flexibility, and a willingness to be influenced by the innovations of others. While many people love to compare frameworks and quibble over which is best, we think that any of the serious contenders will quickly absorb the strengths of other technologies. The Struts 2 commitment to convention over configuration aptly demonstrates this.