This book is a tutorial designed to make the reader truly understand the concepts. It explains not only how to use Struts' features, but also how certain features work under the hood. Examples are relevant and based on real world applications. Several important topics rarely mentioned in other books such as file upload, long processing task handling, and profiling are given detailed treatment. This book is for beginners as well as seasoned programmers upgrading from Struts 1. In addition, this book deals with design topics such as data persistence and the Data Access object pattern, security, double form submits, progress meters, and zero configuration through annotations.