Web and Application Server Concepts
Web Application Design
Model-View-Controller
Multi-Tier Architecture
WebSphere Application Server Platforms
URLs, HTTP and SSL
HTTP Requests and Responses
Web Server and Application Server Roles
Request Processing
J2EE Architecture Overview
Enterprise Application Overview and Development Cycle
J2EE Architecture and Containers
Applet, Servlet and JSP Overviews
JDBC, JNDI and JTA
EJB, JMS and RMI Over IIOP
JavaMail, JAF, JAAS and JACC
XML and JAXP
New in J2EE 1.4
Web Services Support: JAX-RPC, SAAJ, Web Services for J2EE and JAXR
J2EE Connector, Management and Deployment
Development Roles and Deployment Descriptors
RAD Concepts
Workbench Features and Supported Standards
Eclipse, Workbench, Workspaces and Perspectives
Enabling Roles and Capabilities
Creating Projects and Setting Project PProperties
Building Projects and Defining Dependencies
Adding Application Components
Using Editors and Views
View Toolbars and Fast Views
Customizing Perspectives and Creating User Defined Perspectives
Navigating the Workspace and Using Bookmarks
Using the Tasks and Search Views
Getting Help and Using Cheat Sheets
Servlet Basics
What are Servlets and Why Use Them?
Web Container Responsibilities
Servlet Lifecycle Methods
Servlet Invocation
HttpServlet
Multithreading Issues
Registering Servlets by Name
Handling Requests and Responses
Response Content Methods
Reading a Post
Scope Attributes
Passing Data Between Servlets
What are Filters and Servlet Event Listeners?
RAD: The Java Perspective
Creating Packages and Classes
Java Editor Features
Pop-up Outlines and Folding
Code and Content Assist
Import Assistance and Refactoring
Generating, Overriding and Implementing Methods
Quick Fix Capabilities
Using the Declaration, Problems and Console Views
Outline Options and Source Actions
Productivity Tips and Keyboard Shortcuts
RAD: Debug Perspective
Debug Options and Views
Line Breakpoints, Exception Breakpoints,
Method Breakpoints and Watchpoints
Breakpoint Properties: Defining Conditional
Breakpoints and Hit Counts
Debug Actions
Step-by-Step Debugging
Debugging JSPs
Remote Debugging
Application Assembly and Packaging
J2EE Deployable Units
Assembly Process
J2EE Modules
Assembling J2EE Applications
Packaging Checklist
Deployment Descriptor Elements (EJB, Web, Connector, Client and Application)
IBM Extensions and Bindings
RAD: Web Perspective
Creating Web Projects and Adding Web Project Features
Annotation-based Programming
Web Project Structure and Default Files
Creating Servlets
Using the Properties View
Editing the Web Deployment Descriptor (web.xml)
Defining IBM Extensions and Bindings (ibm-web-bnd.xmi and ibm-web-ext.xmi)
RAD: Server Perspective
Test Environment Installation
Server Types
Creating a Server and Server Configuration
Running Applications on a Server
Defining the Target Server
Servers View and Actions
Editing the Server Configuration for WebSphere V5
Editing the Server Configuration for WebSphere V6
Embedding Server Configuration Data in an Application (WebSphere V6)
Reloading Resources Running on the Server
Servlet Programming
ServletRequest and ServletResponse Interfaces
HTTPServletRequest and HTTPServletResponse Methods
Retrieving the Request URI
Response Buffering
Accessing the ServletContext Object
Retrieving Context Initialization Parameters
The RequestDispatcher Interface
Forwards and Includes
Internationalization
JSP Basics
What are JavaServer Pages and Why Use Them?
JSP Translation and Execution
JSP Elements
Standard Actions: useBean, setProperty, getProperty, include, forward and param
JSP and JavaBean Interaction
Scope Attributes
Calling JSPs from Servlets
Relative URLs
Filters
The Filter Interface
Filter Deployment and Lifecycle
Performing Filtering Tasks
Filter Chain Invocation
Wrapping Requests and Responses
Accessing the Filter Configuration Object
Implementing the Destroy() Method
Using Cookies and Sessions to Manage Application Data
The HttpSession Interface
Managing Session Data
Session Tracking Mechanisms
Sessions at Runtime: Client & Server
Invalidating a Session
The Serializable Interface
HttpSession Thread Safety and Events
Sending and Retrieving Cookies
Cookie Attributes
Proper Usage of Cookies
Distributable Web Applications
Servlet Event Listeners
Implementing and Deploying Listeners
Implementing the ServletContextListener
Interface
The ServletContextAttributeListener Interface
Responding to HttpSessionEvents
The HttpSessionAttributeListener and ServletRequestAttributeListener Interfaces
Session Activation and Binding Listeners
Receiving ServletRequest Notifications
Thread Considerations
Design Considerations: Controlling Application
Flow
Web Application Design
Controller Servlets
Site Design
Handling Responses and Managing State
Handling Errors and Invalid Transitions
Controlling Page Caching
HTTP Headers
Memento Design
JSP Tag Extensions
Tag Extension Features
Tag Types: Simple and Classic
Classic Tag Handlers: Tag, IterationTag and BodyTag
Classic Tag Handler Lifecycles
Convenience Classes: TagSupport and BodyTagSupport
The TryCatchFinally and DynamicAttributes
Interfaces
Defining SimpleTag Handlers
Simple Tag Handler Lifecycle
The SimpleTagSupport and TagAdapter Classes
Packaging Tag Libraries and Defining Tag
Library Descriptors
Referencing Tag Libraries in the Web
Deployment Descriptor
Using Custom Tags in a JSP
Appendix A. J2EE Design Patterns
What Are Design Patterns and Why Use Them?
Composite View, Front Controller, Intercepting
Filter and View Helper Patterns
Transfer Object, Session Façade, Business
Delegate and Service Locator Patterns
Data Access Object, Fast-Lane Reader and Value
List Handler Patterns
Composite Entity and Factory Design Patterns
Putting It All Together
Appendix B. XML Concepts
XML Benefits and Features
Document Structure and Components
Elements and Attributes
Names and Name Tokens
CDATA, Entities and Entity References
XML Validation: DTDs and Schemas
Namespaces
XML Parsers
JAXP, SAX, DOM and JDOM APIs
XSL and XSLT