英文技术资料翻译(模版)
-
附录:英文技术资料翻译
英文原文:
An Overview of Servlet and JSP
Technology
1.1 A Servlet's Job
Servlets
are
Java
programs
that
run
on
Web
or
application
servers, acting
as a middle layer between requests coming from Web
browsers
or
other
HTTP
clients
and
databases or
applications
on
the
HTTP
server.
Their
job
is
to
perform
the
following
tasks,
as
illustrated in Figure 1-1.
Figure 1-1
1
.
Read the
explicit data sent by the client.
The
end user normally enters this data in an HTML form
on a Web
page. However, the data could
also come from an applet or a custom
HTTP client program.
2
.
Read the
implicit HTTP request data sent by the browser.
Figure 1-1 shows a single arrow going
from the client to the
Web server (the
layer where servlets and JSP execute), but there
are really two varieties of data: the
explicit data that the end
user enters
in a form and the behind-the-scenes HTTP
information.
Both
varieties
are
critical.
The
HTTP
information
includes
cookies,
information about media types and
compression schemes the browser
understands, and so on.
3
.
Generate the
results.
This process may require
talking to a database, executing an
RMI
or EJB call, invoking a Web service, or computing
the response
directly. Your real data
may be in a relational database. Fine. But
your
database
probably
doesn't
speak
HTTP
or
return
results
in
HTML,
so the Web browser
can't talk directly to the database. Even if it
could, for security reasons, you
probably would not want it to. The
same
argument applies to most other applications. You
need the Web
middle
layer
to
extract
the
incoming
data
from
the
HTTP
stream,
talk
to
the application, and embed the results inside a
document.
4
.
Send
the explicit data (i.e., the document) to the
client.
This document can be sent in a
variety of formats, including
text
(HTML
or
XML),
binary
(GIF
images),
or
even
a
compressed
format
like gzip that is
layered on top of some other underlying format.
But,
HTML
is
by
far
the
most
common
format,
so
an
important
servlet/JSP task
is to wrap the results inside of HTML.
5
.
Send the
implicit HTTP response data.
Figure 1-1
shows a single arrow going from the Web middle
layer
(the servlet or JSP page) to the
client. But, there are really two
varieties
of
data
sent:
the
document
itself
and
the
behind-
the-scenes
HTTP
information.
Again,
both
varieties
are
critical
to
effective
development.
Sending
HTTP
response
data
involves telling the browser or other
client what type of document
is
being
returned
(e.g.,
HTML),
setting
cookies
and
caching
parameters, and other such tasks.
1.2 Why Build Web Pages Dynamically?
Many client requests can be satisfied
by prebuilt documents,
and
the
server
would
handle
these
requests
without
invoking
servlets.
In many cases, however, a static result
is not sufficient, and a
page needs to
be generated for each request. There are a number
of
reasons why Web pages need to be
built on-the-fly:
1
.
The Web page
is based on data sent by the client.
For
instance,
the
results
page
from
search
engines
and
order-confirmation
pages
at
online
stores
are
specific
to
particular user requests. You don't
know what to display until you
read the
data that the user submits. Just remember that the
user
submits
two
kinds
of
data:
explicit
(i.e.,
HTML
form
data)
and
implicit (i.e., HTTP
request headers). Either kind of input can be
used to build the output page. In
particular, it is quite common
to build
a user-specific page based on a cookie value.
2
.
The Web page is
derived from data that changes frequently.
If the page changes for every request,
then you certainly need
to
build
the
response
at
request
time.
If
it
changes
only
periodically,
however,
you
could
do
it
two
ways:
you
could
periodically build a new Web page on
the server (independently of
client
requests), or you could wait and only build the
page when
the user requests it. The
right approach depends on the situation,
but sometimes it is more convenient to
do the latter: wait for the
user
request. For example, a weather report or news
headlines site
might build the pages
dynamically, perhaps returning a previously
built page if that page is still up to
date.
3
.
The Web
page uses information from corporate databases or
other server-side sources.
If
the
information
is
in
a
database,
you
need
server-side
processing even if the client is using
dynamic Web content such as
an applet.
Imagine using an applet by itself for a search
engine
site:
50
terabyte applet,
please
wait!
Obviously,
that
is silly; you need to talk to the
database. Going from the client
to the
Web tier to the database (a three-tier approach)
instead of
from
an
applet
directly
to
a
database
(a
two-tier
approach)
provides
increased flexibility and security with
little or no performance
penalty. After
all, the database call is usually the rate-
limiting
step, so going through the Web
server does not slow things down.
In
fact, a three-tier approach is often faster
because the middle
tier can perform
caching and connection pooling.
In
principle,
servlets
are
not
restricted
to
Web
or
application
servers that handle HTTP requests but
can be used for other types
of servers
as well. For example, servlets could be embedded
in FTP
or mail servers to extend their
functionality. And, a servlet API
for
SIP
(Session
Initiation
Protocol)
servers
was
recently
standardized
(see
/en/jsr/detail?id=116).
In
practice,
however,
this
use
of
servlets
has
not
caught
on,
and
we'll
only be
discussing HTTP servlets.
1.3 The
Advantages of Servlets Over
Java
servlets
are
more
efficient,
easier
to
use,
more
powerful,
more portable,
safer, and cheaper than traditional CGI and many
alternative CGI-like technologies.
1
.
Efficient
With traditional CGI, a new process is
started for each HTTP
request.
If
the
CGI
program
itself
is
relatively
short,
the
overhead
of
starting
the
process
can
dominate
the
execution
time.
With
servlets, the Java
virtual machine stays running and handles each
request
with
a
lightweight
Java
thread,
not
a
heavyweight
operating
system
process.
Similarly,
in
traditional
CGI,
if
there
are
N
requests to the same CGI
program, the code for the CGI program is
loaded into memory N times. With
servlets, however, there would be
N
threads,
but
only
a
single
copy
of
the
servlet
class
would
be
loaded.
This approach
reduces server memory requirements and saves time
by
instantiating fewer objects.
Finally, when a CGI program finishes
handling a request, the program
terminates. This approach makes it
difficult to cache computations, keep
database connections open,
and
perform
other
optimizations
that
rely
on
persistent
data.
Servlets,
however,
remain
in
memory
even
after
they
complete
a
response,
so
it
is
straightforward
to
store
arbitrarily
complex
data
between client
requests.
2
.
Convenient
Servlets have an extensive
infrastructure for automatically
parsing
and
decoding
HTML
form
data,
reading
and
setting
HTTP
headers, handling cookies, tracking
sessions, and many other such
high-
level utilities. In CGI, you have to do much of
this yourself.
Besides, if you already
know the Java programming language, why
learn
Perl
too?
You're
already
convinced
that
Java
technology
makes
for
more
reliable
and
reusable
code
than
does
Visual
Basic,
VBScript,
or
C++.
Why
go
back to
those
languages
for
server-side
programming?
3
.
Powerful
Servlets support several capabilities
that are difficult or
impossible
to
accomplish
with
regular
CGI.
Servlets
can
talk
directly to the Web server, whereas
regular CGI programs cannot,
at
least
not
without
using
a
server-
specific
API.
Communicating
with
the
Web
server
makes
it
easier
to
translate
relative
URLs
into
concrete
path
names,
for
instance.
Multiple
servlets
can
also
share
data, making it easy
to implement database connection pooling and
similar
resource-sharing
optimizations.
Servlets
can
also
maintain
information from request to request,
simplifying techniques like
session
tracking and caching of previous computations.
4
.
Portable
Servlets
are
written
in
the
Java
programming
language
and
follow
a standard API.
Servlets are supported directly or by a plugin on
virtually every major Web server.
Consequently, servlets written
for,
say, Macromedia JRun can run virtually unchanged
on Apache
Tomcat,
Microsoft
Internet
Information
Server
(with
a
separate
plugin), IBM
WebSphere, iPlanet Enterprise Server, Oracle9i AS,
or
StarNine WebStar. They are part of
the Java 2 Platform, Enterprise
Edition, so industry support for
servlets is becoming even more
pervasive.
5
.
Inexpensive
A number of free or very inexpensive
Web servers are good for
development
use or deployment of low- or medium-volume Web
sites.
Thus,
with
servlets
and
JSP
you
can
start
with
a
free
or
inexpensive
server and migrate to more expensive
servers with high-performance
capabilities or advanced administration
utilities only after your
project meets
initial success. This is in contrast to many of
the
other
CGI
alternatives,
which
require
a
significant
initial
investment for the purchase of a
proprietary package.
Price
and
portability
are
somewhat
connected.
For
example,
Marty tries to keep
track of the countries of readers that send him
questions by email. India was near the
top of the list, probably
#2 behind the
U.S. Marty also taught one of his JSP and servlet
training
courses
(see
/)
in
Manila,
and there was great
interest in servlet and JSP technology
there.
Now, why are India
and the Philippines both so interested? We
surmise
that
the
answer
is
twofold.
First,
both
countries
have
large
pools
of well-educated
software
developers. Second, both countries
have (or had, at that time) highly
unfavorable currency exchange
rates
against the U.S. dollar. So, buying a special-
purpose Web
server from a U.S. company
consumed a large part of early project
funds.
But,
with
servlets
and
JSP,
they
could
start
with
a
free
server:
Apache Tomcat
(either standalone, embedded in the regular Apache
Web server, or embedded in Microsoft
IIS). Once the project starts
to become
successful, they could move to a server like
Caucho Resin
that had higher
performance and easier administration but that is
not
free.
But
none
of
their
servlets
or
JSP
pages
have
to
be
rewritten.
If
their project becomes even larger, they might want
to move to