This week's giveaway is in the EJB and other Java EE Technologies forum. We're giving away four copies of EJB 3 in Action and have Debu Panda, Reza Rahman, Ryan Cuprak, and Michael Remijan on-line! See this thread for details.
This book differs from other Struts books in many ways.
First of all, like many other Struts books, this book teaches you what Struts can do and how to build applications based on it. However, this book goes the extra mile to discuss how to design Struts applications and solve common problems in Struts development. Therefore, it's like getting two books (Struts programming and Struts design) at the price of one.
The second difference it that this book is a tutorial designed to make the reader truly understand the concepts. Examples are relevant and based on real-world applications and are in abundance. Several important topics not even mentioned in other books, such as file upload, paging, object caching, are given detailed treatment.
This book is also clear about what good practices are. For example, the book is consistent in advocating that JSPs should be used as the presentation layer and no Java code should be found in them. There is also no doubt that the book is saying that Struts developers should use JSTL and the JSP 2.0 Expression Language, and avoid using the Struts Bean and Logic libraries entirely. In fact, the EL and JSTL are explained earlier than the Bean and Logic libraries, which are still covered for those wanting to migrate from these two to JSTL. The Struts team, on their website, recommends that JSTL should be used in new developments.
The second part of the book deals with Struts design topics, something missing from many Struts books. It deals with important topics such as how to persist data to a database, how to share configuration information across the application, how to cache expensive objects, how to display search results in multiple pages, and so on. There is also a chapter on the struts-jsf plugin.
The last chapter, "How Struts Works", dissects the Struts framework and explain the many parts that make up the framework. This chapter is particularly interesting to readers who want to know how Struts works under the hood. Understanding it helps you design and develop more effective Struts applications.