Acknowledgments | p. xiii |
Introduction | p. xv |
JSP Foundations | |
Introduction to Internet Technologies | p. 3 |
The Internet as a Client-Server Architecture | p. 4 |
Network Transparency Issues | p. 5 |
Stateful Servers | p. 7 |
HTTP Servers Are Stateless | p. 8 |
HTTP Requests | p. 9 |
The Request Line | p. 9 |
Message Headers | p. 14 |
Message Body | p. 14 |
HTTP Responses | p. 15 |
The Status Line | p. 15 |
Message Headers | p. 16 |
Message Body | p. 17 |
The Rest of the Story | p. 17 |
Echoing the HTTP Protocol | p. 18 |
Client-Side Web Programming | p. 23 |
Extending the Web Browser | p. 25 |
The Role and Limits of Browser Technologies | p. 30 |
Server-Side Web Programming | p. 31 |
Extending the Web Server | p. 34 |
The Role of Java Servlets and JavaServer Pages | p. 38 |
Running Your First JSP Program | p. 39 |
Mastery Check | p. 41 |
JSP Elements: Comments and Directives | p. 43 |
The JSP Container | p. 44 |
JSP Stages | p. 45 |
JSP Scope | p. 46 |
JSP Constructs | p. 48 |
Bird's-Eye View of a Complete JSP Page | p. 49 |
JSP Comments | p. 50 |
Using Comments | p. 50 |
JSP Comment Types | p. 52 |
JSP Directives | p. 54 |
The include Directive | p. 55 |
Include Directive Test | p. 60 |
The page Directive | p. 62 |
Page Directive Test | p. 69 |
The taglib Directive | p. 70 |
Mastery Check | p. 73 |
JSP Elements: Scripting Elements | p. 75 |
The Three Scripting Elements | p. 76 |
How the Container Translates JSP Scripting Elements | p. 77 |
JSP Declarations | p. 81 |
Variables in a JSP Declaration | p. 82 |
Methods in a JSP Declaration | p. 82 |
Declarations of Advanced Java Features | p. 83 |
More About JSP Declarations | p. 84 |
JSP Expressions | p. 87 |
More About JSP Expressions | p. 90 |
JSP Scriptlets | p. 91 |
Variables in Scriptlets | p. 91 |
Expressions in Scriptlets | p. 92 |
Conditionals in Scriptlets | p. 92 |
Iteration in Scriptlets | p. 94 |
Advanced Java Features in Scriptlets | p. 95 |
Exceptions in Scriptlets | p. 97 |
More About JSP Scriptlets | p. 98 |
Scripting Elements | p. 100 |
Mastery Check | p. 104 |
Implicit Objects | p. 107 |
The request Variable | p. 109 |
Request Services | p. 110 |
The response Variable | p. 119 |
Response Services | p. 120 |
Streaming the Contents of a File | p. 126 |
The pageContext Variable | p. 129 |
PageContext Services | p. 130 |
The session Variable | p. 134 |
Session Services | p. 135 |
URL Redirection and URL Includes | p. 137 |
The out Variable | p. 140 |
Out Services | p. 141 |
The application Variable | p. 145 |
Application Services | p. 146 |
The config Variable | p. 155 |
The page Variable | p. 156 |
Page Services | p. 156 |
The exception Variable | p. 157 |
Exception Services | p. 158 |
Mastery Check | p. 159 |
Standard Actions | p. 161 |
JSP Actions | p. 162 |
Standard Actions Versus Custom Actions | p. 162 |
Tag Attributes | p. 163 |
The id Attribute | p. 164 |
The scope Attribute | p. 165 |
The [left angle bracket]jsp:useBean[right angle bracket] Action | p. 166 |
Attributes and Usage Rules | p. 167 |
Processing Steps | p. 167 |
Using [left angle bracket]jsp:useBean[right angle bracket] | p. 170 |
The [left angle bracket]jsp:setProperty[right angle bracket] Action | p. 173 |
Attributes and Usage Rules | p. 174 |
The Two Variants of [left angle bracket]jsp:setProperty[right angle bracket] | p. 175 |
The [left angle bracket]jsp:getProperty[right angle bracket] Action | p. 178 |
Attributes and Usage Rules | p. 178 |
Using [left angle bracket]jsp:getProperty[right angle bracket] | p. 179 |
The [left angle bracket]jsp:include[right angle bracket] Action | p. 180 |
Attributes and Usage Rules | p. 181 |
Using [left angle bracket]jsp:include[right angle bracket] | p. 181 |
The [left angle bracket]jsp:forward[right angle bracket] Action | p. 182 |
Attributes and Usage Rules | p. 183 |
Using [left angle bracket]jsp:forward[right angle bracket] | p. 183 |
The [left angle bracket]jsp:param[right angle bracket] Action | p. 184 |
Attributes and Usage Rules | p. 184 |
A Simple Shopping Cart | p. 185 |
The [left angle bracket]jsp:plugin[right angle bracket] Action | p. 190 |
Attributes and Usage Rules | p. 191 |
Mapping an Applet to a [left angle bracket]jsp:plugin[right angle bracket] | p. 192 |
Inserting a Menu Applet | p. 193 |
Mastery Check | p. 196 |
Tag Libraries | p. 199 |
Why Define Custom Tags? | p. 200 |
Elements of a Tag Library | p. 206 |
Tag Library Formats | p. 206 |
The taglib Directive | p. 207 |
The Tag Library Descriptor | p. 207 |
Tag Handlers | p. 212 |
Life Cycle of a Tag Handler | p. 225 |
Defining Scripting Variables | p. 227 |
The TagExtraInfo Class | p. 227 |
Defining the Scripting Variables | p. 230 |
The Recommended Convention for Defining Implicit Objects | p. 233 |
Defining Implicit Objects | p. 234 |
Exchanging Data Between Actions and Tag Libraries | p. 239 |
Ids and the PageContext Object | p. 239 |
The Runtime Stack | p. 240 |
A Template Using a Tag Library | p. 242 |
Mastery Check | p. 251 |
Building Real-World Applications | |
JSP Architectures | p. 255 |
Patterns in Application Development | p. 256 |
The Idea of Patterns | p. 256 |
The Utility of Patterns | p. 258 |
Architectural Patterns | p. 259 |
Application Tiers | p. 260 |
Splitting the Presentation Tier | p. 264 |
Web Application Architectures | p. 264 |
Object-Oriented Software Design Patterns | p. 267 |
Model-View-Controller | p. 268 |
Mediator | p. 270 |
Command | p. 271 |
Strategy | p. 273 |
Bridge | p. 274 |
Gallery Viewer | p. 277 |
The Application: A Family Center | p. 285 |
Security | p. 286 |
Web-Flow | p. 286 |
Repository | p. 286 |
Mastery Check | p. 287 |
JSP Security | p. 289 |
Basic Application Security | p. 290 |
Authentication | p. 290 |
Authorization | p. 294 |
Integrity | p. 295 |
Confidentiality | p. 297 |
Availability | p. 297 |
Auditing | p. 298 |
Web Authentication | p. 299 |
LDAP Authentication | p. 299 |
Certificate-Based Authentication | p. 300 |
Web Server-Based Authentication | p. 303 |
Configuring Apache Authentication | p. 305 |
Servlet Container Authentication | p. 310 |
Basic Authentication | p. 310 |
Digest Authentication | p. 313 |
HTTPS Client Authentication | p. 314 |
Form-Based Authentication | p. 314 |
Tomcat Security Interceptors | p. 317 |
A Custom Tomcat Security Interceptor | p. 319 |
Enhancing Our Login Pages | p. 323 |
The Elements of Our Security Solution | p. 326 |
The Login and Login Error Pages | p. 326 |
The web.xml File | p. 327 |
The CustomRealm Security Interceptor | p. 328 |
The server.xml Configuration File | p. 332 |
Mastery Check | p. 333 |
Controller and Flow Control in Web Applications | p. 335 |
Controller | p. 336 |
User Input Processing | p. 336 |
Interaction with the Model | p. 339 |
Web Application Workflow and Flow Control | p. 339 |
Simple Flow Control | p. 348 |
Address Book Search | p. 354 |
Advanced Flow Control: The Struts MVC Framework | p. 372 |
Final Thoughts | p. 374 |
Mastery Check | p. 376 |
Integrating a Database | p. 377 |
The Role of External Content Sources | p. 378 |
Managing Large Amounts of Content | p. 379 |
Centralizing, Securing, and Sharing Content | p. 380 |
Providing Dynamic Content | p. 381 |
Accessing Legacy Information Systems | p. 382 |
The JDBC Data Access API | p. 385 |
The JDBC Architecture | p. 385 |
JDBC Basics | p. 387 |
JavaServer Pages and the JDBC API | p. 398 |
Using Jakarta DBTags | p. 401 |
The Family Center Data Model | p. 405 |
Entity Types | p. 405 |
Attributes | p. 407 |
Relationships | p. 408 |
Adding Security to the Family Center | p. 411 |
The Family Center Data Access Approach | p. 413 |
The Bridge Pattern | p. 413 |
Mastery Check | p. 426 |
Appendices | |
Mastery Check Answers | p. 429 |
Introduction to Internet Technologies | p. 430 |
JSP Elements: Comments and Directives | p. 431 |
JSP Elements: Scripting Elements | p. 432 |
Implicit Objects | p. 435 |
Standard Actions | p. 437 |
Tag Libraries | p. 440 |
JSP Architectures | p. 442 |
JSP Security | p. 445 |
Controller and Flow Control in Web Applications | p. 448 |
Integrating a Database | p. 449 |
Creating a Development and Deployment Environment | p. 451 |
Web Servers and Containers | p. 452 |
Apache and Tomcat | p. 453 |
Installing Tomcat | p. 454 |
Starting and Stopping Tomcat | p. 455 |
Web Applications and the WAR Format | p. 456 |
The WAR Directory Structure | p. 458 |
Creating a WAR File | p. 459 |
The Web Application Deployment Descriptor | p. 459 |
Web Applications in Tomcat | p. 461 |
Installing Apache | p. 461 |
Connecting Apache and Tomcat | p. 464 |
Configuring Tomcat (Answer to Question 3) | p. 465 |
Installing the Adapter (Answer to Question 2) | p. 467 |
Configuring Apache (Answer to Question 1) | p. 468 |
Creating a MySQL Database | p. 471 |
Downloading MySQL | p. 472 |
Downloading a JDBC Driver for MySQL | p. 473 |
Installing MySQL | p. 474 |
MySQL Administration | p. 475 |
The mysqladmin Tool | p. 476 |
MySQL Structured Query Language | p. 477 |
MySQL Documentation | p. 479 |
New Features in JSP 1.2 | p. 481 |
The Java 2 Platform | p. 482 |
The Servlet 2.3 Specification | p. 482 |
The XML Syntax | p. 483 |
Validation of JavaServer Pages | p. 484 |
Enhanced Tag Library Support | p. 484 |
Improved Support for Page Authoring | p. 486 |
Better Localization Support | p. 486 |
Fixing the "Flush Before You Include" | p. 487 |
Backward Compatibility | p. 487 |
Index | p. 489 |
Table of Contents provided by Syndetics. All Rights Reserved. |