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