Copyright
Dedication
Preface
Organization
Conventions Used in This Book
Comments and Questions
Acknowledgments
Chapter 1. Introduction
A Brief History of the Web
What Are Java Servlets?
JavaServer Pages
JSP Model 1 and Model 2 Architectures
Why Is Model-View-Controller So Important?
What Is a Framework?
Creation of the Struts Framework
Alternatives to Struts
Chapter 2. Inside the Web Tier
An Architecture Overview
The HTTP Request/Response Phase
Struts and Scope
Using URL Parameters
Forward Versus Redirect
Chapter 3. Overview of the Struts Framework
A Banking Account Example
Looking at the Big Picture
Struts Controller Components
Struts Model Components
Struts View Components
Multiple Application Support
Summary
Chapter 4. Configuring Struts Applications
The Storefront Application
What Is a Web Application?
The Web Application Directory Structure
The Web Application Deployment Descriptor
Configuring the web.xml File for Struts
The Struts Configuration File
The org.apache.struts.config Package
The Digester Component
The Struts Console Tool
Reloading the Configuration Files
Chapter 5. Struts Controller Components
The Controller Mechanism
The Utilities Classes
Chapter 6. Struts Model Components
The "M" in MVC
What Is a Business Object?
Persistence
What Does Struts Offer for the Model?
Building the Storefront Model
Chapter 7. Struts View Components
What Is a View?
What Are ActionForms?
Using ActionErrors
Performing Presentation Validation
Using the DynaActionForm Class
Looking Ahead to JavaServer Faces
Chapter 8. JSP Custom Tag Libraries
Custom Tags Overview
Tag Libraries Included with Struts
Using JavaBeans with Struts Tags
Struts HTML Tags
Logic Tags
Bean Tags
Template Tags
Nested Tags
Other Useful Tag Libraries
The JSP Standard Tag Library (JSTL)
Chapter 9. Extending the Struts Framework
What Are Extension Points?
General Extension Points
Controller Extension Points
Extending View Components
Extending Model Components
Downsides to Extending the Framework
Chapter 10. Exception Handling
Java Exception Handling
System Versus Application Exceptions
Using Chained Exceptions
Exception Handling Provided by Struts
Tying Up the Loose Ends
Conclusion
Chapter 11. The Validator Framework
The Need for a Validation Framework
Installing and Configuring the Validator
Using an ActionForm with the Validator
Creating Your Own Validation Rules
The Validator and JSP Custom Tags
Internationalizing the Validation
Using the Validator Outside of Struts
Chapter 12. Internationalization and Struts
What Is Internationalization?
Support for I18N in Java
Internationalizing Your Struts Applications
Exception Handling and Internationalization
Chapter 13. Struts and Enterprise JavaBeans
Implementing the Storefront Service Using EJB
Interfacing Struts to EJB
Conclusion
Chapter 14. Using Tiles
Understanding Templates
Installing and Configuring Tiles
Overview of Tiles
The Tiles Tag Library
Using Definitions
Internationalization Support with Tiles
Chapter 15. Logging in a Struts Application
Logging in a Web Application
Using the Servlet Container for Logging
Jakarta Commons Logging
Using the log4j Package
Using Commons Logging in JSP Pages
The Performance Impact of log4j
Third-Party log4j Extensions
Java 1.4 Logging API
Chapter 16. Packaging Your Struts Application
To Package or Not to Package
Deciding How to Package Your Application
Packaging the Application as a WAR File
Building Your Struts Applications with Ant
Creating an Automated Build Environment
Restarting Your Server Remotely
Chapter 17. Addressing Performance
What Is Good Performance?
Performance Versus Load Testing
Performance- and Stress-Testing Tools
Testing the Storefront Application
Performance and Scalability Gotchas
Appendix A. Changes Since Struts 1.0
ActionServlet and RequestProcessor
Modifications to the Struts Action Class
Changes to web.xml and struts-config.xml
New Features of Struts 1.1
The Struts Validator
Change to Commons Logging
Removal of Admin Actions
Deprecation of the GenericDataSource
Dependency on Commons Projects
Appendix B. Downloading and Installing Struts
The Binary Versus Source Distributions
Tips on Installing Struts in Tomcat
Tips on Installing Struts in WebLogic
Tips on Installing Struts in WebSphere
Tips on Installing Struts in JRun
Appendix C. Resources
The Struts Mailing Lists
The Struts Resource Web Page
Validator Site
Tiles Site
Nested Tags Site
The Struts Console
Easy Struts Project
Colophon