structural separation of data presentation and business logic
easy separation of development tasks (web design, database, …)
increases maintainability and extendibility (new views!)
increases reusability of code
Struts provides a Controller that manages the control flow
changes in the flow can all be done in struts-config.xml
abstraction from (hard coded) filenames (forwards)
easy localization (internationalization is more important than ever)
based on standard Java technologies (JSP, Servlets, JavaBeans)
thus running on all kinds of JSP/Servlet containers
open-source
affordable
no dependence on external companies
robustness (due to freely accessible source code)
open-source project with growing developer community