Introduction to Servlets
- Servlet Architecture and Advantages
- The Role of Servlets in Web Application Design
- Servlet Runtime Environment
- Servlet Lifecycle
|
Developing Servlets
- Servlet Classes and Interfaces
- Working with Request and Response objects
- Processing GET and POST Requests from Web Clients
- Retrieving Parameters from HTML Client Forms
- Generating Dynamic HTML Responses
- Initializing Servlets
- Destroying and Freeing Resources in Servlets
- Controlling Single and Multi-Threading in a Servlet
- Deploying Servlets to a Web Application Server
- Building the WAR File
- The web.xml descriptor File
|
Using ANT
- Understanding the ANT build file
- Designing ANT Targets
- Using ANT Standard Tasks
- Using ANT Properties
- Compiling and Executing Java Applications
- Building WAR, EAR and JAR Deployment Files
|
Developing JavaServer Pages (JSPs)
- Understanding JSP/Servlet Translation
- Elements of JSP Syntax
- JSP Page Directives
- JSP Declarations
- Displaying JSP Expressions
- Writing Scriptlets
- Deploying JSPs
- Using JavaBeans in JSPs
- JavaBean Architecture
- Creating JavaBeans
- Using JavaBeans in JSP Pages
- XML-format JSP Documents
|
Writing Tag Handlers
- Analyzing Tag Library Descriptor Files
- Creating Tag Library Descriptor Tags
- Using Tag Handler Methods to Generate Dynamic Web Content
- Handling Tag Attributes and Attribute Validation
- Processing Tag Body Content
- Working with the TagExtraInfo Class
- Developing and Deploying Tag Files
|
Developing Secure Web Applications
- Understanding JAAS Concepts
- Java EE Authentication and Authorization
- Defining Security Roles
- Declaring Security Constraints
- Using Programmatic Security
- Using Java SE Security Features
- Encryption, Message Digests and Keys
|
Session Management and Communication Between Web Components
- Storing Shared, Scoped Information
- Java EE Session Management
- Maintaining Sessions via URL Rewriting
- Using Cookies
- Using Hidden Form Fields to Track Session IDs
- Using the HttpSession Interface
- Transferring Control via Request Dispatching
- Request Redirection
|
Accessing Databases with JDBC
- Understanding the JDBC Connectivity Model
- Accessing Data Sources through JNDI
- Connecting to a Database
- Executing SQL Queries and Updates
- Processing Result Sets
- Using Scrollable and Sensitive Result Sets
- Working with ResultSetMetaData Classes
- Utilizing Parameterized Statements
- Calling Stored Procedures
- Handling SQLExceptions
- Controlling Transactions
- Using Batch Updates
|
Object Serialization
- Purpose of Serialization in the Java EE Framework
- Creating Serializable Objects
- Reading and Writing SerializableObjects
- Controlling Serialization
|
Advanced Topics - Filters, Listeners and Resource Injection
- Using Filters to process Requests and Responses
- Controlling the Filter Chain
- Writing Filters
- Wrapping Requests and Responses
- Writing and Deploying Listeners
- Using Annotations in Servlet 2.5 Applications
- Controlling Resource Injection
- Using Special Resource Types
|
Using the Java Messaging Service (JMS)
- Architecture of JMS
- Using Classes and Interfaces in the JMS API
- Developing a JMS Producer and Consumer
|
Introduction to Enterprise JavaBeans
- Session Beans
- Message-Driven Beans
- Entity Beans
- EJB Feature History
- Writing EJBs
- Annotations and EJB 3.0
- Annotation Syntax
- Annotation Placement
|
Stateless Session Beans
- Stateless Session Bean Life Cycle
- Writing a 2.1 Session Bean
- The Remote Interface
- The Remote Home Interface
- Session Bean Implementation
- Writing Lifecycle Methods
- The Session Context
- Packaging EJBs
- EJB 2.1 Deployment Descriptors
- Using a Session Bean
- Client EJB Refs
- EJB Remote Communication
- Removing Bean References
|
EJB 2.1 Entity Beans
- Persistence Mechanisms - BMP, CMP
- Local Interfaces
- Local and Local Home Interfaces
- Entity Bean Implementation
- Entity vs. Session Bean
- An Entity Bean Client
- Entity Bean Lifecycle Methods
- Entity Bean Lifecycle
- The Entity Context
- Create / Remove
- Load / Store
- Passivation / Activation
- Defining Primary Keys
|
Stateful Session Beans
- Stateful Session Bean Life Cycle
- Passivation/Activation
- Time-Outs
|
JavaServer Pages (JSPs)
- JSP Lifecycle
- Elements of a JSP
- Directives, Declarative, Scriptlets
- Writing a JSP
- Objects Available in a JSP
- Repeated content in JSPs
- Translation-Time and Request-Time Includes
- Using JavaBeans in a JSP
- Session Management
- Mixing JSPs and Servlets
- Installing and Using Tag Libraries
- The JSP taglib Directive
- The Tag Library Descriptor
|
EJB 3.0 Session Beans
- Session Bean Annotations
- Callback Annotations
- Java EE 5 Dependency Injection
- Injection Targets
- Class-based Injection
|
EJB 3.0 Entities and the Java Persistence API
- JPA Philosophy
- EJB 2.1 CMP vs EJB 3.0 Entities
- Open Source JPA Persistence Providers
- Using JPA Overview
- Persistence Units
- persistence.xml
- Managed Classes
|
Message Driven Beans
- Message-Driven Bean Life Cycle
- EJB 2.1 Message-Driven Bean
- The Message-Driven Context
- EJB 2.1 Deployment Descriptor
- EJB 3.0 Message-Driven Bean
- EJB 3.0 Annotations for MDBs
|
EJB 3.0 Entities and the Java Persistence API
- JPA Philosophy
- EJB 2.1 CMP vs EJB 3.0 Entities
- Open Source JPA Persistence Providers
- Using JPA Overview
- Persistence Units
- persistence.xml
- Managed Classes
|
Container-Managed Persistence (CMP)
- Lifecycle Methods and CMP
- Persistent Properties
- Deploying a CMP Entity Bean
- CMP Entity Bean Deployment Descriptor
- Container-Managed Relationships (CMR)
- Implementing Finder Methods
- Writing EJB-QL Statements
|
Using the JPA Entity Manager
- EntityManager Methods
- Synchronizing Entities
- Detached Entities
|
Entity Classes
- Object-Relational Mapping
- Persistent Fields/Properties
- Mapping Persistent Fields
- Mapping Annotations
- Primary Key
- Subclassing Entities
- Embedded Objects
- Composite Primary Keys
- Entity Relationships
- Relationship Annotations
|
The Query Interface
- Java Persistence Query Language
- Named Queries
- Query Input Parameters
- Native SQL Queries
|
JPA Optimization Features
- Optimistic Locking
- Lazy Fetching
- Lifecycle Callbacks
|
The Java Transaction API (JTA)
- Transaction Demarcation
- Transaction Status
- Bean-Managed Transactions
- Container-Managed Transactions
- EJB 2.1 Deployment Descriptor for CMT
- EJB 3.0 Transaction Annotations
- Voting to Roll Back
- Transactions and Entity Beans
- Transactions and JPA Entities
- Transactions and Message-Driven Beans
- Transactions and Stateful Session Beans
|
EJB Security
- JAAS Concepts
- Java Security
- Java EE Authentication
- Java EE Authorization
- Role-Based Authorization for EJBs
- Principal Propagation
- Declaring Security Roles
- Using Security Roles
- Programmatic Security
- Assigning Security Roles to a Bean
- EJB 3.0 Security Annotations
- Enterprise Security Strategies
|
EJB Advanced Topics
- EJB Timer Service
- Accessing the Timer Services
- EJB 3.0 Timer Annotations
- Interceptors
- EJB 3.0 Interceptor Annotations
|
JAX-WS Web Services
- Typical Web Services Scenario
- Advantages and Issues in Web Services
- Web Services Technologies: SOAP and WSDL
- Web Services in Java EE and Java SE
- "JAX" Specifications
- Java Web Services Specifications
- Writing a JAX-WS Web Service
- The Service Implementation Bean
- JAX-WS Deployment Descriptors
- JAX-WS Client-Side Programming
- JAX-WS Tools
- RESTful Web Services
|
Introduction to Java EE Web Applications
- Server-Side Application Development using Java EE
- The Role of Java EE Containers, Components and Services
- Using Web-Based Components in Application Design
- Structure of Java EE Web Components
- Deploying Web Applications
- Java EE Web Container Services
|