SlideShare a Scribd company logo
Core Servlets and Javaserver Pages Advanced
Technologies 2nd Edition Marty Hall pdf download
https://ebookfinal.com/download/core-servlets-and-javaserver-
pages-advanced-technologies-2nd-edition-marty-hall/
Explore and download more ebooks or textbooks
at ebookfinal.com
Here are some recommended products for you. Click the link to
download, or explore more at ebookfinal
JavaServer pages 2nd ed Edition Hans Bergsten
https://ebookfinal.com/download/javaserver-pages-2nd-ed-edition-hans-
bergsten/
Web Development with JavaServer Pages 2nd Edition Duane K.
Fields
https://ebookfinal.com/download/web-development-with-javaserver-
pages-2nd-edition-duane-k-fields/
Core Web Programming Volumes I II Includes index 2nd ed
Edition Hall
https://ebookfinal.com/download/core-web-programming-volumes-i-ii-
includes-index-2nd-ed-edition-hall/
Murach s Java Servlets and JSP 2nd Edition Andrea Steelman
https://ebookfinal.com/download/murach-s-java-servlets-and-jsp-2nd-
edition-andrea-steelman/
Core Java 2 Advanced Features 5th Edition Cay S. Horstmann
https://ebookfinal.com/download/core-java-2-advanced-features-5th-
edition-cay-s-horstmann/
Beer For Dummies 2nd Edition For Dummies Cooking Marty
Nachel
https://ebookfinal.com/download/beer-for-dummies-2nd-edition-for-
dummies-cooking-marty-nachel/
Common Core Curriculum English Grades 9 12 2nd Edition
Common Core
https://ebookfinal.com/download/common-core-curriculum-english-
grades-9-12-2nd-edition-common-core/
Advanced wireless communications 4G technologies 1st
Edition Savo G. Glisic
https://ebookfinal.com/download/advanced-wireless-
communications-4g-technologies-1st-edition-savo-g-glisic/
Victoriana 2nd Edition Core Rulebook Various
https://ebookfinal.com/download/victoriana-2nd-edition-core-rulebook-
various/
Core Servlets and Javaserver Pages Advanced Technologies 2nd Edition Marty Hall
Core Servlets and Javaserver Pages Advanced
Technologies 2nd Edition Marty Hall Digital Instant
Download
Author(s): Marty Hall, Larry Brown, YaakovChaikin
ISBN(s): 9780131482609, 0131482602
Edition: 2
File Details: PDF, 10.67 MB
Year: 2007
Language: english
Core Servlets and Javaserver Pages Advanced Technologies 2nd Edition Marty Hall
core
SERVLETS AND
JAVASERVER PAGES
VOLUME 2–ADVANCED TECHNOLOGIES
SECOND EDITION
This page intentionally left blank
MARTY HALL
LARRY BROWN
YAAKOV CHAIKIN
Upper Saddle River, NJ • Boston • Indianapolis • San Francisco
New York • Toronto • Montreal • London • Munich • Paris • Madrid
Capetown • Sydney • Tokyo • Singapore • Mexico City
core
SERVLETS AND
JAVASERVER PAGES
VOLUME 2–ADVANCED TECHNOLOGIES
SECOND EDITION
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as
trademarks. Where those designations appear in this book, and the publisher was aware of a trademark
claim, the designations have been printed with initial capital letters or in all capitals.
The authors and publisher have taken care in the preparation of this book, but make no expressed or
implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed
for incidental or consequential damages in connection with or arising out of the use of the information or
programs contained herein.
The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or spe-
cial sales, which may include electronic versions and/or custom covers and content particular to your busi-
ness, training goals, marketing focus, and branding interests. For more information, please contact:
U.S. Corporate and Government Sales
(800) 382-3419
corpsales@pearsontechgroup.com
For sales outside the United States please contact:
International Sales
international@pearsoned.com
Visit us on the Web: www.prenhallprofessional.com
Library of Congress Control Number: 2003058100
Copyright © 2008 Pearson Education, Inc.
All rights reserved. Printed in the United States of America. This publication is protected by copyright, and
permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval
system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or
likewise. For information regarding permissions, write to:
Pearson Education, Inc
Rights and Contracts Department
501 Boylston Street, Suite 900
Boston, MA 02116
Fax (617) 671 3447
ISBN-13: 978-0-13-148260-9
ISBN-10: 0-13-148260-2
Text printed in the United States on recycled paper at Courier in Stoughton, Massachusetts.
First printing, December 2007
v
Contents
Contents
INTRODUCTION xvii
Who Should Read This Book xviii
Conventions xix
About the Web Site xx
ACKNOWLEDGMENTS xxi
ABOUT THE AUTHORS xxii
1 USING AND DEPLOYING WEB APPLICATIONS 2
1.1 Purpose of Web Applications 3
Organization 4
Portability 4
Separation 4
1.2 Structure of Web Applications 5
Locations for Various File Types 5
Contents
vi
1.3 Registering Web Applications with the Server 9
Registering a Web Application with Tomcat 10
Registering a Web Application with Other Servers 12
1.4 Development and Deployment Strategies 14
Copying to a Shortcut or Symbolic Link 15
Using IDE-Specific Deployment Features 16
Using Ant, Maven, or a Similar Tool 16
Using an IDE in Combination with Ant 17
1.5 The Art of WAR: Bundling Web
Applications into WAR Files 17
1.6 Building a Simple Web Application 18
Download and Rename app-blank to testApp 18
Download test.html, test.jsp, and TestServlet.java 19
Add test.html, test.jsp to the testApp Web Application 19
Place TestServlet.java into the
testApp/WEB-INF/classes/coreservlets Directory 20
Compile TestServlet.java 20
Declare TestServlet.class and the URL
That Will Invoke It in web.xml 21
Copy testApp to tomcat_dir/webapps 23
Start Tomcat 23
Access testApp with the URL of the Form
http://localhost/testApp/someResource 23
1.7 Sharing Data Among Web Applications 25
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
Version 2.4 38
Version 2.3 40
2.4 Assigning Names and Custom URLs 42
Assigning Names 42
Contents vii
Defining Custom URLs 44
Naming JSP Pages 50
2.5 Disabling the Invoker Servlet 52
Remapping the /servlet/ URL Pattern 53
Globally Disabling the Invoker: Tomcat 55
2.6 Initializing and Preloading Servlets and JSP Pages 56
Assigning Servlet Initialization Parameters 56
Assigning JSP Initialization Parameters 60
Supplying Application-Wide Initialization Parameters 63
Loading Servlets When the Server Starts 64
2.7 Declaring Filters 68
2.8 Specifying Welcome Pages 71
2.9 Designating Pages to Handle Errors 72
The error-code Element 73
The exception-type Element 75
2.10 Providing Security 78
Designating the Authentication Method 78
Restricting Access to Web Resources 80
Assigning Role Names 83
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
Locating Tag Library Descriptors 86
Configuring JSP Page Properties 87
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
Contents
viii
3 DECLARATIVE SECURITY 104
3.1 Form-Based Authentication 106
Setting Up Usernames, Passwords, and Roles 108
Telling the Server You Are Using Form-Based
Authentication; Designating Locations of Login
and Login-Failure Pages 110
Creating the Login Page 111
Creating the Page to Report
Failed Login Attempts 114
Specifying URLs That Should Be Password Protected 115
Listing All Possible Abstract Roles 118
Specifying URLs That Should Be
Available Only with SSL 119
Turning Off the Invoker Servlet 120
3.2 Example: Form-Based Authentication 122
The Home Page 122
The Deployment Descriptor 123
The Password File 127
The Login and Login-Failure Pages 128
The investing Directory 129
The ssl Directory 132
The admin Directory 138
The NoInvoker Servlet 140
Unprotected Pages 141
3.3 BASIC Authentication 143
Setting Up Usernames, Passwords, and Roles 145
Telling the Server You Are Using BASIC
Authentication; Designating Realm 145
Specifying URLs That Should Be Password Protected 146
Listing All Possible Abstract Roles 146
Specifying URLs That Should Be
Available Only with SSL 147
3.4 Example: BASIC Authentication 147
The Home Page 147
Contents ix
The Deployment Descriptor 149
The Password File 151
The Financial Plan 152
The Business Plan 154
The NoInvoker Servlet 156
3.5 Configuring Tomcat to Use SSL 156
3.6 WebClient: Talking to Web Servers Interactively 164
3.7 Signing a Server Certificate 167
Exporting the CA Certificate 170
Using WebClient with Tomcat and SSL 175
4 PROGRAMMATIC SECURITY 178
4.1 Combining Container-Managed
and Programmatic Security 180
Security Role References 182
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
Determining If SSL Is in Use 195
Redirecting Non-SSL Requests 195
Discovering the Number of Bits in the Key 196
Looking Up the Encryption Algorithm 196
Accessing Client X.509 Certificates 197
4.6 Example: Programmatic Security and SSL 197
5 SERVLET AND JSP FILTERS 202
5.1 Creating Basic Filters 204
Create a Class That Implements the Filter Interface 205
Put the Filtering Behavior in the doFilter Method 206
Call the doFilter Method of the FilterChain Object 206
Contents
x
Register the Filter with the Appropriate
Servlets and JSP Pages 207
Disable the Invoker Servlet 209
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
A Reusable Response Wrapper 235
5.10 Example: A Replacement Filter 237
A Generic Modification Filter 237
A Specific Modification Filter 239
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
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
Disabling Cookies 305
6.9 Watching for Changes in Session Attributes 306
6.10 Example: Monitoring Yacht Orders 307
Contents xi
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
Tracking Orders for the Daily Special 326
Resetting the Daily Special Order Count 334
6.16 The Complete Events Deployment Descriptor 339
7 TAG LIBRARIES: THE BASICS 346
7.1 Tag Library Components 348
The Tag Handler Class 348
The Tag Library Descriptor File 349
The JSP File 352
7.2 Example: Simple Prime Tag 353
7.3 Assigning Attributes to Tags 357
Tag Attributes: Tag Handler Class 357
Tag Attributes: Tag Library Descriptor 358
Tag Attributes: JSP File 359
7.4 Example: Prime Tag with Variable Length 359
7.5 Including Tag Body in the Tag Output 362
Tag Bodies: Tag Handler Class 362
Tag Bodies: Tag Library Descriptor 363
Tag Bodies: JSP File 363
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
Contents
xii
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
Dynamic Attribute Values: Tag Handler Class 385
Dynamic Attribute Values: Tag Library Descriptor 386
Dynamic Attribute Values: JSP File 386
8.4 Example: Simple Looping Tag 387
8.5 Assigning Complex Objects
as Values to Tag Attributes 391
Complex Dynamic Attribute
Values: Tag Handler Class 391
Complex Dynamic Attribute
Values: Tag Library Descriptor 391
Complex Dynamic Attribute Values: JSP File 392
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
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
Contents xiii
10 THE STRUTS FRAMEWORK: BASICS 440
10.1 Understanding Struts 441
Different Views of Struts 441
Advantages of Apache Struts (Compared to
MVC with RequestDispatcher and the EL) 442
Disadvantages of Apache Struts (Compared to
MVC with RequestDispatcher and the EL) 444
10.2 Setting Up Struts 446
Installing Struts 446
Testing Struts 448
Making Your Own Struts Applications 448
Adding Struts to an Existing Web Application 449
10.3 The Struts Flow of Control and the
Six Steps to Implementing It 450
Struts Flow of Control 450
The Six Basic Steps in Using Struts 454
10.4 Processing Requests with Action Objects 458
Understanding Actions 458
Example: One Result Mapping 463
Example: Multiple Result Mappings 470
Combining Shared Condition (Forward) Mappings 479
10.5 Handling Request Parameters with Form Beans 481
Struts Flow of Control: Updates for Bean Use 482
The Six Basic Steps in Using Struts 484
Understanding Form Beans 486
Displaying Bean Properties 488
Example: Form and Results Beans 490
10.6 Prepopulating and Redisplaying Input Forms 504
Struts Flow of Control 504
The Six Basic Steps in Using Struts 506
Using Struts html: Tags 508
Prepopulating Forms 510
Example: Prepopulating Forms 511
Contents
xiv
URL Design Strategies for Actions 523
Redisplaying Forms 525
Example: Redisplaying Forms 528
11 THE STRUTS FRAMEWORK: DOING MORE 538
11.1 Using Properties Files 539
Advantages of Properties Files 540
Struts Flow of Control—Updates for Properties Files 540
Steps for Using Properties Files 542
Example: Simple Messages 546
Dynamic Keys 552
Parameterized Messages 553
11.2 Internationalizing Applications 554
Loading Locale-Specific Properties Files 554
Setting Language Preferences in Browsers 554
Example: Internationalizing for
English, Spanish, and French 555
Results 556
11.3 Laying Out Pages with Tiles 558
Tiles Motivations 558
Prerequisites for Tiles 558
The Four Basic Steps in Using Tiles 560
Example: Simple Tiles 563
Handling Relative URLs 568
Example: e-boats Application 570
11.4 Using Tiles Definitions 582
Tiles Definitions Motivations 583
The Five Basic Steps in Using Tiles Definitions 583
Example: e-boats Application with Tiles Definitions 586
Contents xv
12 THE STRUTS FRAMEWORK:
VALIDATING USER INPUT 592
12.1 Validating in the Action Class 594
Struts Flow of Control 594
Performing Validation in the Action 596
Example: Choosing Colors and Font Sizes for Resume 599
12.2 Validating in the Form Bean 607
Struts Flow of Control 607
Performing Validation in the ActionForm 609
Example: Choosing Colors and
Font Sizes for a Resume (Take 2) 612
Using Parameterized Error Messages 620
Example: Validation with Parameterized Messages 620
12.3 Using the Automatic Validation Framework 624
Manual versus Automatic Validation 624
Client-Side versus Server-Side Validation 624
Struts Flow of Control 625
Steps in Using Automatic Validation 627
Example: Automatic Validation 633
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
Defining the Ant Project 648
Writing Targets 650
Assigning Tasks to Targets 651
Running an Ant Target 651
A.4 Reviewing Common Ant Tasks 652
The echo Task 652
The tstamp Task 653
The mkdir Task 654
Contents
xvi
The delete Task 654
The copy Task 656
The javac Task 658
A.5 Example: Writing a Simple Ant Project 661
A.6 Using Ant to Build a Web Application 668
Ant Dependencies 669
A.7 Example: Building a Web Application 670
The prepare Target 670
The copy Target 671
The build Target 672
A.8 Using Ant to Create a WAR File 675
The jar Task 676
The manifest Task 678
A.9 Example: Creating a Web Application WAR File 679
The war Target 679
INDEX 683
xvii
Chapter
Introduction
Introduction
Suppose your company wants to sell products online. You have a database that gives
the price and inventory status of each item. However, your database doesn’t speak
HTTP, the protocol that Web browsers use. Nor does it output HTML, the format
Web browsers need. What can you do? Once users know what they want to buy, how
do you gather that information? You want to customize your site for visitors’ prefer-
ences and interests, but how? You want to keep track of user’s purchases as they shop
at your site, but what techniques are required to implement this behavior? When
your Web site becomes popular, you might want to compress pages to reduce band-
width. How can you do this without causing your site to fail for those visitors whose
browsers don’t support compression? In all these cases, you need a program to act as
the intermediary between the browser and some server-side resource. This book is
about using the Java platform for this type of program.
“Wait a second,” you say. “Didn’t you already write a book about that?” Well, yes.
In May of 2000, Sun Microsystems Press and Prentice Hall released Marty Hall’s sec-
ond book, Core Servlets and JavaServer Pages. It was successful beyond everyone’s
wildest expectations, selling approximately 100,000 copies, getting translated into
Bulgarian, Chinese simplified script, Chinese traditional script, Czech, French, Ger-
man, Hebrew, Japanese, Korean, Polish, Russian, and Spanish, and being chosen by
Amazon.com as one of the top five computer programming books of 2001. What fun!
Since then, use of servlets and JSP has continued to grow at a phenomenal
rate. The Java 2 Platform has become the technology of choice for developing
e-commerce applications, dynamic Web sites, and Web-enabled applications and
service. Servlets and JSP continue to be the foundation of this platform—they pro-
vide the link between Web clients and server-side applications. Virtually all major
Introduction
xviii
Web servers for Windows, UNIX (including Linux), Mac OS, VMS, and mainframe
operating systems now support servlet and JSP technology either natively or by
means of a plug-in. With only a small amount of configuration, you can run servlets
and JSP in Microsoft IIS, the Apache Web Server, IBM WebSphere, BEA
WebLogic, Oracle Application Server 10g, and dozens of other servers. Perfor-
mance of both commercial and open-source servlet and JSP engines has improved
significantly.
To no one’s surprise, this field continues to grow at a rapid rate. As a result, we
could no longer cover the technology in a single book. Core Servlets and JavaServer
Pages, Volume 1: Core Technologies, covers the servlet and JSP capabilities that you
are likely to use in almost every real-life project. This book, Volume 2: Advanced
Technologies, covers features that you may use less frequently but are extremely valu-
able in robust applications. For example,
• Deployment descriptor file. Through the proper use of the
deployment descriptor file, web.xml, you can control many aspects of
the Web application behavior, from preloading servlets, to restricting
resource access, to controlling session time-outs.
• Web application security. In any Web application today, security is a
must! The servlet and JSP security model allows you to easily create
login pages and control access to resources.
• Custom tag libraries. Custom tags significantly improve the design
of JSPs. Custom tags allow you to easily develop your own library of
reusable tags specific to your business applications. In addition to
creating your own tags, we cover the Standard Tag Library (JSTL).
• Event handling. With the events framework, you can control
initialization and shutdown of the Web application, recognize
destruction of HTTP sessions, and set application-wide values.
• Servlet and JSP filters. With filters, you can apply many pre- and
post-processing actions. For instance, logging incoming requests,
blocking access, and modifying the servlet or JSP response.
• Apache Struts. This framework greatly enhances the standard
model-view-controller (MVC) architecture available with servlets and
JSPs. More importantly, Apache Struts still remains one of the most
common frameworks used in industry.
Who Should Read This Book
The main audience is developers who are familiar with basic servlet and JSP technol-
ogies, but want to make use of advanced capabilities. As we cover many topics in this
book—the deployment descriptor file, security, listeners, custom tags, JSTL, Struts,
Introduction xix
Ant—you may want to first start with the technologies of most interest, and then later
read the remaining material. Most commercial servlet and JSP Web applications take
advantage of the technologies presented throughout, thus, at some point you may
want to read the complete book.
If you are new to servlets and JSPs, you will want to read Core Servlets and Java-
Server Pages, Volume 1: Core Technologies. In addition to teaching you how to install
and configure a servlet container, Volume 1 provides excellent coverage of the servlet
and JSP specifications. Volume 1 provides the foundation material to this book.
Both books assume that you are familiar with basic Java programming. You don’t
have to be an expert Java developer, but if you know nothing about the Java program-
ming language, this is not the place to start. After all, servlet and JSP technology is an
application of the Java programming language. If you don’t know the language, you
can’t apply it. So, if you know nothing about basic Java development, start with a
good introductory book like Thinking in Java, Core Java, or Core Web Programming,
all from Prentice Hall.
Conventions
Throughout the book, concrete programming constructs or program output are pre-
sented in a monospaced font. For example, when abstractly discussing server-side
programs that use HTTP, we might refer to “HTTP servlets” or just “servlets,” but
when we say HttpServlet we are talking about a specific Java class.
User input is indicated in boldface, and command-line prompts are either generic
(Prompt>) or indicate the operating system to which they apply (DOS>). For
instance, the following indicates that “Some Output” is the result when “java
SomeProgram” is executed on any platform.
Prompt> java SomeProgram
Some Output
URLs, file names, and directory names are presented in a sans serif font. So, for
example, we would say “the StringTokenizer class” (monospaced because we’re
talking about the class name) and “Listing such and such shows SomeFile.java” (sans-
serif because we’re talking about the file name). Paths use forward slashes as in
URLs unless they are specific to the Windows operating system. So, for instance, we
would use a forward slash when saying “look in install_dir/bin” (OS neutral), but use
backslashes when saying “see C:WindowsTemp” (Windows specific).
Important standard techniques are indicated by specially marked entries, as in the
following example.
Discovering Diverse Content Through
Random Scribd Documents
I got a firmer grip on Perry's collar.
"Come and get me," I called back, knowing what would happen if
they did.
They came in on the double with their freeze guns ready—and
halted, looking sheepish, when the smiley's aura got to them.
"Aw, forget it," the corporal said. "You're a good guy, Bailey. Go
ahead. Go anywhere you like."
"Sure," the other seconded. "Take our air-scooter if you want. Need
any extra credits where you're going?"
I headed for the service with Perry again but we had waited too
long. One of Shanig's uglies was standing in the doorway with a
foolish grin on his face, and I knew there would be others waiting in
the alley outside. And those others wouldn't be under Joey's
influence.
So I cut for the front entrance instead, dragging Perry like a bag of
old laundry. The patrolies' air-scooter stood purring at the curb. I
draped Perry across it and jumped for the operator's seat, expecting
to be beamed down any second. I'd have made it, too, but for Perry.
Perry had taken on a monumental load of skohl during the day, and
the instant he was out of Joey's influence the inflated little ego of
him demanded to be heard. He scrambled off the air-scooter, swelled
out his size thirty-two chest and launched into an old rocketroom
ballad—a smutty saga listing the personal iniquities of the Captain
Crow who led the first Mars flight just before the turn of the century.
In nineteen hundred and ninety-two
A homo from Milwaukee
Warmed up his jets and—
I quieted him with a rabbit punch and tossed him back on the air-
scooter, but the damage was done. I hit the control seat again just
as Shanig's crew swarmed out of the alley and surrounded us.
The air-scooter took off like a rocket when I gave it the gun, plowing
straight through them. I hung on somehow, but Perry wasn't so
lucky. He bounced once and pitched off, square into the enemy's
hands.
When I looked back at the first street intersection they had scooped
him up and were headed toward Solar Shipping in a hurry. The sight
reassured me a little. They hadn't blasted Perry on the spot, which
meant that they would probably hold him as hostage until they got
Cheryl as well. One witness at large was as dangerous to Shanig as
two, and the chances were he wouldn't risk beaming out one unless
he could be sure of both.
I took the only course left, doubling the air-scooter back and
skimming toward Shanig's offices.
V
The way the situation added up reminded me of the old historical
thrillers I'd read as a kid, most of them written in the days when our
rough-and-ready ancestors bought contraband skohl from
underground talk-gentlies and rival groups of uglies hijinked each
other with torpedoes. It was something like a present-day telemovie
gripper in a sense, only there wasn't any Colonel Super in this plot to
lend me a hand.
Not that I wasted time looking for help. I wasn't used to it.
Outside the Solar Shipping building I lifted the air-scooter and
swooped up to the balcony outside Shanig's office windows. There
wasn't time to set it down. I needed every second to get inside
before Shanig could give the alarm.
I jumped, and the air-scooter went on without me into the night. It
wouldn't have worked on Earth, but under Mars' .38 gravity an
athletic homo has all the breaks. I landed just inside the guard-rail
and dived through the balcony windows with a great crashing of
glass before Shanig could clap a hand to the buzzer on his desk.
"Don't touch it," I said, and turned my Quantrell on him.
"You!" Shanig barked. His face went sallower than ever, but his hot
black eyes didn't waver. "What do you want here?"
Down the corridor rose a sudden babel of voices—Shanig's crew
returning with their prize.
"They got Acree," I said, heading for the phonovision unit beside
Shanig's desk. "But if you make a sound before they get here you
won't be able to use him. Clear?"
The screen lit up when I touched the switch. I punched the code
Cheryl had given me, and drew the first deep breath I'd had for an
hour when she looked out at me.
"Bring Cora over to Shanig's office on the double," I said. "I'm going
to need her but quick!"
I cut her off without waiting for an answer and punched another
number. Captain Giles stared out at me this time, his weathered
hatched face clownish with astonishment.
"Get a crew of patrolies up to Shanig's offices," I said. "And make it
fast or there's going to be more excitement here than you can write
off your records in a month."
For the first time Shanig looked worried. He saw no threat in Cheryl's
coming, not knowing about my second smiley. But if Captain Giles
should arrive before Perry could be moved—
The crew of uglies outside crossed me up by buzzing Shanig's
audiphone. "We got the little homo, Chief. Shall we bring him in?"
Shanig, knowing that I couldn't afford to beam him at this stage of
the game, tipped them before I could stop him. "Take him away.
Bailey's here!"
I jumped for the door, hoping to grab Perry before they got him
away. I was too late. They were already out of the reception office.
All I saw of Perry Acree was his heels.
That left us at stalemate. Shanig couldn't get away, and I couldn't
leave him unguarded to go after Perry. I was racking my brain for
the next move when it was taken out of my hands.
The phonovision screen beside Shanig's desk lighted up and one of
his uglies looked out. "We got him where he won't be found, Chief.
What next?"
And I let Shanig beat me to the jump again. "The girl is coming
here. Intercept her!"
I made sure it wouldn't happen again by raying the phonovision unit
to a heap of smoking junk. Reflected heat from the flash curled
Shanig's eyebrows, but he didn't flinch.
"That finishes you, Bailey," he said. "My men have Acree safe. They'll
have the girl the instant she appears. Under the circumstances it
should be quite entertaining to watch you prove your position to the
police."
He had me cold. Shanig could afford to wait but I couldn't.
It turned out that Shanig's handymen didn't share his confidence in
the police. I heard them getting set in the reception-room corridor to
block any dash I might make. When I sneaked a look through the
balcony windows I caught a glimpse of another group working like
beavers in the building across the alley. They were setting up a
tripod affair which I recognized at a glance as a sleep-bomb
catapult.
They had it charged to fire when Captain Giles and his patrolies
arrived. A babble of confusion rose in the corridor again, and the
Captain's harsh bellow silenced it like a hand across the mouth. A
moment later he called through the doorway: "Stand fast, Bailey.
We're coming in, and God help you if you give us trouble!"
I stood fast, giving up any hope of Cheryl's showing up in time.
Having Cora along should make it easy enough for her to get into
the building, but even Cora couldn't help if Captain Giles had already
dragged me away.
Giles came around Shanig's desk toward me, his hatchet face
thunderous. "I've warned you often enough, Bailey. This time you've
gone too far."
Shanig treated himself to one of his sandpaper chuckles. "He'll
probably give you some wild story designed to clear himself,
Captain. Don't believe a word of it. I trusted him, and you can see
what it led to!"
The Captain was taking my Quantrell blaster when my reprieve
came. One of Shanig's uglies burst into the office with disaster
written all over him.
"Chief, the girl's coming up in the lift with another smiley! The whole
lower floor is hypnotized. She'd have got me too if the lift hadn't
carried me out of reach!"
I'll give Shanig credit for this—he thought fast. He added up the
score in a flash and lunged across the desk, yelling for his startled
uglies to follow up. If Cheryl got to us with the smiley the jig was up,
and he knew it.
He ripped the Quantrell blaster out of Captain Giles' hand and turned
it on us. He meant to wipe out the lot and clear himself by laying the
carnage to a battle between me and the patrol.
It was close, but not close enough.
A sudden serenity wiped the tension off his face like chalk marks off
a blackboard. Captain Giles and his patrolies slacked off with him,
caught in the same euphoric spell.
They stood smiling and docile while Cheryl Trayne strode in with
Cora's little tungsten cage under her arm. If she had looked good to
me before, right then she looked like a red-haired angel.
"Good girl," I said, and took over from there.
Shanig confessed on the spot to the slimy deal he had pulled over
me, and signed a statement to that effect. He got on the reception-
room phonovision and ordered his crew in the adjoining building to
drop everything and return Perry Acree at once. He destroyed the
bogus contract and took back the elastic check he had given me,
and he enjoyed doing it. Cora, sensing Joey so close in the Argonaut
Bar across the street, was working her mating call overtime.
"It was really inconsiderate of you to swindle our young friend
William," the Captain said to Shanig. "Of course you won't object to
serving a light sentence—say five years—to make amends?"
"Certainly not," Shanig said brightly, beaming back at him. "My only
regret is that I must be separated from this adorable creature. I love
smileys."
He went over to the desk where Cheryl had left Cora's cage and
fondled the little brute through the wires. He played the very devil in
doing it, too. Somehow or other the cage door had worked loose
during the time it had been banged about, and Shanig's fumbling
hands slid it open.
Cora was out of the cage and through the broken balcony windows
in a smoky bluish flash, whizzing like a bullet toward the Argonaut
Club and Joey.
VI
Everybody snapped back to normal with a roar. There was a frantic
rush of Shanig's uglies trying to escape and of Giles' patrolies
collaring them again. I took no chances with Shanig. I turned my
Quantrell on him and held him fast.
Hell broke loose in the Argonaut then. Even before the confusion
quieted in Shanig's office we could hear the din that went up across
the street.
From our balcony windows we had a grandstand view of the
Argonaut's more timid patrons exploding out of the place and
tearing down the street, wobbling and lurching each in his own
outlandish fashion from the assortment of Eetee drinks they had
taken aboard under Joey's spell. The rougher souls left inside had
begun a battle royal that raised a bedlam wilder than a robot rooting
section at a rocket-games stadium.
"What is it!" Captain Giles yelled, goggling at a barrel-bellied
Europan who shot out of the Argonaut with a pack of little baboon-
faced Marties harrying its speeding cart from the rear. "What have
you done now?"
"Shanig has just ruined a forty-thousand-credit investment for me," I
told him, "by letting my pair of smileys get together. That peace-be-
on-you feeling they've been broadcasting is a thing of the past. They
feel just the opposite now, and so will anyone who goes near them."
I had to explain it twice before they got it.
Mimasan smileys, as I've said before, are weird little brutes.
Unmated, their euphoric mating calls attract them to each other and
at the same time protects them from native predators. The catch is
that when they mate they coalesce, each complementing the
insubstantiality of the other to become a single material entity.
And then, of course, there's no further need of their wistful, coaxing
aura.
After that they hate everybody, being newlyweds and not wanting to
be disturbed, so of course they radiate an exactly opposite aura that
guarantees them the privacy their joint little heart craves. Nothing
can come near enough to interrupt them without becoming so
rabidly angry that it has to rush off somewhere else looking for
something to fight. But you see how it goes.
"And from the row going on in the Argonaut," I finished, "I'd say
that Joey and Cora are definitely on their honeymoon."
"You mean they'll be like that always?" Cheryl asked, wide-eyed.
"That no one can go near them without flying into a rage?"
"Not always," I said glumly. "Just for five years. After that they
divide by fission into a dozen or so baby smileys, and after that the
rat-race starts over again. The progeny will be worth plenty, but
who's going to stand guard over that amalgamated little demon
while it broadcasts hate and damnation in every direction? I won't,
and there's not a homo in the System that would take the job for
love or—"
The answer hit me like a thumb in the eye, bang in the middle of a
sentence.
"Captain Giles," I said. "I've a suggestion that...."
The Captain got it on first bounce. For the first time in history he
laughed without benefit of smiley.
It worked out neatly enough, at that. An Areopolitan court decreed
that Shanig, being bound by the requirements of Martian law to
expiate his crimes with as little expense to the polity as possible,
should spend the five years of his sentence guarding Joey-Cora in a
force-wall detention area to be set up in Syrtis Major. By the time his
term ended my combination smiley would have fissioned, Shanig
would have paid his debt to society and my investment would have
paid dividends.
It could have been worse. For the time being I was out some forty
thousand credits, but I managed to salvage enough for a moderate
celebration by contracting with the government to furnish khiff roots
from Mimas to keep Shanig from going berserk under Joey-Cora's
influence.
The arrangement wasn't too hard on Shanig, even. The worst of it
would be the isolation—that, and the packs of Syrtis Major jackals
that would crowd around the force-wall at night and howl for his
blood.
"Good enough," I told Cheryl after the trial. "That leaves just one
small detail to be arranged. I'll have to wangle another loan from
Martian Bankings."
She raised a slim brow. "Loan? For a grubstake?"
"For our weekend on Phobos," I said. "Remember?"
She laughed. "There's another little detail you overlooked, William.
My ring size is five and one-half."
"Ring?" I said. "Oh, a ring.... Would you rather have a Tellurian
diamond, an A-belt fire-opal, or—"
"Nothing expensive," she cut me off. "Something simpler would be
more appropriate, I think. Under the circumstances, I'd suggest a
plain gold band."
I gaped at her like a swamp-guppy until it seeped through my skull
that she was in dead earnest.
"Wait up," I said. "What about Perry Acree?"
She snapped her fingers. "That for Perry. I thought I wanted the
little creep until you brought him back, but after that I couldn't bear
the sight of him."
"You mean," I said, grasping at any straw, "that you really want to
be—"
"Married," she said definitely. "First and firmly, or no Phobos trips!"
"It wouldn't last," I argued. "Being an A-belt prospector's wife is no
snap, Cheryl. I'd be out in the Annabelle for weeks on end,
slamming around in God knows what kind of dangers. And one of
these days I wouldn't come back at all and you'd be a widow."
"You wouldn't be slamming around," she corrected me softly. "We
would, Willie dear. I'd be with you every minute."
That did it. It was "Willie dear" already, and she'd be with me every
minute. Even in port....
"I'll have to give this some serious thought," I said. "Look, you
wouldn't want us to plunge into a deal that wouldn't work out, would
you?"
"Of course not," she said with a demure certainty that made my
blood curdle. "But this will work, Willie darling. I'll see to that."
I got out of there and went down to Martian Bankings in the devil of
a hurry. They were apologetic over selling my grubstake lien, and
were glad to advance me a few thousand credits against Joey-Cora's
expectations.
For once I passed the Argonaut Club without even looking back. A
homo with a skinful of skohl is short on resistance, and resistance
just then was what I needed most.
When I reached the blastoff aprons, the Annabelle's rusty old hulk
was the sweetest sight I ever saw. I pointed her lovely, meteor-
dented nose at the sky and blasted off, and the howling of her jets
was like a lullaby in my ears. The starry backdrop of space ahead
was like a cosmos-sized painting of all Creation, a master canvas
done.
*** END OF THE PROJECT GUTENBERG EBOOK OH MESMERIST
FROM MIMAS! ***
Updated editions will replace the previous one—the old editions will
be renamed.
Creating the works from print editions not protected by U.S.
copyright law means that no one owns a United States copyright in
these works, so the Foundation (and you!) can copy and distribute it
in the United States without permission and without paying
copyright royalties. Special rules, set forth in the General Terms of
Use part of this license, apply to copying and distributing Project
Gutenberg™ electronic works to protect the PROJECT GUTENBERG™
concept and trademark. Project Gutenberg is a registered trademark,
and may not be used if you charge for an eBook, except by following
the terms of the trademark license, including paying royalties for use
of the Project Gutenberg trademark. If you do not charge anything
for copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such as
creation of derivative works, reports, performances and research.
Project Gutenberg eBooks may be modified and printed and given
away—you may do practically ANYTHING in the United States with
eBooks not protected by U.S. copyright law. Redistribution is subject
to the trademark license, especially commercial redistribution.
START: FULL LICENSE
THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
To protect the Project Gutenberg™ mission of promoting the free
distribution of electronic works, by using or distributing this work (or
any other work associated in any way with the phrase “Project
Gutenberg”), you agree to comply with all the terms of the Full
Project Gutenberg™ License available with this file or online at
www.gutenberg.org/license.
Section 1. General Terms of Use and
Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand, agree
to and accept all the terms of this license and intellectual property
(trademark/copyright) agreement. If you do not agree to abide by all
the terms of this agreement, you must cease using and return or
destroy all copies of Project Gutenberg™ electronic works in your
possession. If you paid a fee for obtaining a copy of or access to a
Project Gutenberg™ electronic work and you do not agree to be
bound by the terms of this agreement, you may obtain a refund
from the person or entity to whom you paid the fee as set forth in
paragraph 1.E.8.
1.B. “Project Gutenberg” is a registered trademark. It may only be
used on or associated in any way with an electronic work by people
who agree to be bound by the terms of this agreement. There are a
few things that you can do with most Project Gutenberg™ electronic
works even without complying with the full terms of this agreement.
See paragraph 1.C below. There are a lot of things you can do with
Project Gutenberg™ electronic works if you follow the terms of this
agreement and help preserve free future access to Project
Gutenberg™ electronic works. See paragraph 1.E below.
1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright law
in the United States and you are located in the United States, we do
not claim a right to prevent you from copying, distributing,
performing, displaying or creating derivative works based on the
work as long as all references to Project Gutenberg are removed. Of
course, we hope that you will support the Project Gutenberg™
mission of promoting free access to electronic works by freely
sharing Project Gutenberg™ works in compliance with the terms of
this agreement for keeping the Project Gutenberg™ name associated
with the work. You can easily comply with the terms of this
agreement by keeping this work in the same format with its attached
full Project Gutenberg™ License when you share it without charge
with others.
1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside the
United States, check the laws of your country in addition to the
terms of this agreement before downloading, copying, displaying,
performing, distributing or creating derivative works based on this
work or any other Project Gutenberg™ work. The Foundation makes
no representations concerning the copyright status of any work in
any country other than the United States.
1.E. Unless you have removed all references to Project Gutenberg:
1.E.1. The following sentence, with active links to, or other
immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project Gutenberg™
work (any work on which the phrase “Project Gutenberg” appears,
or with which the phrase “Project Gutenberg” is associated) is
accessed, displayed, performed, viewed, copied or distributed:
This eBook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this eBook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.
1.E.2. If an individual Project Gutenberg™ electronic work is derived
from texts not protected by U.S. copyright law (does not contain a
notice indicating that it is posted with permission of the copyright
holder), the work can be copied and distributed to anyone in the
United States without paying any fees or charges. If you are
redistributing or providing access to a work with the phrase “Project
Gutenberg” associated with or appearing on the work, you must
comply either with the requirements of paragraphs 1.E.1 through
1.E.7 or obtain permission for the use of the work and the Project
Gutenberg™ trademark as set forth in paragraphs 1.E.8 or 1.E.9.
1.E.3. If an individual Project Gutenberg™ electronic work is posted
with the permission of the copyright holder, your use and distribution
must comply with both paragraphs 1.E.1 through 1.E.7 and any
additional terms imposed by the copyright holder. Additional terms
will be linked to the Project Gutenberg™ License for all works posted
with the permission of the copyright holder found at the beginning
of this work.
1.E.4. Do not unlink or detach or remove the full Project
Gutenberg™ License terms from this work, or any files containing a
part of this work or any other work associated with Project
Gutenberg™.
1.E.5. Do not copy, display, perform, distribute or redistribute this
electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1
with active links or immediate access to the full terms of the Project
Gutenberg™ License.
1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if you
provide access to or distribute copies of a Project Gutenberg™ work
in a format other than “Plain Vanilla ASCII” or other format used in
the official version posted on the official Project Gutenberg™ website
(www.gutenberg.org), you must, at no additional cost, fee or
expense to the user, provide a copy, a means of exporting a copy, or
a means of obtaining a copy upon request, of the work in its original
“Plain Vanilla ASCII” or other form. Any alternate format must
include the full Project Gutenberg™ License as specified in
paragraph 1.E.1.
1.E.7. Do not charge a fee for access to, viewing, displaying,
performing, copying or distributing any Project Gutenberg™ works
unless you comply with paragraph 1.E.8 or 1.E.9.
1.E.8. You may charge a reasonable fee for copies of or providing
access to or distributing Project Gutenberg™ electronic works
provided that:
• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”
• You provide a full refund of any money paid by a user who
notifies you in writing (or by e-mail) within 30 days of receipt
that s/he does not agree to the terms of the full Project
Gutenberg™ License. You must require such a user to return or
destroy all copies of the works possessed in a physical medium
and discontinue all use of and all access to other copies of
Project Gutenberg™ works.
• You provide, in accordance with paragraph 1.F.3, a full refund of
any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.
• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.
1.E.9. If you wish to charge a fee or distribute a Project Gutenberg™
electronic work or group of works on different terms than are set
forth in this agreement, you must obtain permission in writing from
the Project Gutenberg Literary Archive Foundation, the manager of
the Project Gutenberg™ trademark. Contact the Foundation as set
forth in Section 3 below.
1.F.
1.F.1. Project Gutenberg volunteers and employees expend
considerable effort to identify, do copyright research on, transcribe
and proofread works not protected by U.S. copyright law in creating
the Project Gutenberg™ collection. Despite these efforts, Project
Gutenberg™ electronic works, and the medium on which they may
be stored, may contain “Defects,” such as, but not limited to,
incomplete, inaccurate or corrupt data, transcription errors, a
copyright or other intellectual property infringement, a defective or
damaged disk or other medium, a computer virus, or computer
codes that damage or cannot be read by your equipment.
1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for
the “Right of Replacement or Refund” described in paragraph 1.F.3,
the Project Gutenberg Literary Archive Foundation, the owner of the
Project Gutenberg™ trademark, and any other party distributing a
Project Gutenberg™ electronic work under this agreement, disclaim
all liability to you for damages, costs and expenses, including legal
fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR
NEGLIGENCE, STRICT LIABILITY, BREACH OF WARRANTY OR
BREACH OF CONTRACT EXCEPT THOSE PROVIDED IN PARAGRAPH
1.F.3. YOU AGREE THAT THE FOUNDATION, THE TRADEMARK
OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL
NOT BE LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT,
CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES EVEN IF
YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.
1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you
discover a defect in this electronic work within 90 days of receiving
it, you can receive a refund of the money (if any) you paid for it by
sending a written explanation to the person you received the work
from. If you received the work on a physical medium, you must
return the medium with your written explanation. The person or
entity that provided you with the defective work may elect to provide
a replacement copy in lieu of a refund. If you received the work
electronically, the person or entity providing it to you may choose to
give you a second opportunity to receive the work electronically in
lieu of a refund. If the second copy is also defective, you may
demand a refund in writing without further opportunities to fix the
problem.
1.F.4. Except for the limited right of replacement or refund set forth
in paragraph 1.F.3, this work is provided to you ‘AS-IS’, WITH NO
OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.
1.F.5. Some states do not allow disclaimers of certain implied
warranties or the exclusion or limitation of certain types of damages.
If any disclaimer or limitation set forth in this agreement violates the
law of the state applicable to this agreement, the agreement shall be
interpreted to make the maximum disclaimer or limitation permitted
by the applicable state law. The invalidity or unenforceability of any
provision of this agreement shall not void the remaining provisions.
1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation,
the trademark owner, any agent or employee of the Foundation,
anyone providing copies of Project Gutenberg™ electronic works in
accordance with this agreement, and any volunteers associated with
the production, promotion and distribution of Project Gutenberg™
electronic works, harmless from all liability, costs and expenses,
including legal fees, that arise directly or indirectly from any of the
following which you do or cause to occur: (a) distribution of this or
any Project Gutenberg™ work, (b) alteration, modification, or
additions or deletions to any Project Gutenberg™ work, and (c) any
Defect you cause.
Section 2. Information about the Mission
of Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new computers.
It exists because of the efforts of hundreds of volunteers and
donations from people in all walks of life.
Volunteers and financial support to provide volunteers with the
assistance they need are critical to reaching Project Gutenberg™’s
goals and ensuring that the Project Gutenberg™ collection will
remain freely available for generations to come. In 2001, the Project
Gutenberg Literary Archive Foundation was created to provide a
secure and permanent future for Project Gutenberg™ and future
generations. To learn more about the Project Gutenberg Literary
Archive Foundation and how your efforts and donations can help,
see Sections 3 and 4 and the Foundation information page at
www.gutenberg.org.
Section 3. Information about the Project
Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-profit
501(c)(3) educational corporation organized under the laws of the
state of Mississippi and granted tax exempt status by the Internal
Revenue Service. The Foundation’s EIN or federal tax identification
number is 64-6221541. Contributions to the Project Gutenberg
Literary Archive Foundation are tax deductible to the full extent
permitted by U.S. federal laws and your state’s laws.
The Foundation’s business office is located at 809 North 1500 West,
Salt Lake City, UT 84116, (801) 596-1887. Email contact links and up
to date contact information can be found at the Foundation’s website
and official page at www.gutenberg.org/contact
Section 4. Information about Donations to
the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission of
increasing the number of public domain and licensed works that can
be freely distributed in machine-readable form accessible by the
widest array of equipment including outdated equipment. Many
small donations ($1 to $5,000) are particularly important to
maintaining tax exempt status with the IRS.
The Foundation is committed to complying with the laws regulating
charities and charitable donations in all 50 states of the United
States. Compliance requirements are not uniform and it takes a
considerable effort, much paperwork and many fees to meet and
keep up with these requirements. We do not solicit donations in
locations where we have not received written confirmation of
compliance. To SEND DONATIONS or determine the status of
compliance for any particular state visit www.gutenberg.org/donate.
While we cannot and do not solicit contributions from states where
we have not met the solicitation requirements, we know of no
prohibition against accepting unsolicited donations from donors in
such states who approach us with offers to donate.
International donations are gratefully accepted, but we cannot make
any statements concerning tax treatment of donations received from
outside the United States. U.S. laws alone swamp our small staff.
Please check the Project Gutenberg web pages for current donation
methods and addresses. Donations are accepted in a number of
other ways including checks, online payments and credit card
donations. To donate, please visit: www.gutenberg.org/donate.
Section 5. General Information About
Project Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could be
freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose network of
volunteer support.
Project Gutenberg™ eBooks are often created from several printed
editions, all of which are confirmed as not protected by copyright in
the U.S. unless a copyright notice is included. Thus, we do not
necessarily keep eBooks in compliance with any particular paper
edition.
Most people start at our website which has the main PG search
facility: www.gutenberg.org.
This website includes information about Project Gutenberg™,
including how to make donations to the Project Gutenberg Literary
Archive Foundation, how to help produce our new eBooks, and how
to subscribe to our email newsletter to hear about new eBooks.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!
ebookfinal.com
Ad

More Related Content

Similar to Core Servlets and Javaserver Pages Advanced Technologies 2nd Edition Marty Hall (20)

Pg. 03Question Three Assignment 3Deadline Sunda.docx
Pg. 03Question Three Assignment 3Deadline Sunda.docxPg. 03Question Three Assignment 3Deadline Sunda.docx
Pg. 03Question Three Assignment 3Deadline Sunda.docx
karlhennesey
 
Full download Special Edition Using SOAP Special Edition Using John Paul Muel...
Full download Special Edition Using SOAP Special Edition Using John Paul Muel...Full download Special Edition Using SOAP Special Edition Using John Paul Muel...
Full download Special Edition Using SOAP Special Edition Using John Paul Muel...
gbodogianpi
 
Special Edition Using SOAP Special Edition Using John Paul Mueller
Special Edition Using SOAP Special Edition Using John Paul MuellerSpecial Edition Using SOAP Special Edition Using John Paul Mueller
Special Edition Using SOAP Special Edition Using John Paul Mueller
lhedimanij
 
Azure Infrastructure as Code: With ARM templates and Bicep 1st Edition Henry ...
Azure Infrastructure as Code: With ARM templates and Bicep 1st Edition Henry ...Azure Infrastructure as Code: With ARM templates and Bicep 1st Edition Henry ...
Azure Infrastructure as Code: With ARM templates and Bicep 1st Edition Henry ...
chaberbuechi
 
OWA And SharePoint Integration
OWA And SharePoint IntegrationOWA And SharePoint Integration
OWA And SharePoint Integration
jems7
 
www.free-ebooks-download.orgwww.free-ebooks-download.o.docx
www.free-ebooks-download.orgwww.free-ebooks-download.o.docxwww.free-ebooks-download.orgwww.free-ebooks-download.o.docx
www.free-ebooks-download.orgwww.free-ebooks-download.o.docx
odiliagilby
 
WCF Multi Layer Services Development with Entity Framework 4th Edition Editio...
WCF Multi Layer Services Development with Entity Framework 4th Edition Editio...WCF Multi Layer Services Development with Entity Framework 4th Edition Editio...
WCF Multi Layer Services Development with Entity Framework 4th Edition Editio...
rideslukan72
 
ASP NET Core Security 1st Edition Christian Wenz
ASP NET Core Security 1st Edition Christian WenzASP NET Core Security 1st Edition Christian Wenz
ASP NET Core Security 1st Edition Christian Wenz
cepernevija
 
ASP NET Professional Projects 1st Edition Hersh Bhasin
ASP NET Professional Projects 1st Edition Hersh BhasinASP NET Professional Projects 1st Edition Hersh Bhasin
ASP NET Professional Projects 1st Edition Hersh Bhasin
resulljuz
 
ASP.NET OVERVIEW
ASP.NET OVERVIEWASP.NET OVERVIEW
ASP.NET OVERVIEW
Rishi Kothari
 
Go Building Web Applications 1st Edition Nathan Kozyra Mat Ryer
Go Building Web Applications 1st Edition Nathan Kozyra Mat RyerGo Building Web Applications 1st Edition Nathan Kozyra Mat Ryer
Go Building Web Applications 1st Edition Nathan Kozyra Mat Ryer
nasliealgea
 
ASP.NET Core in Action (2018).pdf
ASP.NET Core in Action (2018).pdfASP.NET Core in Action (2018).pdf
ASP.NET Core in Action (2018).pdf
Emma Burke
 
rsa_authentication_manager_8.4_setup_config_guide.pdf
rsa_authentication_manager_8.4_setup_config_guide.pdfrsa_authentication_manager_8.4_setup_config_guide.pdf
rsa_authentication_manager_8.4_setup_config_guide.pdf
BarCode7
 
Soap toolkits
Soap toolkitsSoap toolkits
Soap toolkits
Aravindharamanan S
 
Instant Access to Go Building Web Applications 1st Edition Nathan Kozyra Mat ...
Instant Access to Go Building Web Applications 1st Edition Nathan Kozyra Mat ...Instant Access to Go Building Web Applications 1st Edition Nathan Kozyra Mat ...
Instant Access to Go Building Web Applications 1st Edition Nathan Kozyra Mat ...
flakquirin
 
Pathway,I Ts Web Client Programming Manual
Pathway,I Ts Web Client Programming ManualPathway,I Ts Web Client Programming Manual
Pathway,I Ts Web Client Programming Manual
guest2dfc87
 
ASP.NET Core Razor Pages in Action 1st Edition Mike Brind All Chapters Instan...
ASP.NET Core Razor Pages in Action 1st Edition Mike Brind All Chapters Instan...ASP.NET Core Razor Pages in Action 1st Edition Mike Brind All Chapters Instan...
ASP.NET Core Razor Pages in Action 1st Edition Mike Brind All Chapters Instan...
vanidatrota15
 
Thinapp47 packageini reference
Thinapp47 packageini referenceThinapp47 packageini reference
Thinapp47 packageini reference
Firman Indrianto
 
SharePoint Development with the SharePoint Framework
SharePoint Development with the SharePoint FrameworkSharePoint Development with the SharePoint Framework
SharePoint Development with the SharePoint Framework
JoAnna Cheshire
 
Go Building Web Applications 1st Edition Nathan Kozyra Mat Ryer download pdf
Go Building Web Applications 1st Edition Nathan Kozyra Mat Ryer download pdfGo Building Web Applications 1st Edition Nathan Kozyra Mat Ryer download pdf
Go Building Web Applications 1st Edition Nathan Kozyra Mat Ryer download pdf
amzaevgamati
 
Pg. 03Question Three Assignment 3Deadline Sunda.docx
Pg. 03Question Three Assignment 3Deadline Sunda.docxPg. 03Question Three Assignment 3Deadline Sunda.docx
Pg. 03Question Three Assignment 3Deadline Sunda.docx
karlhennesey
 
Full download Special Edition Using SOAP Special Edition Using John Paul Muel...
Full download Special Edition Using SOAP Special Edition Using John Paul Muel...Full download Special Edition Using SOAP Special Edition Using John Paul Muel...
Full download Special Edition Using SOAP Special Edition Using John Paul Muel...
gbodogianpi
 
Special Edition Using SOAP Special Edition Using John Paul Mueller
Special Edition Using SOAP Special Edition Using John Paul MuellerSpecial Edition Using SOAP Special Edition Using John Paul Mueller
Special Edition Using SOAP Special Edition Using John Paul Mueller
lhedimanij
 
Azure Infrastructure as Code: With ARM templates and Bicep 1st Edition Henry ...
Azure Infrastructure as Code: With ARM templates and Bicep 1st Edition Henry ...Azure Infrastructure as Code: With ARM templates and Bicep 1st Edition Henry ...
Azure Infrastructure as Code: With ARM templates and Bicep 1st Edition Henry ...
chaberbuechi
 
OWA And SharePoint Integration
OWA And SharePoint IntegrationOWA And SharePoint Integration
OWA And SharePoint Integration
jems7
 
www.free-ebooks-download.orgwww.free-ebooks-download.o.docx
www.free-ebooks-download.orgwww.free-ebooks-download.o.docxwww.free-ebooks-download.orgwww.free-ebooks-download.o.docx
www.free-ebooks-download.orgwww.free-ebooks-download.o.docx
odiliagilby
 
WCF Multi Layer Services Development with Entity Framework 4th Edition Editio...
WCF Multi Layer Services Development with Entity Framework 4th Edition Editio...WCF Multi Layer Services Development with Entity Framework 4th Edition Editio...
WCF Multi Layer Services Development with Entity Framework 4th Edition Editio...
rideslukan72
 
ASP NET Core Security 1st Edition Christian Wenz
ASP NET Core Security 1st Edition Christian WenzASP NET Core Security 1st Edition Christian Wenz
ASP NET Core Security 1st Edition Christian Wenz
cepernevija
 
ASP NET Professional Projects 1st Edition Hersh Bhasin
ASP NET Professional Projects 1st Edition Hersh BhasinASP NET Professional Projects 1st Edition Hersh Bhasin
ASP NET Professional Projects 1st Edition Hersh Bhasin
resulljuz
 
Go Building Web Applications 1st Edition Nathan Kozyra Mat Ryer
Go Building Web Applications 1st Edition Nathan Kozyra Mat RyerGo Building Web Applications 1st Edition Nathan Kozyra Mat Ryer
Go Building Web Applications 1st Edition Nathan Kozyra Mat Ryer
nasliealgea
 
ASP.NET Core in Action (2018).pdf
ASP.NET Core in Action (2018).pdfASP.NET Core in Action (2018).pdf
ASP.NET Core in Action (2018).pdf
Emma Burke
 
rsa_authentication_manager_8.4_setup_config_guide.pdf
rsa_authentication_manager_8.4_setup_config_guide.pdfrsa_authentication_manager_8.4_setup_config_guide.pdf
rsa_authentication_manager_8.4_setup_config_guide.pdf
BarCode7
 
Instant Access to Go Building Web Applications 1st Edition Nathan Kozyra Mat ...
Instant Access to Go Building Web Applications 1st Edition Nathan Kozyra Mat ...Instant Access to Go Building Web Applications 1st Edition Nathan Kozyra Mat ...
Instant Access to Go Building Web Applications 1st Edition Nathan Kozyra Mat ...
flakquirin
 
Pathway,I Ts Web Client Programming Manual
Pathway,I Ts Web Client Programming ManualPathway,I Ts Web Client Programming Manual
Pathway,I Ts Web Client Programming Manual
guest2dfc87
 
ASP.NET Core Razor Pages in Action 1st Edition Mike Brind All Chapters Instan...
ASP.NET Core Razor Pages in Action 1st Edition Mike Brind All Chapters Instan...ASP.NET Core Razor Pages in Action 1st Edition Mike Brind All Chapters Instan...
ASP.NET Core Razor Pages in Action 1st Edition Mike Brind All Chapters Instan...
vanidatrota15
 
Thinapp47 packageini reference
Thinapp47 packageini referenceThinapp47 packageini reference
Thinapp47 packageini reference
Firman Indrianto
 
SharePoint Development with the SharePoint Framework
SharePoint Development with the SharePoint FrameworkSharePoint Development with the SharePoint Framework
SharePoint Development with the SharePoint Framework
JoAnna Cheshire
 
Go Building Web Applications 1st Edition Nathan Kozyra Mat Ryer download pdf
Go Building Web Applications 1st Edition Nathan Kozyra Mat Ryer download pdfGo Building Web Applications 1st Edition Nathan Kozyra Mat Ryer download pdf
Go Building Web Applications 1st Edition Nathan Kozyra Mat Ryer download pdf
amzaevgamati
 

Recently uploaded (20)

apa-style-referencing-visual-guide-2025.pdf
apa-style-referencing-visual-guide-2025.pdfapa-style-referencing-visual-guide-2025.pdf
apa-style-referencing-visual-guide-2025.pdf
Ishika Ghosh
 
One Hot encoding a revolution in Machine learning
One Hot encoding a revolution in Machine learningOne Hot encoding a revolution in Machine learning
One Hot encoding a revolution in Machine learning
momer9505
 
To study the nervous system of insect.pptx
To study the nervous system of insect.pptxTo study the nervous system of insect.pptx
To study the nervous system of insect.pptx
Arshad Shaikh
 
Odoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo SlidesOdoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo Slides
Celine George
 
Quality Contril Analysis of Containers.pdf
Quality Contril Analysis of Containers.pdfQuality Contril Analysis of Containers.pdf
Quality Contril Analysis of Containers.pdf
Dr. Bindiya Chauhan
 
Metamorphosis: Life's Transformative Journey
Metamorphosis: Life's Transformative JourneyMetamorphosis: Life's Transformative Journey
Metamorphosis: Life's Transformative Journey
Arshad Shaikh
 
Handling Multiple Choice Responses: Fortune Effiong.pptx
Handling Multiple Choice Responses: Fortune Effiong.pptxHandling Multiple Choice Responses: Fortune Effiong.pptx
Handling Multiple Choice Responses: Fortune Effiong.pptx
AuthorAIDNationalRes
 
Understanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s GuideUnderstanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s Guide
GS Virdi
 
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Celine George
 
GDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptxGDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptx
azeenhodekar
 
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
larencebapu132
 
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Library Association of Ireland
 
Presentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem KayaPresentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem Kaya
MIPLM
 
Exploring-Substances-Acidic-Basic-and-Neutral.pdf
Exploring-Substances-Acidic-Basic-and-Neutral.pdfExploring-Substances-Acidic-Basic-and-Neutral.pdf
Exploring-Substances-Acidic-Basic-and-Neutral.pdf
Sandeep Swamy
 
Unit 6_Introduction_Phishing_Password Cracking.pdf
Unit 6_Introduction_Phishing_Password Cracking.pdfUnit 6_Introduction_Phishing_Password Cracking.pdf
Unit 6_Introduction_Phishing_Password Cracking.pdf
KanchanPatil34
 
How to Manage Opening & Closing Controls in Odoo 17 POS
How to Manage Opening & Closing Controls in Odoo 17 POSHow to Manage Opening & Closing Controls in Odoo 17 POS
How to Manage Opening & Closing Controls in Odoo 17 POS
Celine George
 
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulsepulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
sushreesangita003
 
How to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 WebsiteHow to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 Website
Celine George
 
Sinhala_Male_Names.pdf Sinhala_Male_Name
Sinhala_Male_Names.pdf Sinhala_Male_NameSinhala_Male_Names.pdf Sinhala_Male_Name
Sinhala_Male_Names.pdf Sinhala_Male_Name
keshanf79
 
Operations Management (Dr. Abdulfatah Salem).pdf
Operations Management (Dr. Abdulfatah Salem).pdfOperations Management (Dr. Abdulfatah Salem).pdf
Operations Management (Dr. Abdulfatah Salem).pdf
Arab Academy for Science, Technology and Maritime Transport
 
apa-style-referencing-visual-guide-2025.pdf
apa-style-referencing-visual-guide-2025.pdfapa-style-referencing-visual-guide-2025.pdf
apa-style-referencing-visual-guide-2025.pdf
Ishika Ghosh
 
One Hot encoding a revolution in Machine learning
One Hot encoding a revolution in Machine learningOne Hot encoding a revolution in Machine learning
One Hot encoding a revolution in Machine learning
momer9505
 
To study the nervous system of insect.pptx
To study the nervous system of insect.pptxTo study the nervous system of insect.pptx
To study the nervous system of insect.pptx
Arshad Shaikh
 
Odoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo SlidesOdoo Inventory Rules and Routes v17 - Odoo Slides
Odoo Inventory Rules and Routes v17 - Odoo Slides
Celine George
 
Quality Contril Analysis of Containers.pdf
Quality Contril Analysis of Containers.pdfQuality Contril Analysis of Containers.pdf
Quality Contril Analysis of Containers.pdf
Dr. Bindiya Chauhan
 
Metamorphosis: Life's Transformative Journey
Metamorphosis: Life's Transformative JourneyMetamorphosis: Life's Transformative Journey
Metamorphosis: Life's Transformative Journey
Arshad Shaikh
 
Handling Multiple Choice Responses: Fortune Effiong.pptx
Handling Multiple Choice Responses: Fortune Effiong.pptxHandling Multiple Choice Responses: Fortune Effiong.pptx
Handling Multiple Choice Responses: Fortune Effiong.pptx
AuthorAIDNationalRes
 
Understanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s GuideUnderstanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s Guide
GS Virdi
 
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...Multi-currency in odoo accounting and Update exchange rates automatically in ...
Multi-currency in odoo accounting and Update exchange rates automatically in ...
Celine George
 
GDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptxGDGLSPGCOER - Git and GitHub Workshop.pptx
GDGLSPGCOER - Git and GitHub Workshop.pptx
azeenhodekar
 
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...
larencebapu132
 
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Marie Boran Special Collections Librarian Hardiman Library, University of Gal...
Library Association of Ireland
 
Presentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem KayaPresentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem Kaya
MIPLM
 
Exploring-Substances-Acidic-Basic-and-Neutral.pdf
Exploring-Substances-Acidic-Basic-and-Neutral.pdfExploring-Substances-Acidic-Basic-and-Neutral.pdf
Exploring-Substances-Acidic-Basic-and-Neutral.pdf
Sandeep Swamy
 
Unit 6_Introduction_Phishing_Password Cracking.pdf
Unit 6_Introduction_Phishing_Password Cracking.pdfUnit 6_Introduction_Phishing_Password Cracking.pdf
Unit 6_Introduction_Phishing_Password Cracking.pdf
KanchanPatil34
 
How to Manage Opening & Closing Controls in Odoo 17 POS
How to Manage Opening & Closing Controls in Odoo 17 POSHow to Manage Opening & Closing Controls in Odoo 17 POS
How to Manage Opening & Closing Controls in Odoo 17 POS
Celine George
 
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulsepulse  ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulse
sushreesangita003
 
How to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 WebsiteHow to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 Website
Celine George
 
Sinhala_Male_Names.pdf Sinhala_Male_Name
Sinhala_Male_Names.pdf Sinhala_Male_NameSinhala_Male_Names.pdf Sinhala_Male_Name
Sinhala_Male_Names.pdf Sinhala_Male_Name
keshanf79
 
Ad

Core Servlets and Javaserver Pages Advanced Technologies 2nd Edition Marty Hall

  • 1. Core Servlets and Javaserver Pages Advanced Technologies 2nd Edition Marty Hall pdf download https://ebookfinal.com/download/core-servlets-and-javaserver- pages-advanced-technologies-2nd-edition-marty-hall/ Explore and download more ebooks or textbooks at ebookfinal.com
  • 2. Here are some recommended products for you. Click the link to download, or explore more at ebookfinal JavaServer pages 2nd ed Edition Hans Bergsten https://ebookfinal.com/download/javaserver-pages-2nd-ed-edition-hans- bergsten/ Web Development with JavaServer Pages 2nd Edition Duane K. Fields https://ebookfinal.com/download/web-development-with-javaserver- pages-2nd-edition-duane-k-fields/ Core Web Programming Volumes I II Includes index 2nd ed Edition Hall https://ebookfinal.com/download/core-web-programming-volumes-i-ii- includes-index-2nd-ed-edition-hall/ Murach s Java Servlets and JSP 2nd Edition Andrea Steelman https://ebookfinal.com/download/murach-s-java-servlets-and-jsp-2nd- edition-andrea-steelman/
  • 3. Core Java 2 Advanced Features 5th Edition Cay S. Horstmann https://ebookfinal.com/download/core-java-2-advanced-features-5th- edition-cay-s-horstmann/ Beer For Dummies 2nd Edition For Dummies Cooking Marty Nachel https://ebookfinal.com/download/beer-for-dummies-2nd-edition-for- dummies-cooking-marty-nachel/ Common Core Curriculum English Grades 9 12 2nd Edition Common Core https://ebookfinal.com/download/common-core-curriculum-english- grades-9-12-2nd-edition-common-core/ Advanced wireless communications 4G technologies 1st Edition Savo G. Glisic https://ebookfinal.com/download/advanced-wireless- communications-4g-technologies-1st-edition-savo-g-glisic/ Victoriana 2nd Edition Core Rulebook Various https://ebookfinal.com/download/victoriana-2nd-edition-core-rulebook- various/
  • 5. Core Servlets and Javaserver Pages Advanced Technologies 2nd Edition Marty Hall Digital Instant Download Author(s): Marty Hall, Larry Brown, YaakovChaikin ISBN(s): 9780131482609, 0131482602 Edition: 2 File Details: PDF, 10.67 MB Year: 2007 Language: english
  • 7. core SERVLETS AND JAVASERVER PAGES VOLUME 2–ADVANCED TECHNOLOGIES SECOND EDITION
  • 9. MARTY HALL LARRY BROWN YAAKOV CHAIKIN Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo • Singapore • Mexico City core SERVLETS AND JAVASERVER PAGES VOLUME 2–ADVANCED TECHNOLOGIES SECOND EDITION
  • 10. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The authors and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or spe- cial sales, which may include electronic versions and/or custom covers and content particular to your busi- ness, training goals, marketing focus, and branding interests. For more information, please contact: U.S. Corporate and Government Sales (800) 382-3419 [email protected] For sales outside the United States please contact: International Sales [email protected] Visit us on the Web: www.prenhallprofessional.com Library of Congress Control Number: 2003058100 Copyright © 2008 Pearson Education, Inc. All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permissions, write to: Pearson Education, Inc Rights and Contracts Department 501 Boylston Street, Suite 900 Boston, MA 02116 Fax (617) 671 3447 ISBN-13: 978-0-13-148260-9 ISBN-10: 0-13-148260-2 Text printed in the United States on recycled paper at Courier in Stoughton, Massachusetts. First printing, December 2007
  • 11. v Contents Contents INTRODUCTION xvii Who Should Read This Book xviii Conventions xix About the Web Site xx ACKNOWLEDGMENTS xxi ABOUT THE AUTHORS xxii 1 USING AND DEPLOYING WEB APPLICATIONS 2 1.1 Purpose of Web Applications 3 Organization 4 Portability 4 Separation 4 1.2 Structure of Web Applications 5 Locations for Various File Types 5
  • 12. Contents vi 1.3 Registering Web Applications with the Server 9 Registering a Web Application with Tomcat 10 Registering a Web Application with Other Servers 12 1.4 Development and Deployment Strategies 14 Copying to a Shortcut or Symbolic Link 15 Using IDE-Specific Deployment Features 16 Using Ant, Maven, or a Similar Tool 16 Using an IDE in Combination with Ant 17 1.5 The Art of WAR: Bundling Web Applications into WAR Files 17 1.6 Building a Simple Web Application 18 Download and Rename app-blank to testApp 18 Download test.html, test.jsp, and TestServlet.java 19 Add test.html, test.jsp to the testApp Web Application 19 Place TestServlet.java into the testApp/WEB-INF/classes/coreservlets Directory 20 Compile TestServlet.java 20 Declare TestServlet.class and the URL That Will Invoke It in web.xml 21 Copy testApp to tomcat_dir/webapps 23 Start Tomcat 23 Access testApp with the URL of the Form http://localhost/testApp/someResource 23 1.7 Sharing Data Among Web Applications 25 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 Version 2.4 38 Version 2.3 40 2.4 Assigning Names and Custom URLs 42 Assigning Names 42
  • 13. Contents vii Defining Custom URLs 44 Naming JSP Pages 50 2.5 Disabling the Invoker Servlet 52 Remapping the /servlet/ URL Pattern 53 Globally Disabling the Invoker: Tomcat 55 2.6 Initializing and Preloading Servlets and JSP Pages 56 Assigning Servlet Initialization Parameters 56 Assigning JSP Initialization Parameters 60 Supplying Application-Wide Initialization Parameters 63 Loading Servlets When the Server Starts 64 2.7 Declaring Filters 68 2.8 Specifying Welcome Pages 71 2.9 Designating Pages to Handle Errors 72 The error-code Element 73 The exception-type Element 75 2.10 Providing Security 78 Designating the Authentication Method 78 Restricting Access to Web Resources 80 Assigning Role Names 83 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 Locating Tag Library Descriptors 86 Configuring JSP Page Properties 87 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
  • 14. Contents viii 3 DECLARATIVE SECURITY 104 3.1 Form-Based Authentication 106 Setting Up Usernames, Passwords, and Roles 108 Telling the Server You Are Using Form-Based Authentication; Designating Locations of Login and Login-Failure Pages 110 Creating the Login Page 111 Creating the Page to Report Failed Login Attempts 114 Specifying URLs That Should Be Password Protected 115 Listing All Possible Abstract Roles 118 Specifying URLs That Should Be Available Only with SSL 119 Turning Off the Invoker Servlet 120 3.2 Example: Form-Based Authentication 122 The Home Page 122 The Deployment Descriptor 123 The Password File 127 The Login and Login-Failure Pages 128 The investing Directory 129 The ssl Directory 132 The admin Directory 138 The NoInvoker Servlet 140 Unprotected Pages 141 3.3 BASIC Authentication 143 Setting Up Usernames, Passwords, and Roles 145 Telling the Server You Are Using BASIC Authentication; Designating Realm 145 Specifying URLs That Should Be Password Protected 146 Listing All Possible Abstract Roles 146 Specifying URLs That Should Be Available Only with SSL 147 3.4 Example: BASIC Authentication 147 The Home Page 147
  • 15. Contents ix The Deployment Descriptor 149 The Password File 151 The Financial Plan 152 The Business Plan 154 The NoInvoker Servlet 156 3.5 Configuring Tomcat to Use SSL 156 3.6 WebClient: Talking to Web Servers Interactively 164 3.7 Signing a Server Certificate 167 Exporting the CA Certificate 170 Using WebClient with Tomcat and SSL 175 4 PROGRAMMATIC SECURITY 178 4.1 Combining Container-Managed and Programmatic Security 180 Security Role References 182 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 Determining If SSL Is in Use 195 Redirecting Non-SSL Requests 195 Discovering the Number of Bits in the Key 196 Looking Up the Encryption Algorithm 196 Accessing Client X.509 Certificates 197 4.6 Example: Programmatic Security and SSL 197 5 SERVLET AND JSP FILTERS 202 5.1 Creating Basic Filters 204 Create a Class That Implements the Filter Interface 205 Put the Filtering Behavior in the doFilter Method 206 Call the doFilter Method of the FilterChain Object 206
  • 16. Contents x Register the Filter with the Appropriate Servlets and JSP Pages 207 Disable the Invoker Servlet 209 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 A Reusable Response Wrapper 235 5.10 Example: A Replacement Filter 237 A Generic Modification Filter 237 A Specific Modification Filter 239 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 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 Disabling Cookies 305 6.9 Watching for Changes in Session Attributes 306 6.10 Example: Monitoring Yacht Orders 307
  • 17. Contents xi 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 Tracking Orders for the Daily Special 326 Resetting the Daily Special Order Count 334 6.16 The Complete Events Deployment Descriptor 339 7 TAG LIBRARIES: THE BASICS 346 7.1 Tag Library Components 348 The Tag Handler Class 348 The Tag Library Descriptor File 349 The JSP File 352 7.2 Example: Simple Prime Tag 353 7.3 Assigning Attributes to Tags 357 Tag Attributes: Tag Handler Class 357 Tag Attributes: Tag Library Descriptor 358 Tag Attributes: JSP File 359 7.4 Example: Prime Tag with Variable Length 359 7.5 Including Tag Body in the Tag Output 362 Tag Bodies: Tag Handler Class 362 Tag Bodies: Tag Library Descriptor 363 Tag Bodies: JSP File 363 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
  • 18. Contents xii 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 Dynamic Attribute Values: Tag Handler Class 385 Dynamic Attribute Values: Tag Library Descriptor 386 Dynamic Attribute Values: JSP File 386 8.4 Example: Simple Looping Tag 387 8.5 Assigning Complex Objects as Values to Tag Attributes 391 Complex Dynamic Attribute Values: Tag Handler Class 391 Complex Dynamic Attribute Values: Tag Library Descriptor 391 Complex Dynamic Attribute Values: JSP File 392 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 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
  • 19. Contents xiii 10 THE STRUTS FRAMEWORK: BASICS 440 10.1 Understanding Struts 441 Different Views of Struts 441 Advantages of Apache Struts (Compared to MVC with RequestDispatcher and the EL) 442 Disadvantages of Apache Struts (Compared to MVC with RequestDispatcher and the EL) 444 10.2 Setting Up Struts 446 Installing Struts 446 Testing Struts 448 Making Your Own Struts Applications 448 Adding Struts to an Existing Web Application 449 10.3 The Struts Flow of Control and the Six Steps to Implementing It 450 Struts Flow of Control 450 The Six Basic Steps in Using Struts 454 10.4 Processing Requests with Action Objects 458 Understanding Actions 458 Example: One Result Mapping 463 Example: Multiple Result Mappings 470 Combining Shared Condition (Forward) Mappings 479 10.5 Handling Request Parameters with Form Beans 481 Struts Flow of Control: Updates for Bean Use 482 The Six Basic Steps in Using Struts 484 Understanding Form Beans 486 Displaying Bean Properties 488 Example: Form and Results Beans 490 10.6 Prepopulating and Redisplaying Input Forms 504 Struts Flow of Control 504 The Six Basic Steps in Using Struts 506 Using Struts html: Tags 508 Prepopulating Forms 510 Example: Prepopulating Forms 511
  • 20. Contents xiv URL Design Strategies for Actions 523 Redisplaying Forms 525 Example: Redisplaying Forms 528 11 THE STRUTS FRAMEWORK: DOING MORE 538 11.1 Using Properties Files 539 Advantages of Properties Files 540 Struts Flow of Control—Updates for Properties Files 540 Steps for Using Properties Files 542 Example: Simple Messages 546 Dynamic Keys 552 Parameterized Messages 553 11.2 Internationalizing Applications 554 Loading Locale-Specific Properties Files 554 Setting Language Preferences in Browsers 554 Example: Internationalizing for English, Spanish, and French 555 Results 556 11.3 Laying Out Pages with Tiles 558 Tiles Motivations 558 Prerequisites for Tiles 558 The Four Basic Steps in Using Tiles 560 Example: Simple Tiles 563 Handling Relative URLs 568 Example: e-boats Application 570 11.4 Using Tiles Definitions 582 Tiles Definitions Motivations 583 The Five Basic Steps in Using Tiles Definitions 583 Example: e-boats Application with Tiles Definitions 586
  • 21. Contents xv 12 THE STRUTS FRAMEWORK: VALIDATING USER INPUT 592 12.1 Validating in the Action Class 594 Struts Flow of Control 594 Performing Validation in the Action 596 Example: Choosing Colors and Font Sizes for Resume 599 12.2 Validating in the Form Bean 607 Struts Flow of Control 607 Performing Validation in the ActionForm 609 Example: Choosing Colors and Font Sizes for a Resume (Take 2) 612 Using Parameterized Error Messages 620 Example: Validation with Parameterized Messages 620 12.3 Using the Automatic Validation Framework 624 Manual versus Automatic Validation 624 Client-Side versus Server-Side Validation 624 Struts Flow of Control 625 Steps in Using Automatic Validation 627 Example: Automatic Validation 633 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 Defining the Ant Project 648 Writing Targets 650 Assigning Tasks to Targets 651 Running an Ant Target 651 A.4 Reviewing Common Ant Tasks 652 The echo Task 652 The tstamp Task 653 The mkdir Task 654
  • 22. Contents xvi The delete Task 654 The copy Task 656 The javac Task 658 A.5 Example: Writing a Simple Ant Project 661 A.6 Using Ant to Build a Web Application 668 Ant Dependencies 669 A.7 Example: Building a Web Application 670 The prepare Target 670 The copy Target 671 The build Target 672 A.8 Using Ant to Create a WAR File 675 The jar Task 676 The manifest Task 678 A.9 Example: Creating a Web Application WAR File 679 The war Target 679 INDEX 683
  • 23. xvii Chapter Introduction Introduction Suppose your company wants to sell products online. You have a database that gives the price and inventory status of each item. However, your database doesn’t speak HTTP, the protocol that Web browsers use. Nor does it output HTML, the format Web browsers need. What can you do? Once users know what they want to buy, how do you gather that information? You want to customize your site for visitors’ prefer- ences and interests, but how? You want to keep track of user’s purchases as they shop at your site, but what techniques are required to implement this behavior? When your Web site becomes popular, you might want to compress pages to reduce band- width. How can you do this without causing your site to fail for those visitors whose browsers don’t support compression? In all these cases, you need a program to act as the intermediary between the browser and some server-side resource. This book is about using the Java platform for this type of program. “Wait a second,” you say. “Didn’t you already write a book about that?” Well, yes. In May of 2000, Sun Microsystems Press and Prentice Hall released Marty Hall’s sec- ond book, Core Servlets and JavaServer Pages. It was successful beyond everyone’s wildest expectations, selling approximately 100,000 copies, getting translated into Bulgarian, Chinese simplified script, Chinese traditional script, Czech, French, Ger- man, Hebrew, Japanese, Korean, Polish, Russian, and Spanish, and being chosen by Amazon.com as one of the top five computer programming books of 2001. What fun! Since then, use of servlets and JSP has continued to grow at a phenomenal rate. The Java 2 Platform has become the technology of choice for developing e-commerce applications, dynamic Web sites, and Web-enabled applications and service. Servlets and JSP continue to be the foundation of this platform—they pro- vide the link between Web clients and server-side applications. Virtually all major
  • 24. Introduction xviii Web servers for Windows, UNIX (including Linux), Mac OS, VMS, and mainframe operating systems now support servlet and JSP technology either natively or by means of a plug-in. With only a small amount of configuration, you can run servlets and JSP in Microsoft IIS, the Apache Web Server, IBM WebSphere, BEA WebLogic, Oracle Application Server 10g, and dozens of other servers. Perfor- mance of both commercial and open-source servlet and JSP engines has improved significantly. To no one’s surprise, this field continues to grow at a rapid rate. As a result, we could no longer cover the technology in a single book. Core Servlets and JavaServer Pages, Volume 1: Core Technologies, covers the servlet and JSP capabilities that you are likely to use in almost every real-life project. This book, Volume 2: Advanced Technologies, covers features that you may use less frequently but are extremely valu- able in robust applications. For example, • Deployment descriptor file. Through the proper use of the deployment descriptor file, web.xml, you can control many aspects of the Web application behavior, from preloading servlets, to restricting resource access, to controlling session time-outs. • Web application security. In any Web application today, security is a must! The servlet and JSP security model allows you to easily create login pages and control access to resources. • Custom tag libraries. Custom tags significantly improve the design of JSPs. Custom tags allow you to easily develop your own library of reusable tags specific to your business applications. In addition to creating your own tags, we cover the Standard Tag Library (JSTL). • Event handling. With the events framework, you can control initialization and shutdown of the Web application, recognize destruction of HTTP sessions, and set application-wide values. • Servlet and JSP filters. With filters, you can apply many pre- and post-processing actions. For instance, logging incoming requests, blocking access, and modifying the servlet or JSP response. • Apache Struts. This framework greatly enhances the standard model-view-controller (MVC) architecture available with servlets and JSPs. More importantly, Apache Struts still remains one of the most common frameworks used in industry. Who Should Read This Book The main audience is developers who are familiar with basic servlet and JSP technol- ogies, but want to make use of advanced capabilities. As we cover many topics in this book—the deployment descriptor file, security, listeners, custom tags, JSTL, Struts,
  • 25. Introduction xix Ant—you may want to first start with the technologies of most interest, and then later read the remaining material. Most commercial servlet and JSP Web applications take advantage of the technologies presented throughout, thus, at some point you may want to read the complete book. If you are new to servlets and JSPs, you will want to read Core Servlets and Java- Server Pages, Volume 1: Core Technologies. In addition to teaching you how to install and configure a servlet container, Volume 1 provides excellent coverage of the servlet and JSP specifications. Volume 1 provides the foundation material to this book. Both books assume that you are familiar with basic Java programming. You don’t have to be an expert Java developer, but if you know nothing about the Java program- ming language, this is not the place to start. After all, servlet and JSP technology is an application of the Java programming language. If you don’t know the language, you can’t apply it. So, if you know nothing about basic Java development, start with a good introductory book like Thinking in Java, Core Java, or Core Web Programming, all from Prentice Hall. Conventions Throughout the book, concrete programming constructs or program output are pre- sented in a monospaced font. For example, when abstractly discussing server-side programs that use HTTP, we might refer to “HTTP servlets” or just “servlets,” but when we say HttpServlet we are talking about a specific Java class. User input is indicated in boldface, and command-line prompts are either generic (Prompt>) or indicate the operating system to which they apply (DOS>). For instance, the following indicates that “Some Output” is the result when “java SomeProgram” is executed on any platform. Prompt> java SomeProgram Some Output URLs, file names, and directory names are presented in a sans serif font. So, for example, we would say “the StringTokenizer class” (monospaced because we’re talking about the class name) and “Listing such and such shows SomeFile.java” (sans- serif because we’re talking about the file name). Paths use forward slashes as in URLs unless they are specific to the Windows operating system. So, for instance, we would use a forward slash when saying “look in install_dir/bin” (OS neutral), but use backslashes when saying “see C:WindowsTemp” (Windows specific). Important standard techniques are indicated by specially marked entries, as in the following example.
  • 26. Discovering Diverse Content Through Random Scribd Documents
  • 27. I got a firmer grip on Perry's collar. "Come and get me," I called back, knowing what would happen if they did. They came in on the double with their freeze guns ready—and halted, looking sheepish, when the smiley's aura got to them. "Aw, forget it," the corporal said. "You're a good guy, Bailey. Go ahead. Go anywhere you like." "Sure," the other seconded. "Take our air-scooter if you want. Need any extra credits where you're going?" I headed for the service with Perry again but we had waited too long. One of Shanig's uglies was standing in the doorway with a foolish grin on his face, and I knew there would be others waiting in the alley outside. And those others wouldn't be under Joey's influence. So I cut for the front entrance instead, dragging Perry like a bag of old laundry. The patrolies' air-scooter stood purring at the curb. I draped Perry across it and jumped for the operator's seat, expecting to be beamed down any second. I'd have made it, too, but for Perry. Perry had taken on a monumental load of skohl during the day, and the instant he was out of Joey's influence the inflated little ego of him demanded to be heard. He scrambled off the air-scooter, swelled out his size thirty-two chest and launched into an old rocketroom ballad—a smutty saga listing the personal iniquities of the Captain Crow who led the first Mars flight just before the turn of the century. In nineteen hundred and ninety-two A homo from Milwaukee Warmed up his jets and— I quieted him with a rabbit punch and tossed him back on the air- scooter, but the damage was done. I hit the control seat again just as Shanig's crew swarmed out of the alley and surrounded us.
  • 28. The air-scooter took off like a rocket when I gave it the gun, plowing straight through them. I hung on somehow, but Perry wasn't so lucky. He bounced once and pitched off, square into the enemy's hands. When I looked back at the first street intersection they had scooped him up and were headed toward Solar Shipping in a hurry. The sight reassured me a little. They hadn't blasted Perry on the spot, which meant that they would probably hold him as hostage until they got Cheryl as well. One witness at large was as dangerous to Shanig as two, and the chances were he wouldn't risk beaming out one unless he could be sure of both. I took the only course left, doubling the air-scooter back and skimming toward Shanig's offices. V The way the situation added up reminded me of the old historical thrillers I'd read as a kid, most of them written in the days when our rough-and-ready ancestors bought contraband skohl from underground talk-gentlies and rival groups of uglies hijinked each other with torpedoes. It was something like a present-day telemovie gripper in a sense, only there wasn't any Colonel Super in this plot to lend me a hand. Not that I wasted time looking for help. I wasn't used to it. Outside the Solar Shipping building I lifted the air-scooter and swooped up to the balcony outside Shanig's office windows. There wasn't time to set it down. I needed every second to get inside before Shanig could give the alarm.
  • 29. I jumped, and the air-scooter went on without me into the night. It wouldn't have worked on Earth, but under Mars' .38 gravity an athletic homo has all the breaks. I landed just inside the guard-rail and dived through the balcony windows with a great crashing of glass before Shanig could clap a hand to the buzzer on his desk. "Don't touch it," I said, and turned my Quantrell on him. "You!" Shanig barked. His face went sallower than ever, but his hot black eyes didn't waver. "What do you want here?" Down the corridor rose a sudden babel of voices—Shanig's crew returning with their prize.
  • 30. "They got Acree," I said, heading for the phonovision unit beside Shanig's desk. "But if you make a sound before they get here you won't be able to use him. Clear?" The screen lit up when I touched the switch. I punched the code Cheryl had given me, and drew the first deep breath I'd had for an hour when she looked out at me. "Bring Cora over to Shanig's office on the double," I said. "I'm going to need her but quick!" I cut her off without waiting for an answer and punched another number. Captain Giles stared out at me this time, his weathered hatched face clownish with astonishment. "Get a crew of patrolies up to Shanig's offices," I said. "And make it fast or there's going to be more excitement here than you can write off your records in a month." For the first time Shanig looked worried. He saw no threat in Cheryl's coming, not knowing about my second smiley. But if Captain Giles should arrive before Perry could be moved— The crew of uglies outside crossed me up by buzzing Shanig's audiphone. "We got the little homo, Chief. Shall we bring him in?" Shanig, knowing that I couldn't afford to beam him at this stage of the game, tipped them before I could stop him. "Take him away. Bailey's here!" I jumped for the door, hoping to grab Perry before they got him away. I was too late. They were already out of the reception office. All I saw of Perry Acree was his heels. That left us at stalemate. Shanig couldn't get away, and I couldn't leave him unguarded to go after Perry. I was racking my brain for the next move when it was taken out of my hands. The phonovision screen beside Shanig's desk lighted up and one of his uglies looked out. "We got him where he won't be found, Chief. What next?"
  • 31. And I let Shanig beat me to the jump again. "The girl is coming here. Intercept her!" I made sure it wouldn't happen again by raying the phonovision unit to a heap of smoking junk. Reflected heat from the flash curled Shanig's eyebrows, but he didn't flinch. "That finishes you, Bailey," he said. "My men have Acree safe. They'll have the girl the instant she appears. Under the circumstances it should be quite entertaining to watch you prove your position to the police." He had me cold. Shanig could afford to wait but I couldn't. It turned out that Shanig's handymen didn't share his confidence in the police. I heard them getting set in the reception-room corridor to block any dash I might make. When I sneaked a look through the balcony windows I caught a glimpse of another group working like beavers in the building across the alley. They were setting up a tripod affair which I recognized at a glance as a sleep-bomb catapult. They had it charged to fire when Captain Giles and his patrolies arrived. A babble of confusion rose in the corridor again, and the Captain's harsh bellow silenced it like a hand across the mouth. A moment later he called through the doorway: "Stand fast, Bailey. We're coming in, and God help you if you give us trouble!" I stood fast, giving up any hope of Cheryl's showing up in time. Having Cora along should make it easy enough for her to get into the building, but even Cora couldn't help if Captain Giles had already dragged me away. Giles came around Shanig's desk toward me, his hatchet face thunderous. "I've warned you often enough, Bailey. This time you've gone too far."
  • 32. Shanig treated himself to one of his sandpaper chuckles. "He'll probably give you some wild story designed to clear himself, Captain. Don't believe a word of it. I trusted him, and you can see what it led to!" The Captain was taking my Quantrell blaster when my reprieve came. One of Shanig's uglies burst into the office with disaster written all over him. "Chief, the girl's coming up in the lift with another smiley! The whole lower floor is hypnotized. She'd have got me too if the lift hadn't carried me out of reach!" I'll give Shanig credit for this—he thought fast. He added up the score in a flash and lunged across the desk, yelling for his startled uglies to follow up. If Cheryl got to us with the smiley the jig was up, and he knew it. He ripped the Quantrell blaster out of Captain Giles' hand and turned it on us. He meant to wipe out the lot and clear himself by laying the carnage to a battle between me and the patrol. It was close, but not close enough. A sudden serenity wiped the tension off his face like chalk marks off a blackboard. Captain Giles and his patrolies slacked off with him, caught in the same euphoric spell. They stood smiling and docile while Cheryl Trayne strode in with Cora's little tungsten cage under her arm. If she had looked good to me before, right then she looked like a red-haired angel. "Good girl," I said, and took over from there. Shanig confessed on the spot to the slimy deal he had pulled over me, and signed a statement to that effect. He got on the reception- room phonovision and ordered his crew in the adjoining building to drop everything and return Perry Acree at once. He destroyed the bogus contract and took back the elastic check he had given me, and he enjoyed doing it. Cora, sensing Joey so close in the Argonaut Bar across the street, was working her mating call overtime.
  • 33. "It was really inconsiderate of you to swindle our young friend William," the Captain said to Shanig. "Of course you won't object to serving a light sentence—say five years—to make amends?" "Certainly not," Shanig said brightly, beaming back at him. "My only regret is that I must be separated from this adorable creature. I love smileys." He went over to the desk where Cheryl had left Cora's cage and fondled the little brute through the wires. He played the very devil in doing it, too. Somehow or other the cage door had worked loose during the time it had been banged about, and Shanig's fumbling hands slid it open. Cora was out of the cage and through the broken balcony windows in a smoky bluish flash, whizzing like a bullet toward the Argonaut Club and Joey. VI Everybody snapped back to normal with a roar. There was a frantic rush of Shanig's uglies trying to escape and of Giles' patrolies collaring them again. I took no chances with Shanig. I turned my Quantrell on him and held him fast. Hell broke loose in the Argonaut then. Even before the confusion quieted in Shanig's office we could hear the din that went up across the street. From our balcony windows we had a grandstand view of the Argonaut's more timid patrons exploding out of the place and tearing down the street, wobbling and lurching each in his own outlandish fashion from the assortment of Eetee drinks they had taken aboard under Joey's spell. The rougher souls left inside had begun a battle royal that raised a bedlam wilder than a robot rooting section at a rocket-games stadium.
  • 34. "What is it!" Captain Giles yelled, goggling at a barrel-bellied Europan who shot out of the Argonaut with a pack of little baboon- faced Marties harrying its speeding cart from the rear. "What have you done now?" "Shanig has just ruined a forty-thousand-credit investment for me," I told him, "by letting my pair of smileys get together. That peace-be- on-you feeling they've been broadcasting is a thing of the past. They feel just the opposite now, and so will anyone who goes near them." I had to explain it twice before they got it. Mimasan smileys, as I've said before, are weird little brutes. Unmated, their euphoric mating calls attract them to each other and at the same time protects them from native predators. The catch is that when they mate they coalesce, each complementing the insubstantiality of the other to become a single material entity. And then, of course, there's no further need of their wistful, coaxing aura. After that they hate everybody, being newlyweds and not wanting to be disturbed, so of course they radiate an exactly opposite aura that guarantees them the privacy their joint little heart craves. Nothing can come near enough to interrupt them without becoming so rabidly angry that it has to rush off somewhere else looking for something to fight. But you see how it goes. "And from the row going on in the Argonaut," I finished, "I'd say that Joey and Cora are definitely on their honeymoon." "You mean they'll be like that always?" Cheryl asked, wide-eyed. "That no one can go near them without flying into a rage?" "Not always," I said glumly. "Just for five years. After that they divide by fission into a dozen or so baby smileys, and after that the rat-race starts over again. The progeny will be worth plenty, but who's going to stand guard over that amalgamated little demon while it broadcasts hate and damnation in every direction? I won't,
  • 35. and there's not a homo in the System that would take the job for love or—" The answer hit me like a thumb in the eye, bang in the middle of a sentence. "Captain Giles," I said. "I've a suggestion that...." The Captain got it on first bounce. For the first time in history he laughed without benefit of smiley. It worked out neatly enough, at that. An Areopolitan court decreed that Shanig, being bound by the requirements of Martian law to expiate his crimes with as little expense to the polity as possible, should spend the five years of his sentence guarding Joey-Cora in a force-wall detention area to be set up in Syrtis Major. By the time his term ended my combination smiley would have fissioned, Shanig would have paid his debt to society and my investment would have paid dividends. It could have been worse. For the time being I was out some forty thousand credits, but I managed to salvage enough for a moderate celebration by contracting with the government to furnish khiff roots from Mimas to keep Shanig from going berserk under Joey-Cora's influence. The arrangement wasn't too hard on Shanig, even. The worst of it would be the isolation—that, and the packs of Syrtis Major jackals that would crowd around the force-wall at night and howl for his blood. "Good enough," I told Cheryl after the trial. "That leaves just one small detail to be arranged. I'll have to wangle another loan from Martian Bankings." She raised a slim brow. "Loan? For a grubstake?" "For our weekend on Phobos," I said. "Remember?"
  • 36. She laughed. "There's another little detail you overlooked, William. My ring size is five and one-half." "Ring?" I said. "Oh, a ring.... Would you rather have a Tellurian diamond, an A-belt fire-opal, or—" "Nothing expensive," she cut me off. "Something simpler would be more appropriate, I think. Under the circumstances, I'd suggest a plain gold band." I gaped at her like a swamp-guppy until it seeped through my skull that she was in dead earnest. "Wait up," I said. "What about Perry Acree?" She snapped her fingers. "That for Perry. I thought I wanted the little creep until you brought him back, but after that I couldn't bear the sight of him." "You mean," I said, grasping at any straw, "that you really want to be—" "Married," she said definitely. "First and firmly, or no Phobos trips!" "It wouldn't last," I argued. "Being an A-belt prospector's wife is no snap, Cheryl. I'd be out in the Annabelle for weeks on end, slamming around in God knows what kind of dangers. And one of these days I wouldn't come back at all and you'd be a widow." "You wouldn't be slamming around," she corrected me softly. "We would, Willie dear. I'd be with you every minute." That did it. It was "Willie dear" already, and she'd be with me every minute. Even in port.... "I'll have to give this some serious thought," I said. "Look, you wouldn't want us to plunge into a deal that wouldn't work out, would you?" "Of course not," she said with a demure certainty that made my blood curdle. "But this will work, Willie darling. I'll see to that."
  • 37. I got out of there and went down to Martian Bankings in the devil of a hurry. They were apologetic over selling my grubstake lien, and were glad to advance me a few thousand credits against Joey-Cora's expectations. For once I passed the Argonaut Club without even looking back. A homo with a skinful of skohl is short on resistance, and resistance just then was what I needed most. When I reached the blastoff aprons, the Annabelle's rusty old hulk was the sweetest sight I ever saw. I pointed her lovely, meteor- dented nose at the sky and blasted off, and the howling of her jets was like a lullaby in my ears. The starry backdrop of space ahead was like a cosmos-sized painting of all Creation, a master canvas done.
  • 38. *** END OF THE PROJECT GUTENBERG EBOOK OH MESMERIST FROM MIMAS! *** Updated editions will replace the previous one—the old editions will be renamed. Creating the works from print editions not protected by U.S. copyright law means that no one owns a United States copyright in these works, so the Foundation (and you!) can copy and distribute it in the United States without permission and without paying copyright royalties. Special rules, set forth in the General Terms of Use part of this license, apply to copying and distributing Project Gutenberg™ electronic works to protect the PROJECT GUTENBERG™ concept and trademark. Project Gutenberg is a registered trademark, and may not be used if you charge for an eBook, except by following the terms of the trademark license, including paying royalties for use of the Project Gutenberg trademark. If you do not charge anything for copies of this eBook, complying with the trademark license is very easy. You may use this eBook for nearly any purpose such as creation of derivative works, reports, performances and research. Project Gutenberg eBooks may be modified and printed and given away—you may do practically ANYTHING in the United States with eBooks not protected by U.S. copyright law. Redistribution is subject to the trademark license, especially commercial redistribution. START: FULL LICENSE
  • 39. THE FULL PROJECT GUTENBERG LICENSE
  • 40. PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK To protect the Project Gutenberg™ mission of promoting the free distribution of electronic works, by using or distributing this work (or any other work associated in any way with the phrase “Project Gutenberg”), you agree to comply with all the terms of the Full Project Gutenberg™ License available with this file or online at www.gutenberg.org/license. Section 1. General Terms of Use and Redistributing Project Gutenberg™ electronic works 1.A. By reading or using any part of this Project Gutenberg™ electronic work, you indicate that you have read, understand, agree to and accept all the terms of this license and intellectual property (trademark/copyright) agreement. If you do not agree to abide by all the terms of this agreement, you must cease using and return or destroy all copies of Project Gutenberg™ electronic works in your possession. If you paid a fee for obtaining a copy of or access to a Project Gutenberg™ electronic work and you do not agree to be bound by the terms of this agreement, you may obtain a refund from the person or entity to whom you paid the fee as set forth in paragraph 1.E.8. 1.B. “Project Gutenberg” is a registered trademark. It may only be used on or associated in any way with an electronic work by people who agree to be bound by the terms of this agreement. There are a few things that you can do with most Project Gutenberg™ electronic works even without complying with the full terms of this agreement. See paragraph 1.C below. There are a lot of things you can do with Project Gutenberg™ electronic works if you follow the terms of this agreement and help preserve free future access to Project Gutenberg™ electronic works. See paragraph 1.E below.
  • 41. 1.C. The Project Gutenberg Literary Archive Foundation (“the Foundation” or PGLAF), owns a compilation copyright in the collection of Project Gutenberg™ electronic works. Nearly all the individual works in the collection are in the public domain in the United States. If an individual work is unprotected by copyright law in the United States and you are located in the United States, we do not claim a right to prevent you from copying, distributing, performing, displaying or creating derivative works based on the work as long as all references to Project Gutenberg are removed. Of course, we hope that you will support the Project Gutenberg™ mission of promoting free access to electronic works by freely sharing Project Gutenberg™ works in compliance with the terms of this agreement for keeping the Project Gutenberg™ name associated with the work. You can easily comply with the terms of this agreement by keeping this work in the same format with its attached full Project Gutenberg™ License when you share it without charge with others. 1.D. The copyright laws of the place where you are located also govern what you can do with this work. Copyright laws in most countries are in a constant state of change. If you are outside the United States, check the laws of your country in addition to the terms of this agreement before downloading, copying, displaying, performing, distributing or creating derivative works based on this work or any other Project Gutenberg™ work. The Foundation makes no representations concerning the copyright status of any work in any country other than the United States. 1.E. Unless you have removed all references to Project Gutenberg: 1.E.1. The following sentence, with active links to, or other immediate access to, the full Project Gutenberg™ License must appear prominently whenever any copy of a Project Gutenberg™ work (any work on which the phrase “Project Gutenberg” appears, or with which the phrase “Project Gutenberg” is associated) is accessed, displayed, performed, viewed, copied or distributed:
  • 42. This eBook is for the use of anyone anywhere in the United States and most other parts of the world at no cost and with almost no restrictions whatsoever. You may copy it, give it away or re-use it under the terms of the Project Gutenberg License included with this eBook or online at www.gutenberg.org. If you are not located in the United States, you will have to check the laws of the country where you are located before using this eBook. 1.E.2. If an individual Project Gutenberg™ electronic work is derived from texts not protected by U.S. copyright law (does not contain a notice indicating that it is posted with permission of the copyright holder), the work can be copied and distributed to anyone in the United States without paying any fees or charges. If you are redistributing or providing access to a work with the phrase “Project Gutenberg” associated with or appearing on the work, you must comply either with the requirements of paragraphs 1.E.1 through 1.E.7 or obtain permission for the use of the work and the Project Gutenberg™ trademark as set forth in paragraphs 1.E.8 or 1.E.9. 1.E.3. If an individual Project Gutenberg™ electronic work is posted with the permission of the copyright holder, your use and distribution must comply with both paragraphs 1.E.1 through 1.E.7 and any additional terms imposed by the copyright holder. Additional terms will be linked to the Project Gutenberg™ License for all works posted with the permission of the copyright holder found at the beginning of this work. 1.E.4. Do not unlink or detach or remove the full Project Gutenberg™ License terms from this work, or any files containing a part of this work or any other work associated with Project Gutenberg™. 1.E.5. Do not copy, display, perform, distribute or redistribute this electronic work, or any part of this electronic work, without prominently displaying the sentence set forth in paragraph 1.E.1
  • 43. with active links or immediate access to the full terms of the Project Gutenberg™ License. 1.E.6. You may convert to and distribute this work in any binary, compressed, marked up, nonproprietary or proprietary form, including any word processing or hypertext form. However, if you provide access to or distribute copies of a Project Gutenberg™ work in a format other than “Plain Vanilla ASCII” or other format used in the official version posted on the official Project Gutenberg™ website (www.gutenberg.org), you must, at no additional cost, fee or expense to the user, provide a copy, a means of exporting a copy, or a means of obtaining a copy upon request, of the work in its original “Plain Vanilla ASCII” or other form. Any alternate format must include the full Project Gutenberg™ License as specified in paragraph 1.E.1. 1.E.7. Do not charge a fee for access to, viewing, displaying, performing, copying or distributing any Project Gutenberg™ works unless you comply with paragraph 1.E.8 or 1.E.9. 1.E.8. You may charge a reasonable fee for copies of or providing access to or distributing Project Gutenberg™ electronic works provided that: • You pay a royalty fee of 20% of the gross profits you derive from the use of Project Gutenberg™ works calculated using the method you already use to calculate your applicable taxes. The fee is owed to the owner of the Project Gutenberg™ trademark, but he has agreed to donate royalties under this paragraph to the Project Gutenberg Literary Archive Foundation. Royalty payments must be paid within 60 days following each date on which you prepare (or are legally required to prepare) your periodic tax returns. Royalty payments should be clearly marked as such and sent to the Project Gutenberg Literary Archive Foundation at the address specified in Section 4, “Information
  • 44. about donations to the Project Gutenberg Literary Archive Foundation.” • You provide a full refund of any money paid by a user who notifies you in writing (or by e-mail) within 30 days of receipt that s/he does not agree to the terms of the full Project Gutenberg™ License. You must require such a user to return or destroy all copies of the works possessed in a physical medium and discontinue all use of and all access to other copies of Project Gutenberg™ works. • You provide, in accordance with paragraph 1.F.3, a full refund of any money paid for a work or a replacement copy, if a defect in the electronic work is discovered and reported to you within 90 days of receipt of the work. • You comply with all other terms of this agreement for free distribution of Project Gutenberg™ works. 1.E.9. If you wish to charge a fee or distribute a Project Gutenberg™ electronic work or group of works on different terms than are set forth in this agreement, you must obtain permission in writing from the Project Gutenberg Literary Archive Foundation, the manager of the Project Gutenberg™ trademark. Contact the Foundation as set forth in Section 3 below. 1.F. 1.F.1. Project Gutenberg volunteers and employees expend considerable effort to identify, do copyright research on, transcribe and proofread works not protected by U.S. copyright law in creating the Project Gutenberg™ collection. Despite these efforts, Project Gutenberg™ electronic works, and the medium on which they may be stored, may contain “Defects,” such as, but not limited to, incomplete, inaccurate or corrupt data, transcription errors, a copyright or other intellectual property infringement, a defective or
  • 45. damaged disk or other medium, a computer virus, or computer codes that damage or cannot be read by your equipment. 1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the “Right of Replacement or Refund” described in paragraph 1.F.3, the Project Gutenberg Literary Archive Foundation, the owner of the Project Gutenberg™ trademark, and any other party distributing a Project Gutenberg™ electronic work under this agreement, disclaim all liability to you for damages, costs and expenses, including legal fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE PROVIDED IN PARAGRAPH 1.F.3. YOU AGREE THAT THE FOUNDATION, THE TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGE. 1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a defect in this electronic work within 90 days of receiving it, you can receive a refund of the money (if any) you paid for it by sending a written explanation to the person you received the work from. If you received the work on a physical medium, you must return the medium with your written explanation. The person or entity that provided you with the defective work may elect to provide a replacement copy in lieu of a refund. If you received the work electronically, the person or entity providing it to you may choose to give you a second opportunity to receive the work electronically in lieu of a refund. If the second copy is also defective, you may demand a refund in writing without further opportunities to fix the problem. 1.F.4. Except for the limited right of replacement or refund set forth in paragraph 1.F.3, this work is provided to you ‘AS-IS’, WITH NO OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED,
  • 46. INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE. 1.F.5. Some states do not allow disclaimers of certain implied warranties or the exclusion or limitation of certain types of damages. If any disclaimer or limitation set forth in this agreement violates the law of the state applicable to this agreement, the agreement shall be interpreted to make the maximum disclaimer or limitation permitted by the applicable state law. The invalidity or unenforceability of any provision of this agreement shall not void the remaining provisions. 1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the trademark owner, any agent or employee of the Foundation, anyone providing copies of Project Gutenberg™ electronic works in accordance with this agreement, and any volunteers associated with the production, promotion and distribution of Project Gutenberg™ electronic works, harmless from all liability, costs and expenses, including legal fees, that arise directly or indirectly from any of the following which you do or cause to occur: (a) distribution of this or any Project Gutenberg™ work, (b) alteration, modification, or additions or deletions to any Project Gutenberg™ work, and (c) any Defect you cause. Section 2. Information about the Mission of Project Gutenberg™ Project Gutenberg™ is synonymous with the free distribution of electronic works in formats readable by the widest variety of computers including obsolete, old, middle-aged and new computers. It exists because of the efforts of hundreds of volunteers and donations from people in all walks of life. Volunteers and financial support to provide volunteers with the assistance they need are critical to reaching Project Gutenberg™’s goals and ensuring that the Project Gutenberg™ collection will
  • 47. remain freely available for generations to come. In 2001, the Project Gutenberg Literary Archive Foundation was created to provide a secure and permanent future for Project Gutenberg™ and future generations. To learn more about the Project Gutenberg Literary Archive Foundation and how your efforts and donations can help, see Sections 3 and 4 and the Foundation information page at www.gutenberg.org. Section 3. Information about the Project Gutenberg Literary Archive Foundation The Project Gutenberg Literary Archive Foundation is a non-profit 501(c)(3) educational corporation organized under the laws of the state of Mississippi and granted tax exempt status by the Internal Revenue Service. The Foundation’s EIN or federal tax identification number is 64-6221541. Contributions to the Project Gutenberg Literary Archive Foundation are tax deductible to the full extent permitted by U.S. federal laws and your state’s laws. The Foundation’s business office is located at 809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887. Email contact links and up to date contact information can be found at the Foundation’s website and official page at www.gutenberg.org/contact Section 4. Information about Donations to the Project Gutenberg Literary Archive Foundation Project Gutenberg™ depends upon and cannot survive without widespread public support and donations to carry out its mission of increasing the number of public domain and licensed works that can be freely distributed in machine-readable form accessible by the widest array of equipment including outdated equipment. Many
  • 48. small donations ($1 to $5,000) are particularly important to maintaining tax exempt status with the IRS. The Foundation is committed to complying with the laws regulating charities and charitable donations in all 50 states of the United States. Compliance requirements are not uniform and it takes a considerable effort, much paperwork and many fees to meet and keep up with these requirements. We do not solicit donations in locations where we have not received written confirmation of compliance. To SEND DONATIONS or determine the status of compliance for any particular state visit www.gutenberg.org/donate. While we cannot and do not solicit contributions from states where we have not met the solicitation requirements, we know of no prohibition against accepting unsolicited donations from donors in such states who approach us with offers to donate. International donations are gratefully accepted, but we cannot make any statements concerning tax treatment of donations received from outside the United States. U.S. laws alone swamp our small staff. Please check the Project Gutenberg web pages for current donation methods and addresses. Donations are accepted in a number of other ways including checks, online payments and credit card donations. To donate, please visit: www.gutenberg.org/donate. Section 5. General Information About Project Gutenberg™ electronic works Professor Michael S. Hart was the originator of the Project Gutenberg™ concept of a library of electronic works that could be freely shared with anyone. For forty years, he produced and distributed Project Gutenberg™ eBooks with only a loose network of volunteer support.
  • 49. Project Gutenberg™ eBooks are often created from several printed editions, all of which are confirmed as not protected by copyright in the U.S. unless a copyright notice is included. Thus, we do not necessarily keep eBooks in compliance with any particular paper edition. Most people start at our website which has the main PG search facility: www.gutenberg.org. This website includes information about Project Gutenberg™, including how to make donations to the Project Gutenberg Literary Archive Foundation, how to help produce our new eBooks, and how to subscribe to our email newsletter to hear about new eBooks.
  • 50. Welcome to our website – the ideal destination for book lovers and knowledge seekers. With a mission to inspire endlessly, we offer a vast collection of books, ranging from classic literary works to specialized publications, self-development books, and children's literature. Each book is a new journey of discovery, expanding knowledge and enriching the soul of the reade Our website is not just a platform for buying books, but a bridge connecting readers to the timeless values of culture and wisdom. With an elegant, user-friendly interface and an intelligent search system, we are committed to providing a quick and convenient shopping experience. Additionally, our special promotions and home delivery services ensure that you save time and fully enjoy the joy of reading. Let us accompany you on the journey of exploring knowledge and personal growth! ebookfinal.com