| Foreword |
xi |
| Acknowledgments |
xiii |
| Introduction |
xvii |
PART I - Technology Overviews
|
|
1
J2EE Basics
|
3 |
| What Do I Need to Know About Database Application
Architecture? |
5 |
| What Is J2EE? |
7 |
| J2EE and Java EE 5 |
7 |
| J2EE Parts |
8 |
| J2EE Platform |
9 |
| What Non-J2EE Web Technologies Are Popular in J2EE
Environments? |
19 |
| User Interface Technologies |
19 |
| Web Services |
22 |
| How Do J2EE Architectures Differ from Traditional
Architectures? |
23 |
| How Do I Choose Between J2EE and Oracle Forms and
Reports? |
24 |
| Oracle’s Direction |
24 |
| Oracle Forms or J2EE? |
25 |
| Oracle Reports or J2EE? |
27 |
| Should I Pay Attention toNET? |
28 |
| How Does Oracle Forms Services Fit into J2EE? |
28 |
2
Web Communications
|
31 |
| How Does HTTP Work? |
32 |
| HTTP Request |
33 |
| HTTP Response |
36 |
| Methods |
39 |
| Other HTTP Features |
40 |
| What Are the Steps in a Web Application Roundtrip? |
40 |
| How Does Oracle Forms Services Use HTTP? |
43 |
3
JDeveloper and ADF as RAD Tools
|
45 |
| What Do We Mean by RAD? |
46 |
| What Is a Framework? |
48 |
| The Anatomy of a Framework |
48 |
| What Characterizes a Good
Framework? |
50 |
| Oracle Forms as a Framework |
52 |
| What Is Oracle ADF? |
54 |
| How Do I Choose Technologies? |
56 |
| User Interface Technology |
57 |
| Database Integration |
59 |
| Why Is JDeveloper an IDE for RAD? |
61 |
| A Familiar IDE? |
62 |
| Getting Started with JDeveloper |
63 |
| Laying Out the IDE |
71 |
| Where Are the Wizards? |
73 |
| The RAD Is in the Frameworks |
76 |
4
Required Web Languages and Java Language Basics
|
79 |
| Which Languages Do I Really Need to Know? |
80 |
| How Much Code Will I Need to
Write? |
81 |
| How Much of Which Languages Do I
Need to Know? |
82 |
| What Do I Need to Know About XML? |
83 |
| Which Java Concepts Are Important? |
85 |
| Java Foundations |
85 |
| Control Structures |
97 |
| Datatypes |
100 |
| Operators |
103 |
| Resources |
104 |
5
JavaServer Faces Basics
|
107 |
| Why Was JSF Developed? |
109 |
| What Languages Other than Java Are Important to JSF
Work? |
110 |
| What JSF Concepts Do I Really Need to Know Now? |
118 |
| What Is JSF? |
118 |
| Runtime Architecture |
119 |
| JSF-Oriented Files |
122 |
| Components |
125 |
| Designing Cross-Platform
Interfaces |
132 |
| Where Can I Find Additional Information About JSF? |
133 |
| Websites |
133 |
| Printed Books |
134 |
6 Business Services in ADF
|
135 |
| How Do I Issue a Query to the Database? |
136 |
| 1. Set up an Application
Workspace and Project for ADF Business Components |
137 |
| 2. Create the Query Object |
137 |
| 3. Define the Query |
138 |
| 4. Expose the Query |
141 |
| 5. Test the Query |
143 |
| How Can I Update Data? |
145 |
| 1. Create an Entity Object |
146 |
| 2. Create an Updateable View
Object |
147 |
| 3. Define the View Object
Attributes |
148 |
| 4. Refine the View Object Query |
148 |
| 5. Test the View Object |
149 |
| How Do I Generate a Primary Key Value? |
149 |
| Using a Database Trigger to
Allocate Sequences |
150 |
| Mutating Data |
153 |
| How Do I Handle Transactions? |
154 |
| How Does Record Locking Work? |
158 |
| ADF Business Component
Configurations |
159 |
| Where Is the Login Dialog? |
163 |
| Connection Pooling |
163 |
| Security the J2EE Way |
163 |
| How Do I Define Business Rules? |
164 |
| Database Referential Integrity
Constraints |
164 |
| Data Content Validations |
168 |
| Complex Validations and Rules |
170 |
| Evaluation Order of Validations |
172 |
| How Can I Dynamically Change a Query? |
174 |
| How Can I Interface ADF BC with PL/SQL? |
177 |
| Calling a Stored PL/SQL Procedure |
177 |
| Returning Data from PL/SQL to ADF
BC |
180 |
| Basing a Entity Object on PL/SQL |
182 |
7
The ADF Model Layer
|
185 |
| How Do I Create Data-Bound Pages? |
186 |
| The Data Control Palette |
187 |
| Using the Data Control Palette |
188 |
| "Drop as" UI Options |
189 |
| What Files Are Involved in Data Binding? |
200 |
| Defining the Data Control |
200 |
| Using the Data Control |
205 |
| A Binding File Summary |
212 |
8
ADF Model Advanced Bindings
|
213 |
| How Can I Edit Data Bindings? |
214 |
| Attribute Bindings |
216 |
| Table Bindings |
218 |
| Action Bindings |
222 |
| Method Bindings |
230 |
| List Bindings |
232 |
| Navigation List Bindings |
237 |
| Boolean Bindings |
238 |
| Tree Bindings |
239 |
| Cleaning Up Bindings |
246 |
| What Is an Iterator? |
246 |
| How Can I Control Execution in the ADF Model? |
250 |
| Another Look at Executables |
251 |
| Overriding and Adding to the ADFm
Life Cycle |
253 |
| What Are Parameters? |
257 |
| Populating Parameters |
257 |
| How Do I Write Code Using the ADF Model? |
258 |
| Access to Data and Methods |
258 |
| Executing Methods and Operations |
261 |
PART II - Developing the Application
|
|
9 Your First JSF
|
265 |
| Hands-on Practice: Create a JSF Login and JSF Home Page |
266 |
| I. Create the Application
Workspace and Project |
268 |
| II. Diagram the Page Flow |
272 |
| III. Create the Login and Home
Pages |
274 |
| IV. Add Components to the Login
Page |
282 |
| V. Add Components to the Home Page |
292 |
| VI. Add Navigation and Validation
Logic to the Application |
298 |
| Centralizing Messages |
303 |
| Hands-on Practice: Create and Call a Message Bundle |
305 |
| Hands-on Practice: Access Message Bundle Messages with
EL |
306 |
10 Application Design Principles and Sample Application
Overview
|
309 |
| System Design |
310 |
| System Design Tools and the SDLC |
310 |
| Application Design Considerations |
312 |
| Best Practices |
317 |
| Sample Application System Design |
320 |
| Database Design |
320 |
| Application Design |
322 |
| Hands-on Practice: Create the Workspace and Projects |
331 |
11 Home Page and Menus
|
333 |
| Hands-on Practice: Create the Home Page and Menus |
334 |
| I. Prepare the Model Project |
335 |
| II. Prepare the ViewController
Project |
341 |
| III. Create a Template |
343 |
| IV. Copy the Template File and
Customize the Copies |
356 |
| V. Complete the Home Pages |
361 |
12 Search Page
|
365 |
| Search and Edit Functions |
366 |
| Hands-on Practice: Develop the Employee Search Page |
367 |
| I. Prepare the Model Objects |
368 |
| II. Add Components to the Search
Page |
388 |
| III. Refine the Search Page
Functionality |
396 |
13 Edit Page
|
415 |
| Hands-on Practice: Complete the Edit Page |
416 |
| I. Prepare the Model Components |
417 |
| II. Create the Employees Edit Page |
422 |
| III. Finish Navigation from the
Search Page |
433 |
| IV. Build a Pulldown List and LOVs |
438 |
14 Adding Security
|
449 |
| Application Security |
450 |
| Security in Oracle Forms and
Oracle Reports Applications |
450 |
| Security in Web Applications |
450 |
| Hands-on Practice: Set Up Security in the Sample
Application |
457 |
| I. Configure Container Security |
458 |
| II. Define Application Security
Settings |
461 |
| III. Add Security to the User
Interface |
476 |
PART III - Additional Techniques
|
|
15 Sample Application Enhancements
|
485 |
| Hands-on Practice: Load Audit Columns Using a Database
Procedure and Application Context |
487 |
| I. Create the Database Objects |
488 |
| II. Set the Context from the
Application |
492 |
| Hands-on Practice: Rename an ADF-Oriented JSF JSP File |
496 |
| Prevent SQL Injection Attacks |
497 |
| Securing Find Mode |
499 |
| Invoke Partial Page Rendering |
505 |
| Using PPR |
505 |
| Hands-on Practice: Use PPR to Disable the Menu Until
Outstanding Changes Are Committed |
507 |
| Define Global Format Masks |
509 |
| Hands-on Practice: Apply Standard
Formatting to the Salary Field |
509 |
16 Oracle JHeadstart
|
511 |
| What Is JHeadstart? |
512 |
| JHeadstart Benefits |
512 |
| Using JHeadstart |
513 |
| Understanding the Application Definition |
515 |
| Creating an Application Definition |
515 |
| The Application Definition Editor |
516 |
| Contents of the Application
Definition |
517 |
| Running the JHeadstart Application Generator |
523 |
| Generator Templates |
524 |
| Generator Outputs |
524 |
| Making and Preserving
Post-Generation Changes |
526 |
| Running the Generated Application |
528 |
| Examples of Generated Screens |
528 |
| The Role of the JHeadstart Runtime |
532 |
| JHeadstart Designer Generator |
533 |
| Design-Capturing Oracle Forms in
Oracle Designer |
534 |
| Migrating Oracle Forms Applications |
535 |
| Is the Application Suitable for a
Partial Migration? |
536 |
| How Do I Select a Migration Tool? |
536 |
| Licensing, Support, and Other Resources |
538 |
| Index |
541 |