INTRODUCTION xvii
Who Should Read This Book viii
Conventions xix
About the Web Site xx
ACKNOWLEDGMENTS xxi
ABOUT THE AUTHORS xxii Chapter 1:
USING AND DEPLOYING WEB
APPLICATIONS 2
1.1 Purpose of Web Applications 3
1.2 Structure of Web Applications
5
1.3 Registering Web Applications with
the Server 9
1.4 Development and Deployment
Strategies 14
1.5 The Art of WAR: Bundling Web
1.6 Building a Simple Web Application
18
1.7 Sharing Data Among Web
Applications 25
Chapter 2: CONTROLLING WEB APPLICATION BEHAVIOR WITH
WEB.XML 34
2.1 Purpose of the Deployment
Descriptor 35
2.2 Defining the Header and the Root
Element 36
2.3 The Elements of web.xml 37
2.4 Assigning Names and Custom URLs
42
2.5 Disabling the Invoker Servlet
52
2.6 Initializing and Preloading
Servlets and JSP Pages 56
2.7 Declaring Filters 68
2.8 Specifying Welcome Pages 71
2.9 Designating Pages to Handle Errors
72
2.10 Providing Security 78
2.11 Controlling Session Timeouts 83
2.12 Documenting Web Applications 84
2.13 Associating Files with MIME Types 85
2.14 Configuring JSP Pages 86
2.15 Configuring Character Encoding 93
2.16 Designating Application Event Listeners
93
2.17 Developing for the Clustered Environment
95
2.18 J2EE Elements 97
Chapter 3: DECLARATIVE
SECURITY 104
3.1 Form-Based Authentication 106
3.2 Example: Form-Based Authentication
122
3.3 BASIC Authentication 143
3.4 Example: BASIC Authentication
147
3.5 Configuring Tomcat to Use SSL
156
3.6 WebClient: Talking to Web Servers
Interactively 164
3.7 Signing a Server Certificate
167
Chapter 4: PROGRAMMATIC
SECURITY 178
4.1 Combining Container-Managed and
Programmatic Security 180
4.2 Example: Combining
Container-Managed and Programmatic Security 183
4.3 Handling All Security
Programmatically 188
4.4 Example: Handling All Security
Programmatically 190
4.5 Using Programmatic Security with
SSL 195
4.6 Example: Programmatic Security and
SSL 197
Chapter 5: SERVLET AND JSP
FILTERS 202
5.1 Creating Basic Filters 204
5.2 Example: A Reporting Filter
210
5.3 Accessing the Servlet Context from
Filters 217
5.4 Example: A Logging Filter 218
5.5 Using Filter Initialization
Parameters 221
5.6 Example: An Access Time Filter
223
5.7 Blocking the Response 226
5.8 Example: A Prohibited-Site Filter
227
5.9 Modifying the Response 234
5.10 Example: A Replacement Filter 237
5.11 Example: A Compression Filter 245
5.12 Configuring Filters to Work with
RequestDispatcher 251
5.13 Example: Plugging a Potential Security Hole
253
5.14 The Complete Filter Deployment Descriptor
260
Chapter 6: THE APPLICATION EVENTS FRAMEWORK 266
6.1 Monitoring Creation and
Destruction of the Servlet Context 270
6.2 Example: Initializing Commonly
Used Data 271
6.3 Detecting Changes in Servlet
Context Attributes 277
6.4 Example: Monitoring Changes to
Commonly Used Data 278
6.5 Packaging Listeners with Tag
Libraries 288
6.6 Example: Packaging the Company
Name Listeners 290
6.7 Recognizing Session Creation and
Destruction 297
6.8 Example: A Listener That Counts
Sessions 298
6.9 Watching for Changes in Session
Attributes 306
6.10 Example: Monitoring Yacht Orders 307
6.11 Identifying Servlet Request Initialization
and Destruction 314
6.12 Example: Calculating Server Request Load
315
6.13 Watching Servlet Request for Attribute
Changes 322
6.14 Example: Stopping Request Frequency
Collection 323
6.15 Using Multiple Cooperating Listeners 325
6.16 The Complete Events Deployment Descriptor
339
Chapter 7: TAG LIBRARIES: THE
BASICS 346
7.1 Tag Library Components 348
7.2 Example: Simple Prime Tag 353
7.3 Assigning Attributes to Tags
357
7.4 Example: Prime Tag with Variable
Length 359
7.5 Including Tag Body in the Tag
Output 362
7.6 Example: Heading Tag 364
7.7 Example: Debug Tag 368
7.8 Creating Tag Files 371
7.9 Example: Simple Prime Tag Using
Tag Files 372
7.10 Example: Prime Tag with Variable Length Using
Tag Files 374
7.11 Example: Heading Tag Using Tag Files 376
Chapter 8: TAG LIBRARIES: ADVANCED
FEATURES 378
8.1 Manipulating Tag Body 380
8.2 Example: HTML-Filtering Tag
381
8.3 Assigning Dynamic Values to Tag
Attributes 385
8.4 Example: Simple Looping Tag
387
8.5 Assigning Complex Objects as
Values to Tag Attributes 391
8.6 Example: Table Formatting Tag
393
8.7 Creating Looping Tags 398
8.8 Example: ForEach Tag 399
8.9 Creating Expression Language
Functions 404
8.10 Example: Improved Debug Tag 407
8.11 Handling Nested Custom Tags 410
8.12 Example: If-Then-Else Tag 412
Chapter 9: JSP STANDARD TAG LIBRARY
(JSTL) 418
9.1 Installation of JSTL 420
9.2 c:out Tag 421
9.3 c:forEach and c:forTokens Tags
422
9.4 c:if Tag 424
9.5 c:choose Tag 425
9.6 c:set and c:remove Tags 427
9.7 c:import Tag 430
9.8 c:url and c:param Tags 433
9.9 c:redirect Tag 435
9.10 c:catch Tag 437
Chapter 10: THE STRUTS FRAMEWORK:
BASICS 440
10.1 Understanding Struts 441
10.2 Setting Up Struts 446
10.3 The Struts Flow of Control and
the Six Steps to Implementing It 450
10.4 Processing Requests with Action
Objects 458
10.5 Handling Request Parameters with
Form Beans 481
10.6 Prepopulating and Redisplaying
Input Forms 504
Chapter 11: THE STRUTS FRAMEWORK: DOING
MORE 538
11.1 Using Properties Files 539
11.2 Internationalizing Applications
554
11.3 Laying Out Pages with Tiles
558
11.4 Using Tiles Definitions 582
Chapter 12: THE STRUTS FRAMEWORK: VALIDATING USER
INPUT 592
12.1 Validating in the Action Class
594
12.2 Validating in the Form Bean
607
12.3 Using the Automatic Validation
Framework 624
APPENDIX: DEVELOPING APPLICATIONS WITH APACHE
ANT 644
A.1 Summarizing the Benefits of Ant
646
A.2 Installing and Setting Up Ant
646
A.3 Creating an Ant Project 648
A.4 Reviewing Common Ant Tasks 652
A.5 Example: Writing a Simple Ant
Project 661
A.6 Using Ant to Build a Web
Application 668
A.7 Example: Building a Web
Application 670
A.8 Using Ant to Create a WAR File
675
A.9 Example: Creating a Web
Application WAR File 679
INDEX 683
The use of servlets and JSP has continued to grow at a phenomenal rate. Thetechnology of choice for developing dynamic Web sites and Web-enabledapplications, servlets and JSP provide the link between Web clients and serversideapplications. Virtually all major Web servers for Windows, Unix (includingLinux), MacOS, VMS, and mainframe operating systems now support servletand JSP technology either natively or by means of a plugin. With only a smallamount of configuration, you can run servlets and JSP in Microsoft IIS, theApache Web Server, IBM WebSphere, BEA WebLogic, and dozens of otherservers. This book, from best-selling authors Marty Hall and Lary Brown,provides a fantastic look at the advanced features and latest developmentregarding servlets and JSP. In the Core tradition, this book is designed toprovide experienced programmers with the essential information they need tolearn and apply the latest, most important technologies.
Marty Hall is president of coreservlets.com, Inc., a small company that provides training courses and consulting services related to server-side Java technology. He also teaches Java and Web programming in the Johns Hopkins University part-time graduate program in Computer Science, where he directs the Distributed Computing and Web Technology concentration areas. Marty is the author of five previous books from Prentice Hall and Sun Microsystems Press: the first and second editions of Core Servlets and JavaServer Pages, More Servlets and JavaServer Pages, and the first and second editions of Core Web Programming. You can reach Marty at hall@coreservlets.com; you can find out about his J2EE training courses (JSP, servlets, Struts, JSF, Ajax, Java 5, Java 6, Ruby on Rails, etc.) at http://courses.coreservlets.com/. Larry Brown is an IT manager at a U.S. Navy Research and Development laboratory. He is the coauthor of the second editions of Core Web Programming, also from Prentice Hall and Sun Microsystems Press. You can reach Larry at brown@coreservlets.com. Yaakov Chaikin is a senior consultant at a software development company based in Columbia, MD. Besides his day job, he teaches Web development technologies at the graduate Computer Science program of Loyola College in Maryland, where he heads the Web Development track. At times, he also helps his wife with her web/graphic design business, tbiq.com. Yaakov can be reached at yaakov.chaikin@gmail.com.
![]() |
Ask a Question About this Product More... |
![]() |