Chapter 1. Introduction to Play 2
1.2. High-productivity web development
1.4. Type-safe web development—why Play needs Scala
1.5.1. Getting Play and setting up the Play environment
1.5.2. Creating and running an empty application
1.5.3. Play application structure
1.5.4. Accessing the running application
1.5.6. Add a compilation error
Chapter 2. Your first Play application
2.1.3. Language localization configuration
2.1.7. Controller action method
2.1.8. Adding a routes configuration
2.2.3. Additional message localizations
2.2.4. Adding a parameter to a controller action
2.3.1. Additional message localizations
Chapter 3. Deconstructing Play application architecture
3.1. Drawing the architectural big picture
3.2. Application configuration—enabling features and changing defaults
3.2.1. Creating the default configuration
3.2.2. Configuration file format
3.2.3. Configuration file overrides
3.3. The model—adding data structures and business logic
3.3.1. Database-centric design
3.4. Controllers—handling HTTP requests and responses
3.4.2. Routing HTTP requests to controller action methods
3.5. View templates—formatting output
3.6. Static and compiled assets
3.8. Modules—structuring your application
3.8.2. Extracting custom modules
3.8.3. Module-first application architecture
Chapter 4. Defining the application’s HTTP interface
4.1. Designing your application’s URL scheme
4.1.1. Implementation-specific URLs
4.2. Controllers—the interface between HTTP and Scala
4.2.1. Controller classes and action methods
4.3. Routing HTTP requests to controller actions
4.3.2. Matching URL path parameters that contain forward slashes
4.3.3. Constraining URL path parameters with regular expressions
4.4. Binding HTTP data to Scala objects
4.5. Generating HTTP calls for actions with reverse routing
Chapter 5. Storing data—the persistence layer
5.1.1. What are Anorm and Squeryl?
5.3.2. Using Anorm’s stream API
Chapter 6. Building a user interface with view templates
6.1. The why of a template engine
6.2. Type safety of a template engine
6.2.1. A not type-safe template engine
6.3. Template basics and common structures
6.4. Structuring pages: template composition
6.5. Reducing repetition with implicit parameters
6.6. Using LESS and CoffeeScript: the asset pipeline
Chapter 7. Validating and processing input with the forms API
7.3. Creating and processing HTML forms
7.4. Validation and advanced mappings
Chapter 8. Building a single-page JavaScript application with JSON
8.1. Creating the single-page Play application
8.2. Serving data to a JavaScript client
8.3. Sending JSON data to the server
8.3.1. Editing and sending client data
8.4.1. Mapping the JSON structure to a model
8.4.2. Handling “empty” values
8.4.3. Adding validation rules and validating input
8.5. Authenticating JSON web service requests
8.5.1. Adding authentication to action methods
9.3.2. Working with multiple configurations
9.3.3. Creating native packages for a package manager
9.3.4. Setting up a front-end proxy
Chapter 10. Web services, iteratees, and WebSockets
10.1.2. Handling responses asynchronously
10.2. Dealing with streams using the iteratee library
10.2.1. Processing large web services responses with an iteratee
10.3. WebSockets: Bidirectional communication with the browser
10.4. Using body parsers to deal with HTTP request bodies
10.4.1. Structure of a body parser
10.4.2. Using built-in body parsers