| Acknowledgments | p. xvii |
| Preface | p. xix |
| Welcome to WebObjects | |
| WebObjects and OpenBase | p. 3 |
| WebObjects History | p. 4 |
| WebObjects: The Big Picture | p. 7 |
| WebObjects: The Details | p. 8 |
| OpenBase | p. 10 |
| Before You Start: Two Cautions | p. 11 |
| The World of Application Servers | p. 13 |
| Internet and Web Basics | p. 14 |
| Multi-Tier Application Design | p. 23 |
| Object-Oriented Programming | p. 31 |
| Object-Oriented Programming Defined | p. 32 |
| Object-Oriented Programming Terms and Concepts | p. 33 |
| Advantages of Object-Oriented Programming | p. 39 |
| Components and Frameworks | p. 41 |
| Databases Today | p. 45 |
| Overview | p. 46 |
| Terminology | p. 50 |
| Database Design | p. 56 |
| Aspects of Database Programming | p. 61 |
| Building a Database with OpenBase | |
| Creating and Using a Database | p. 65 |
| The SiteDemo Database | p. 66 |
| Working with OpenBaseManager Schema Editor | p. 71 |
| Building Relationships | p. 76 |
| Modifying Data with OpenBase | p. 81 |
| Creating and Running Queries in OpenBase | p. 83 |
| Using SQL | p. 89 |
| SQL Overview | p. 90 |
| Retrieving Data with SELECT Statements | p. 92 |
| Subqueries | p. 96 |
| Adding Data to the Database | p. 97 |
| Updating Data | p. 98 |
| Deleting Data | p. 98 |
| SQL Functions | p. 98 |
| Creating and Altering Tables | p. 99 |
| Creating Views | p. 100 |
| Using Indexes | p. 100 |
| Running and Maintaining the Database | p. 103 |
| Where Are the Databases? | p. 104 |
| Using OpenBaseManager | p. 105 |
| Configuring the Database | p. 107 |
| OpenBase Preferences | p. 108 |
| Backing Up Databases | p. 110 |
| Restoring from Backups | p. 113 |
| Importing from Spreadsheets | p. 114 |
| Replicating Databases | p. 114 |
| Interacting with Databases Using Enterprise Objects | |
| Introduction to Enterprise Objects Framework | p. 119 |
| Databases, Objects, and Enterprise Objects Framework | p. 121 |
| Factoring Applications and Data | p. 122 |
| Factoring Logic and Data | p. 123 |
| Design Strategies: Which End to Start From | p. 124 |
| How Enterprise Objects Framework Works with WebObjects | p. 125 |
| Enterprise Objects Framework Design Issues | p. 129 |
| The WebObjects Application | p. 130 |
| Start Page | p. 131 |
| Entry Page | p. 132 |
| Search Page | p. 138 |
| Summary Display Page | p. 142 |
| Persistent Objects | p. 147 |
| Issues of Persistence | p. 148 |
| Faulting | p. 149 |
| Fetching Data with an Editing Context | p. 151 |
| Fetching Data with a Display Group | p. 153 |
| Using EOModeler | p. 161 |
| Getting Started with EOModeler | p. 162 |
| Creating a Model Automatically from OpenBase Tables | p. 164 |
| Creating Database Tables from Your Model | p. 171 |
| Working with the Model and the Database | p. 179 |
| Creating Java Classes from EOModeler | p. 180 |
| Using EOGenericRecord | p. 183 |
| EOEnterpriseObject | p. 188 |
| Creating Dynamic Web Sites with WebObjects | |
| WebObjects at Work | p. 193 |
| Looking at a WebObjects Site | p. 194 |
| What Happens | p. 200 |
| How It Happens | p. 211 |
| Using WebObjects Builder | p. 215 |
| Using WebObjects Builder | p. 216 |
| Binding Keys and Actions to Properties | p. 222 |
| Creating New Bindings | p. 227 |
| Using Project Builder | p. 229 |
| Creating Projects | p. 230 |
| Editing Projects | p. 232 |
| Editing Components | p. 234 |
| Building and Launching WebObjects Applications | p. 240 |
| Using Dynamic Elements | p. 243 |
| How Dynamic Elements Work | p. 244 |
| Syntax for WebObjects Dynamic Elements | p. 246 |
| Implementing the Request-Response Loop | p. 271 |
| Classes that Implement the Request-Reponse Loop | p. 272 |
| The Request-Response Cycle in Action | p. 277 |
| Using Direct and Component Actions | p. 281 |
| WebObjects URLs | p. 283 |
| WOApplication | p. 286 |
| WOAdaptor | p. 288 |
| WORequestHandler | p. 289 |
| WOComponent and Component Actions | p. 290 |
| WODirectAction and Direct Actions | p. 291 |
| State and Session Management | p. 293 |
| Identity, State, Persistence, and Transactions: An Introduction | p. 294 |
| Where State Happens | p. 301 |
| Designing for State | p. 306 |
| Using Sessions Effectively | p. 308 |
| XML and WebObjects | p. 315 |
| XML Basics | p. 316 |
| Using XML with WebObjects | p. 320 |
| Advanced WebObjects Topics | p. 335 |
| Debugging Tips and Tools | p. 336 |
| Database Performance | p. 338 |
| Handling Errors | p. 340 |
| Jump-Starting WebObjects and OpenBase | |
| Direct to Web | p. 347 |
| What Is Direct to Web? | p. 348 |
| Creating a Direct to Web Project | p. 349 |
| Direct to Web Looks | p. 353 |
| Customizing Direct to Web | p. 359 |
| Using WebAssistant | p. 360 |
| Using Direct to Web in Other WebObjects Applications | p. 366 |
| Java Client | p. 369 |
| What Is a WebObjects Java Client? | p. 370 |
| Direct to Java Client | p. 374 |
| Creating a Java Client Project | p. 374 |
| Writing Java Client Applications | p. 376 |
| Running a Java Client | p. 382 |
| Reusable Components in WebObjects | p. 387 |
| Using the Palette | p. 388 |
| WOExtensions Palette | p. 389 |
| Premade Elements Palette | p. 392 |
| Direct to Web Palette | p. 393 |
| JavaScript Palette | p. 394 |
| JavaClient Palette | p. 395 |
| WOSMIL Palette | p. 396 |
| Creating a New Palette | p. 397 |
| Creating Reusable WebObjects Component Objects | p. 398 |
| Reusable Databases and Frameworks in OpenBase and WebObjects | p. 403 |
| Frameworks in WebObjects | p. 404 |
| Reusing Databases | p. 407 |
| Reusing Models | p. 410 |
| Reuse Considerations | p. 410 |
| Deployment Issues | |
| Running a Database on a Network | p. 415 |
| Preparing for Deployment | p. 416 |
| Moving the Database to Production | p. 417 |
| Location: Where Is the Database? | p. 419 |
| Time: Keeping It Running | p. 421 |
| Issues for Small-Scale Networks | p. 423 |
| Security | p. 425 |
| Database Security | p. 426 |
| Web Security | p. 432 |
| WebObjects Security | p. 435 |
| Other Security Concerns | p. 437 |
| Deploying WebObjects Applications | p. 441 |
| The WebObjects Deployment Environment | p. 442 |
| Managing Hosts | p. 447 |
| Managing Applications | p. 448 |
| Managing Instances | p. 453 |
| Index | p. 457 |
| Table of Contents provided by Syndetics. All Rights Reserved. |