Saturday, September 25, 2010

Art of Java Web Development












contents
preface xvii
acknowledgments xix
about the book xxi
about the cover illustration xxx
PART I THE EVOLUTION OF WEB ARCHITECTURE
AND DESIGN....................................................... 1
1 State-of-the-art web design 3
1.1 A brief history of Java web development 4
1.2 The impotance of design patterns 6
The Model-View-Controller design pattern 7 The emergence of
Model 2 9 Evolution 10
1.3 Using frameworks 11
A flavor of the Struts framework 12 A flavor of the Turbine
framework 14 Objectively choosing a framework 20
1.4 Best practices 20
Business rules 20 Where should the rules reside? 22
Leveraging best practices 24
1.5 Summary 25
2 Building web applications 27
2.1 Building web applications with servlets 29
The eMotherEarth servlet application 29
Evaluating the servlet approach 50
2.2 Building web applications with JSP 50
The JSP eMotherEarth application 51
Evaluating the JSP approach 59
2.3 Summary 60
3 Creating custom JSP tags 61
3.1 The case for custom tags 62
3.2 The tag interfaces 63
The Tag interface 63 The IterationTag interface 64
The BodyTag interface 65
3.3 Building simple tags 66
The HtmlSqlResult tag 66 Registering the tag 71
3.4 Validating tag attributes 75
Adding DbPool to the application tag 75
3.5 Using prebuilt tags 80
Using JSTL 81 Using other taglibs 84
3.6 Custom tag considerations 86
Resource usage 87 Building a framework 88
3.7 Now that we’re here, where are we? 88
3.8 Summary 89
4 The Model 2 design pattern 91
4.1 Using Model 2 as your framework 92
The Model 2 schedule application 93
Options in Model 2 116
4.2 Parameterizing commands with controller servlets 117
An example of parameterizing commands 118
Advantages and disadvantages 127
4.3 Summary 128
PART II WEB FRAMEWORKS ........................................ 131
5 Using Struts 133
5.1 Building Model 2 Web applications with Struts 134
The Struts schedule application 134 Value objects as form
beans 136 Objectifying commands with Struts’ actions 137
Configuring Struts applications 139 Using Struts’ custom tags
to simplify JSP 142 Internationalization with Struts 145
Struts’ support for data entry 147 Declarative validations 151
5.2 Evaluating Struts 156
5.3 Summary 157
6 Tapestry 159
6.1 Overview 160
6.2 The architecture 160
6.3 A simple Tapestry application 162
Tapestry Hello, World 162
6.4 The Tapestry framework 167
Framework classes and interfaces 167 Components 170
6.5 Scheduling in Tapestry 173
Bootstrapping the application 173 The Home page 176
The custom table component 180 The Add page 185
6.6 Evaluating Tapestry 192
Documentation and samples 192 Debugging support 195
Using Tapestry 196
6.7 Summary 197
7 WebWork 199
7.1 Overview 200
The architecture 201 The configuration 202
7.2 Key concepts 203
Actions 204 Key interfaces 204 The value stack 205
Expression language 206 BeanInfo classes 207
Templates 207
7.3 Scheduling in WebWork 208
The configuration 208 The View page 209
The Add page 214 Validations 220
7.4 Evaluating WebWork 224
7.5 Summary 226
8 InternetBeans Express 227
8.1 Overview 228
8.2 The architecture 230
DataExpress 230 InternetBeans Express 233
8.3 InternetBeans Express components 234
ixPageProducer 234 ixComponents 236
8.4 Scheduling with InternetBeans 237
Data connectivity 238 The View page 242 The Add
page 245 Validations 249
8.5 JSP custom tags 255
8.6 Evaluating InternetBeans Express 257
Documentation and samples 257
Using InternetBeans Express 258
8.7 Summary 259
9 Velocity 261
9.1 Overview 262
9.2 The architecture 263
9.3 Key concepts 265
Setting up Velocity 265 The Velocity Template
Language 268 Context 269
9.4 Scheduling with Velocity 269
The View page 271 The Add page 274
Validations 278
9.5 Evaluating Velocity 281
Documentation and samples 281 Using Velocity 282
9.6 Summary 282
10 Cocoon 283
10.1 Overview 284
10.2 The architecture 285
The publishing framework 285 The web framework 288
10.3 Key concepts 289
The publishing framework 289 The sitemap 295
The web framework 299
10.4 Scheduling in Cocoon 302
The sitemap 303 The action 304 The view 305
10.5 Evaluating Cocoon 307
Documentation and samples 307 Source code 308
Debugging 308
10.6 Summary 309
11 Evaluating frameworks 311
11.1 Evaluation criteria 312
Suitability to the application 312 Documentation 315
Source code 316 Tool support 317 External criteria 318
11.2 Design considerations 319
Adherence to good design principles 319 The user
interface 320 Innovative features 321
Insularity 322 “Feel” 322
11.3 What I like 323
Transparent infrastructure 323 Innovative ideas 323
Ultra-high cohesion and low coupling 324
Evaluating frameworks as a hobby 324
11.4 Summary 324
PART III BEST PRACTICES............................................ 327
12 Separating concerns 329
12.1 Using interfaces to hide implementation 330
JDBC interfaces 331 Interfaces in frameworks 331
Decoupled classes 332
12.2 Using JavaBeans 333
Model beans 334
12.3 Using Enterprise JavaBeans 337
The EJB architecture 338 Porting from JavaBeans to Enterprise
JavaBeans 340 Using EJBs in web frameworks 360
Managing JNDI context 361
12.4 Performing validations with model beans 362
Client-side validations 362
Building client-side validations from the server 365
12.5 Summary 368
13 Handling flow 371
13.1 Application usability options 372
Building the base: eMotherEarth.com 372 Page-at-a-time
scrolling 378 Sortable columns 384
User interface techniques in frameworks 389
13.2 Building undo operations 390
Leveraging transaction processing 391 Using the Memento
design pattern 394 Undo in frameworks 401
13.3 Using exception handling 401
The difference between technical and domain exceptions 401
Creating custom exception classes 402 Where to catch and
handle exceptions 403 Exceptions in frameworks 406
13.4 Summary 407
14 Performance 409
14.1 Profiling 410
Measuring memory 410 Performance profiling 412
Load testing 419 Performance of profiling frameworks 421
14.2 Common performance pitfalls 421
Object creation 422 Extraneous object references 424
String usage 426
14.3 Pooling 427
Simple object pools 427 Soft and weak references 428
Commons pools 433 Pooling in frameworks 440
14.4 Designing for scalability 440
When to scale up to EJB 441
Molding your architecture for the future 441
14.5 When to optimize 442
14.6 Summary 443
15 Resource management 445
15.1 Caching strategies 446
Caching with the Flyweight design pattern 447 Caching with
the Façade design pattern 453 Resource management
in frameworks 469
15.2 Other resources you need to manage 470
Effectively using JNDI 470 Using lazy instantiation 472
Working with web collections 472
15.3 Summary 473
16 Debugging 475
16.1 Debugging web applications 476
16.2 Debugging with the SDK 483
Starting the debugger 483 Running the debugger 486
Breakpoints and steps 489 Accessing variables 490
Effectively using jdb 492
16.3 Debugging with IDEs 493
Debugging with NetBeans 493 Debugging with JBuilder 498
Differences between debuggers 502
16.4 Evaluating debuggers 505
16.5 Debugging in frameworks 506
Struts 506 Tapestry 507 WebWork 507
InternetBeans Express 507 Velocity 508 Cocoon 508
16.6 Logging 508
General logging concepts 509 SDK logging 512
log4j logging 516 Choosing a logging framework 519
Logging in frameworks 519
16.7 Summary 520
17 Unit testing 521
17.1 The case for testing 522
Agile development 522 Unit testing in web applications 524
17.2 Unit testing and JUnit 525
Test cases 525 Testing entities 525 Running tests 528
Test suites 529 Testing boundaries 530 Tool support 534
17.3 Web testing with JWebUnit 536
JWebUnit TestCases 537 Testing complex elements 539
17.4 Summary 541
18 Web services and Axis 543
18.1 Key concepts 544
18.2 Axis 545
Architecture of Axis 546 Axis tools 547
18.3 Calling web services 551
18.4 eMotherEarth web services 553
Configuration 553 Orders 556 Calling the web service 559
18.5 Summary 562
19 What won’t fit in this book 563
19.1 Persistence 564
Plain old Java objects 564 Enterprise JavaBeans 564
Java data objects (JDO) 565 Hibernate 566
19.2 HTML and the user interface 566
HTML/XHTML 567 Cascading Style Sheets 567
19.3 JavaScript 568
19.4 Summary 569
bibliography 570
index 571

Download
Another Java Books
Another Web Programming Books

No comments:

Post a Comment

Related Posts with Thumbnails

Put Your Ads Here!