contents
preface
acknowledgments
about this book
about the title
about the cover illustration
Part 1 Struts 2: a brand new framework
- 1 Struts 2: the modern web application framework
- 1.1 Web applications: a quick study
- 1.2 Frameworks for web applications
- 1.3 The Struts 2 framework
- 1.4 Summary
- 2 Saying hello to Struts 2
- 2.1 Declarative architecture
- 2.2 A quick hello
- 2.3 HelloWorld using annotations
- 2.4 Summary
Part 2 Core concepts: actions, interceptors, and type conversion
- 3 Working with Struts 2 actions
- 3.1 Introducing Struts 2 actions
- 3.2 Packaging your actions
- 3.3 Implementing actions
- 3.4 Transferring data onto objects
- 3.5 File uploading: a case study
- 3.6 Summary
- 4 Adding workflow with interceptors
- 4.1 Why intercept requests?
- 4.2 Interceptors in action
- 4.3 Surveying the built-in Struts 2 interceptors
- 4.4 Declaring interceptors
- 4.5 Building your own interceptor
- 4.6 Summary
- 5 Data transfer: OGNL and type conversion
- 5.1 Data transfer and type conversion: common tasks of the web application domain
- 5.2 OGNL and Struts 2
- 5.3 Built-in type converters
- 5.4 Customizing type conversion
- 5.5 Summary
Part 3 Building the view: tags and results
- 6 Building a view: tags
- 6.1 Getting started
- 6.2 An overview of Struts tags
- 6.3 Data tags
- 6.4 Control tags
- 6.5 Miscellaneous tags
- 6.6 Using JSTL and other native tags
- 6.7 A brief primer for the OGNL expression language
- 6.8 Summary
- 7 UI component tags
- 7.1 Why we need UI component tags
- 7.2 Tags, templates, and themes
- 7.3 UI Component tag reference
- 7.4 Summary
- 8 Results in detail
- 8.1 Life after the action
- 8.2 Commonly used result types
- 8.3 JSP alternatives
- 8.4 Global results
- 8.5 Summary
Part 4 Improving your application
- 9 Integrating with Spring and Hibernate/JPA
- 9.1 Why use Spring with Struts 2?
- 9.2 Adding Spring to Struts 2
- 9.3 Why use the Java Persistence API with Struts 2?
- 9.4 Summary
- 10 Exploring the validation framework
- 10.1 Getting familiar with the validation framework
- 10.2 Wiring your actions for validation
- 10.3 Writing a custom validator
- 10.4 Validation framework advanced topics
- 10.5 Summary
- 11 Understanding internationalization
- 11.1 The Struts 2 framework and Java i18n
- 11.2 A Struts 2 i18n demo
- 11.3 Struts 2 i18n: the details
- 11.4 Overriding the framework’s default locale determination
- 11.5 Summary
Part 5 Advanced topics and best practices
- 12 Extending Struts 2 with plug-ins
- 12.1 Plug-in overview
- 12.2 Common plug-ins
- 12.3 Internal component system
- 12.4 Writing a breadcrumb plug-in
- 12.5 Summary
- 13 Best practices
- 13.1 Setting up your environment 327
- 13.2 Unit-testing your actions
- 13.3 Maximizing reuse
- 13.4 Advanced UI tag usage
- 13.5 Summary
- 14 Migration from Struts Classic
- 14.1 Translating Struts Classic knowledge
- 14.2 Converting by piecemeal
- 14.3 Summary
- 15 Advanced topics
- 15.1 Advanced action usage
- 15.2 Dynamic method invocation
- 15.3 Using tokens to prevent duplicate form submits
- 15.4 Displaying wait pages automatically
- 15.5 A single action for CRUD operations
- 15.6 Tiles and Struts 2
- 15.7 Summary
 
index