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
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 Concepts
Workbench Features and Supported Standards
Eclipse, Workbench, Workspaces and Perspectives
Enabling Roles and Capabilities
Creating Projects and Setting Project Properties
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
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 Syntax and JSP Elements
Standard Actions: useBean, setProperty, getProperty, include, forward and param
JSP and JavaBean Interaction
Scope Attributes
Calling JSPs from Servlets
Relative URLs
RAD: Page Designer Basics
Page Designer Toolbars and Views
Creating a JSP
JSP Models: Struts, Portlet and Struts Portlet
Using and Customizing the Palette View
Adding Basic HTML Tags, Tables and Form Tags
Inserting JavaBeans and Standard JSP Tags
Defining Styles and Editing Style Sheets
RAD: Import and Export Wizards
Supported Files and Resources
Importing EARs, JARs, Projects, Tag Libraries and Individual Files
Addressing Warnings and Errors
RAD Source Files
Exporting Resources
Generating a JAR Description
Specifying a Manifest File
JavaServer Page Programming
JSP Documents
XML Syntax
Standard Actions: jsp:element, jsp:attribute, jsp:body, jsp:text and jsp:output
Directives: Page, Include and Taglib
Scripting Elements: Declarations, Scriptlets and Expressions
Implicit Objects
Error Handling
JSP Configuration
Internationalization
RAD: Page Designer Advanced Features
Page Properties
HTML Syntax Validation and Document Cleanup
Scripting Variables
Using Content Assist and the Quick Edit View
Using and Customizing the Snippets View
Creating a Faces JSP
Added JSF Components
Using the Page Data and Client Data Views
JSP Expression Language
Benefits
Expression Syntax
Variable Resolution
Implicit Objects
Literals and Reserved Words
Using and Declaring Custom Functions
Considerations
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
JSTL
JSTL Features
Core Actions: Variable Support, Conditional Processing and Iteration
Core Actions: Error Handling, URL Manipulation and Exposing Variables
Understanding Locales and Resource Bundles
Internationalization: Defining the Default and Fallback Localization Contexts
Internationalization: Overriding the Client’s Locale and Displaying Localized Messages
Internationalization: Customizing the Time Zone and Formatting Numbers and Dates
XML: Parsing, Transformation and XPath Expressions
SQL Actions: Creating Data Sources and Transactions
SQL Actions: Executing SQL Statements and Specifying Parameters
JSTL Functions: String Manipulation and Collection Support
JSP Tag Files
Benefits
Tag File Basics
Scopes and the JspContext
JSP Fragments
Tag File Actions: jsp:invoke and jsp:doBody
Directives: Tag, Attribute and Variable
Variable Attributes and Scope
Implicit Objects
RAD: Data Perspective
Using the Database Explorer
Creating and Connecting to a Database
Using the Database Definitions View
Defining Schemas, Tables and Views
Generating DDL and Deploying From RAD
Using the DB Output and SQL Scrapbook Views
Java Database Connectivity
JDBC 3.0 Specification
Using the DriverManager
Connection Management
Using & Deploying a Data Source
Getting & Closing Connections
Executing Statements, Prepared Statements and Stored Procedures
Result Sets: Moving the Cursor and Retrieving Data
Error Handling and SQLExceptions
Improving JDBC Efficiency
Transactions
JSF Basics
JSF Architecture
JSF Application Components
Development Steps
UI Component Model
Page Development
HTML UI Components and Faces Client Components
Navigation Model, Navigation Rules and Navigation Cases
Binding, Developing and Declaring Backing Beans
Faces Request Life Cycle
Enterprise JavaBean Overview
What are Enterprise JavaBeans and Why Use Them?
The EJB Container and EJB Server
Session Bean Overview
Entity Bean Overview
Message-Driven Bean Overview
EJB Classes and Interfaces
Local vs. Remote Client View
EJB Deployment
Looking Up and Invoking an EJB
RAD: J2EE Perspective
Creating EJB Projects and Generating EJB Client Projects
Defining Dependencies
Annotation-Based Programming
Creating Session Beans
Promoting Methods and Using EJB Snippets
Editing the EJB Deployment Descriptor
Generating Deployment Code
Using the Universal Test Client
Using the Application Editor: WebSphere V5 and WebSphere V6
Adding J2EE Modules and Utility JARs
J2EE Migration
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
Deploying to WebSphere
WebSphere Architecture
Web Server Plug-ins
Web and EJB Containers
Application Server Services
Data Access
Virtual Hosts
WebSphere Administration Architecture
Administrative Console: Logging In, Navigating the Workspace and Saving Changes
Managing Servers, Virtual Hosts, Deployed Applications and Shared Libraries
Application Installation: Default Bindings and Installation Options
Application Installation: Mapping Servers, Virtual Hosts and Security Roles
Application Installation: Specifying Data Sources, Backends and JNDI Names
Appendix A. J2EE Design Patterns
What Are Design Patterns and Why Use Them?
MVC, 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