
At a Glance
536 Pages
23.5 x 17.78 x 3.18
Paperback
$49.49
or 4 interest-free payments of $12.37 with
 orÂShips in 5 to 7 business days
knowledge of Apache Struts 1.2. This book is ideal for
you Java programmers who have some JSP familiarity, but
little or no prior experience with Servlet technology.
Organised in a condensed tutorial and lab format, the
material in this book has been tested in real classroom
environments. It takes a step-by-step, hands-on approach
to teaching you Struts. The book even previews the next
generation of Struts, the Apache Shale. The overall
result is that you can quickly apply Struts to your work
settings with confidence.
Industry Reviews
From the reviews:
"The objective of this book is to provide the reader with a working knowledge of Apache Struts 1.2. The book is intended for Java programmers who have a fair amount of knowledge about JavaServer Pages (JSP) and some general ideas about servlet technology. ... Readers with previous experience with Struts can go directly to specific topics of interest, and will find the explanations and examples fairly independent of the rest of the book." (Jose M. Ramirez, ACM Computing Reviews, September, 2008)
| About the Author | p. xix |
| About the Technical Reviewer | p. xx |
| Acknowledgments | p. xxi |
| Basic Struts | |
| Introduction | p. 3 |
| What Is a Web Application? | p. 3 |
| What Struts Can Do for You | p. 4 |
| About You | p. 5 |
| How to Read This Book | p. 5 |
| Useful Links | p. 6 |
| Servlet and JSP Review | p. 7 |
| Installing Tomcat | p. 7 |
| Servlet Container Basics | p. 10 |
| Important Servlet Classes | p. 12 |
| JavaServer Pages (JSP) | p. 13 |
| Useful Links | p. 16 |
| Summary | p. 16 |
| Understanding Scopes | p. 17 |
| Scopes Quiz | p. 18 |
| Session and Request Scope Internals | p. 20 |
| Summary | p. 21 |
| Custom Tags | p. 23 |
| Custom Tag Basics | p. 23 |
| How Custom Tags Are Processed | p. 24 |
| The Java Handler Classes | p. 26 |
| Helper Classes | p. 28 |
| The TLD File | p. 29 |
| A Temperature Conversion Tag | p. 31 |
| Professional Java Tools | p. 35 |
| Useful Links | p. 35 |
| Summary | p. 35 |
| The MVC Design Pattern | p. 37 |
| The Registration Webapp | p. 39 |
| MVC Quiz | p. 45 |
| Which Comes First? | p. 46 |
| Struts and MVC | p. 47 |
| Lifecycle of a Struts Request | p. 48 |
| Frameworks for the Model | p. 49 |
| Useful Links | p. 50 |
| Summary | p. 51 |
| Simple Validation | p. 53 |
| Processing Simple Validations | p. 53 |
| Anatomy of ActionForm | p. 54 |
| Using ActionErrors | p. 57 |
| ContactForm for LILLDEP | p. 61 |
| What Has Struts Done for You Today? | p. 64 |
| Summary | p. 65 |
| Processing Business Logic | p. 67 |
| 1,2,3 Action! | p. 67 |
| The Statelessness of Action | p. 68 |
| Subclassing Action | p. 69 |
| Business Logic in the Registration Webapp | p. 70 |
| Complex Validation | p. 73 |
| Data Transformation | p. 74 |
| Navigation | p. 75 |
| Implementing ContactAction for LILLDEP | p. 76 |
| Summary | p. 77 |
| Basic Struts Tags | p. 79 |
| Page Processing Lifecycle | p. 80 |
| The View Component of the Registration Webapp | p. 82 |
| Synopsis of HTML and Bean Tag Libraries | p. 88 |
| Contact Entry Page for LILLDEP | p. 90 |
| Useful Links | p. 91 |
| Summary | p. 91 |
| Configuring Struts | p. 93 |
| The Structure of struts-config.xml | p. 93 |
| Configuring the Registration Webapp | p. 94 |
| Declaring Form Beans | p. 95 |
| Declaring Global Exceptions | p. 96 |
| Declaring Global Forwards | p. 97 |
| Declaring Form Handlers | p. 98 |
| Controller Declaration | p. 100 |
| Message Resources | p. 101 |
| Declaring Plug-ins | p. 101 |
| Configuring LILLDEP | p. 102 |
| Code Reuse | p. 103 |
| The MNC Page | p. 104 |
| Summary | p. 105 |
| More Tags | p. 107 |
| Best Practices | p. 108 |
| The 2 + 1 Remaining Struts Libraries | p. 108 |
| The Logic Tag Library | p. 109 |
| The Nested Tag Library | p. 115 |
| JSTL and Struts | p. 118 |
| Struts EL Extensions | p. 124 |
| The LILLDEP Full Listing Page | p. 125 |
| Simplifying ContactForm | p. 126 |
| Using JSTL | p. 127 |
| Useful Links | p. 127 |
| Summary | p. 128 |
| Uploading Files | p. 129 |
| Uploading a Fixed Number of Files at Once | p. 131 |
| Uploading Any Number of Files | p. 133 |
| Importing Data into LILLDEP | p. 140 |
| Useful Links | p. 142 |
| Summary | p. 142 |
| Internationalization | p. 143 |
| Character Encodings, Unicode, and UTF-8 | p. 143 |
| Locales | p. 146 |
| Processing Input | p. 146 |
| Localizing Validations | p. 147 |
| Localizing Output | p. 150 |
| LILLDEP for the Malaysian Market | p. 154 |
| Useful Links | p. 155 |
| Summary | p. 155 |
| Review Lab: Editing Contacts in LILLDEP | p. 157 |
| Implementing the Edit Facility | p. 158 |
| Advanced Struts | |
| Tiles | p. 161 |
| Installing Tiles | p. 162 |
| Tiles for Layout | p. 163 |
| Tiles Components | p. 169 |
| Example: The "Login" Tiles | p. 173 |
| Getting External Form Data | p. 187 |
| The Find Facility | p. 187 |
| Summary | p. 193 |
| The Validator Framework | p. 195 |
| Declaring the Validator Plug-in | p. 196 |
| Validator DTD Basics | p. 197 |
| Using the Validator Framework | p. 198 |
| The Standard Validators | p. 205 |
| Adding Custom Validations | p. 209 |
| Migrating Legacy Code | p. 216 |
| Localizing Validations | p. 217 |
| Using the Validator Framework in LILLDEP | p. 218 |
| Useful Links | p. 218 |
| Summary | p. 219 |
| Dynamic Forms | p. 221 |
| Declaring Dynamic Forms | p. 221 |
| Accessing Dynamic Properties | p. 225 |
| Dynamic Form Disadvantages | p. 226 |
| Validating Dynamic Forms | p. 227 |
| The Registration Webapp with Dynamic Forms | p. 228 |
| See Ma, No Hands!: LazyValidatorForm (Struts 1.2.6+) | p. 232 |
| The Hidden Power of BeanValidatorForm (Struts 1.2.6+) | p. 235 |
| Deleting Selected Contacts in LILLDEP | p. 236 |
| Useful Links | p. 237 |
| Summary | p. 238 |
| Potpourri | p. 239 |
| PropertyUtils | p. 240 |
| DownloadAction (Struts 1.2.6+) | p. 243 |
| LocaleAction | p. 245 |
| IncludeAction and ForwardAction | p. 247 |
| LookupDispatchAction | p. 249 |
| DispatchAction | p. 254 |
| MappingDispatchAction | p. 255 |
| Using Global Forwards | p. 258 |
| Logging | p. 258 |
| Using Wildcards | p. 261 |
| Splitting up struts-config.xml | p. 263 |
| Useful Links | p. 266 |
| Summary | p. 266 |
| Review Lab: The Collection Facility | p. 267 |
| The Main Collect Page | p. 268 |
| The New Collection Page | p. 269 |
| The Collection Listing Page | p. 271 |
| Removing Selected Contacts | p. 272 |
| Adding Selected Contacts | p. 273 |
| Up and Down a Search | p. 275 |
| Summary | p. 276 |
| Developing Plug-ins | p. 277 |
| The Task at Hand | p. 277 |
| Implementation Road Map | p. 280 |
| How Struts Processes Form Beans | p. 281 |
| Anatomy of a Plug-in | p. 284 |
| Implementing DynaFormsPlugIn | p. 285 |
| Reading XML with Apache's Digester | p. 288 |
| Implementing DynaFormsLoaderFactory | p. 291 |
| DefaultDynaFormsLoader | p. 294 |
| Test Driving the DynaForms Plug-in | p. 302 |
| Extra Credit Lab: Handling [left angle bracket]set-property[right angle bracket] | p. 303 |
| Useful Links | p. 305 |
| Summary | p. 306 |
| JavaServer Faces and Struts Shale | p. 307 |
| JSF Overview | p. 307 |
| Shale Overview | p. 308 |
| Learning Struts a Waste of Time? | p. 310 |
| JavaServer Faces (JSF) | p. 310 |
| Example: The Registration Webapp | p. 322 |
| Where to Next? | p. 336 |
| The Struts-Faces Integration Library | p. 337 |
| Struts Shale Preview | p. 343 |
| JSF vs. Shale vs. Struts | p. 355 |
| Useful Links | p. 357 |
| Summary | p. 358 |
| Frameworks for the Model | p. 359 |
| Getting the Software | p. 360 |
| Lisptorq | p. 360 |
| Test Driving Lisptorq | p. 363 |
| Preparing the Development Environment | p. 363 |
| Writing the Database Schema | p. 363 |
| Specifying the Database Settings | p. 364 |
| Generate the Java Files | p. 364 |
| Writing the Test Program | p. 365 |
| Initializing the Database | p. 365 |
| Running the Test Program | p. 365 |
| Using Torque for the Registration Webapp | p. 366 |
| Using Hibernate for the Registration Webapp | p. 367 |
| Autogenerating LILLDEP Model Classes | p. 370 |
| Useful Links | p. 373 |
| Commonly Used Classes | p. 375 |
| javax.servlet.http.HttpServletRequest | p. 375 |
| javax.servlet.http.HttpSession | p. 376 |
| org.apache.struts.action.ActionMessage | p. 376 |
| org.apache.struts.action.ActionMessages | p. 377 |
| org.apache.struts.action.ActionErrors | p. 377 |
| org.apache.struts.action.ActionMapping | p. 377 |
| org.apache.struts.action.Action | p. 377 |
| org.apache.struts.action.ActionForm | p. 378 |
| org.apache.struts.upload.FormFile | p. 379 |
| org.apache.struts.tiles.ComponentContext | p. 380 |
| org.apache.struts.action.ExceptionHandler | p. 380 |
| Struts Tag Reference | p. 381 |
| The HTML Tag Library | p. 381 |
| Common Attribute Sets | p. 383 |
| The Error Style Attribute Set (Struts 1.2.5+) | p. 386 |
| Struts-EL Tags for the HTML Tag Library | p. 386 |
| base | p. 386 |
| button | p. 388 |
| cancel | p. 389 |
| checkbox | p. 390 |
| errors | p. 392 |
| file | p. 394 |
| form | p. 394 |
| frame | p. 396 |
| hidden | p. 397 |
| html | p. 398 |
| image | p. 399 |
| img | p. 400 |
| javascript | p. 402 |
| link | p. 404 |
| messages | p. 405s |
| multibox | p. 407 |
| radio | p. 408 |
| reset | p. 409 |
| rewrite | p. 410 |
| select, with option, options, and optionsCollection | p. 411 |
| submit | p. 418 |
| text/password | p. 418 |
| textarea | p. 420 |
| xhtml | p. 420 |
| The Bean Tag Library | p. 421 |
| Struts-EL Tags for the Bean Tag Library | p. 422 |
| cookie/header/parameter | p. 422 |
| define | p. 423 |
| include | p. 425 |
| message | p. 426 |
| page | p. 429 |
| resource | p. 430 |
| size | p. 431 |
| struts | p. 432 |
| write | p. 434 |
| The Logic Tag Library | p. 436 |
| Common Attribute Sets | p. 436 |
| Selector Attributes | p. 437 |
| Struts-El Tags for the Logic Tag Library | p. 437 |
| empty/notEmpty | p. 437 |
| equal/notEqual | p. 439 |
| forward | p. 440 |
| greaterEqual/lessEqual/greaterThan/lessThan | p. 441 |
| iterate | p. 442 |
| match/notMatch | p. 444 |
| messagesPresent/messagesNotPresent | p. 446 |
| present/notPresent | p. 447 |
| redirect | p. 449 |
| The Nested Tag Library | p. 451 |
| Struts-EL Tags for the Nested Tag Library | p. 452 |
| nest | p. 453 |
| writeNesting | p. 454 |
| root | p. 456 |
| The Tiles Tag Library | p. 457 |
| Common Attributes | p. 458 |
| A Note on Equivalent Tags | p. 458 |
| Struts-El Tags for the Tiles Tag Library | p. 458 |
| insert | p. 459 |
| definition | p. 460 |
| put | p. 461 |
| putList and add | p. 462 |
| get | p. 463 |
| getAsString | p. 464 |
| useAttribute | p. 465 |
| importAttribute | p. 466 |
| initComponentDefinitions | p. 467 |
| Answers | p. 469 |
| Chapter 1: Introduction | p. 469 |
| Chapter 3: Understanding Scopes | p. 470 |
| Chapter 5: The MVC Design Pattern | p. 471 |
| Chapter 6: Simple Validation | p. 471 |
| Lab 8: Contact Entry Page for LILLDEP | p. 472 |
| Lab 9a: Configuring LILLDEP | p. 473 |
| Lab 9b: The MNC Page | p. 473 |
| Chapter 10: More Tags | p. 474 |
| Lab 10a: The LILLDEP Full Listing Page | p. 475 |
| Lab 10b: Simplifying ContactForm | p. 475 |
| Lab 11: Importing Data into LILLDEP | p. 475 |
| Chapter 13: Review Lab | p. 476 |
| Chapter 14: Tiles | p. 476 |
| Chapter 15: The Validator Framework | p. 477 |
| Chapter 17: Potpourri | p. 477 |
| Chapter 20: JavaServer Faces and Struts Shale | p. 477 |
| Index | p. 479 |
| Table of Contents provided by Ingram. All Rights Reserved. |
ISBN: 9781590596043
ISBN-10: 1590596048
Series: Beginning: from Novice to Professional
Published: 7th February 2007
Format: Paperback
Language: English
Number of Pages: 536
Audience: General Adult
Publisher: Springer Nature B.V.
Country of Publication: US
Dimensions (cm): 23.5 x 17.78 x 3.18
Weight (kg): 0.82
Shipping
| Standard Shipping | Express Shipping | |
|---|---|---|
| Metro postcodes: | $9.99 | $14.95 |
| Regional postcodes: | $9.99 | $14.95 |
| Rural postcodes: | $9.99 | $14.95 |
Orders over $79.00 qualify for free shipping.
How to return your order
At Booktopia, we offer hassle-free returns in accordance with our returns policy. If you wish to return an item, please get in touch with Booktopia Customer Care.
Additional postage charges may be applicable.
Defective items
If there is a problem with any of the items received for your order then the Booktopia Customer Care team is ready to assist you.
For more info please visit our Help Centre.
You Can Find This Book In

Architecture Patterns with Python
Enabling Test-Driven Development, Domain-Driven Design, and Event-Driven Microservices
Paperback
RRP $125.75
$60.99
OFF
This product is categorised by
- Non-FictionComputing & I.T.Computer Networking & Communications
- Non-FictionComputing & I.T.Computer Programming & Software DevelopmentWeb Programming
- Non-FictionComputing & I.T.Graphical & Digital Media ApplicationsWeb Graphics & Design
- Non-FictionComputing & I.T.Computer Programming & Software DevelopmentSoftware Engineering
- Non-FictionComputing & I.T.Databases























