THE BASIC SERVLET ARCHITECTURE
A Servlet, in its most general form, is an instance
of a class which implements the javax.servlet.Servlet interface. Most Servlets,
however, extend one of the standard implementations of that interface, namely
javax.servlet.GenericServlet and javax.servlet.http.HttpServlet. In this
tutorial we'll be discussing only HTTP Servlets which extend the
javax.servlet.http.HttpServlet class.
Servlets make use of the Java standard extension
classes in the packages javax.servlet (the basic Servlet framework) and
javax.servlet.http (extensions of the Servlet framework for Servlets that answer HTTP requests). Since Servlets are
written in the highly portable Java language and follow a standard framework,
they provide a means to create sophisticated server extensions in a server and
operating system independent way.
Typical
uses for HTTP Servlets include:
Processing
and/or storing data submitted by an HTML form.
Providing
dynamic content, e.g. returning the results of a database query to the client.
Managing
state information on top of the stateless HTTP, e.g. for an online shopping
cart system which manages shopping carts for many concurrent customers and maps
every request to the right customer.
Servlets vs CGI
The traditional way of adding functionality to a
Web Server is the Common Gateway Interface (CGI), a language-independent
interface that allows a server to start an external process which gets
information about a request through environment variables, the command line and
its standard input stream and writes response data to its standard output
stream. Each request is answered in a separate process by a separate instance
of the CGI program, or CGI script (as it is often called because CGI programs
are usually written in interpreted languages like Perl).
Servlets
have several advantages over CGI:
A Servlet
does not run in a separate process. This removes the overhead of creating a new
process for each request.
A Servlet
stays in memory between requests. A CGI program (and probably also an extensive
runtime system or interpreter) needs to be loaded and started for each CGI
request.
There is
only a single instance which answers all requests concurrently. This saves
memory and allows a Servlet to easily manage persistent data.
A Servlet
can be run by a Servlet Engine in a restrictive Sandbox (just like an Applet
runs in a Web Browser's Sandbox) which allows secure use of untrusted and potentially
harmful Servlets.
In order to initialize a Servlet, a server
application loads the Servlet class (and probably other classes which are
referenced by the Servlet) and creates an instance by calling the no-args
constructor. Then it calls the Servlet's init(ServletConfig config) method. The
Servlet should performe one-time setup procedures in this method and store the
ServletConfig object so that it can be retrieved later by calling the Servlet's
getServletConfig() method. This is handled by GenericServlet. Servlets which
extend GenericServlet (or its subclass HttpServlet) should call
super.init(config) at the beginning of the init method to make use of this
feature. The ServletConfig object contains Servlet parameters and a reference
to the Servlet's ServletContext.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.