an application designed to run on a server in the womb of a permanently resident CGI (Common Gateway Interface) mother program written in
Java that provides services for it, much the way an Applet runs in the womb of
a Web browser.
Servlet Advantages
Servlets have the following advantages over CGI.
- A Servlet does not run as 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 its runtime support) needs to be loaded and
started for each CGI request.
- There needs to be only one copy of the servlet in RAM (Random Access Memory) at a time. Using threads, it can service several
requests simultaneously. With CGI there is one copy of the code for each transaction in process.
- The servlet sandbox can watch over the servlets to make sure they behave themselves. In traditional CGI
programming, a coding error can bring down the entire system.
Servlet Extensions
It gets tedious writing Servlets that embed reams of HTML (Hypertext Markup Language) inside Java strings, since your outputs are complete
HTML pages. So people have created scores of rinky dink ways of embedding Java code in HTML that gets compiled
into the equivalent Java Servlet code dynamically. I find them all disgustingly amateurish. You might have a look
at some of the choices of framework.
There are various ways of writing server code that build on top of the basic Servlet classes. JSP (Java Server Pages) and
Freemarker let you embed bits of Java code, and other scripting inside your HTML pages. These are parsed and
converted to Java Servlet programs that dynamically generate HTML with variable fields. These are automatically
recompiled as needed.
With JSP all you have to do is drop the *.jsp files in a magic directory and away you
go. With Servlets you must put the *.class files or *.war files
in a magic directory, and register the servlets in a web.xml file that maps application
name to servlet class among other things.
Writing Servlets in XML (extensible Markup Language)
In the following web.app example, the user types http://localhost:8080/hello. That is mapped to a servlet named hello-world.
That servlet is implemented by the Java Servlet test.HelloWorld.class.
<web-app>
<servlet-mapping url-pattern='/hello' servlet-name='hello-world'/>
<servlet servlet-name='hello-world' servlet-class='test.HelloWorld'/>
<init-param greeting='Hello, world'/>
</web-app>
Under the Hood
The big puzzle to the novice is where are the jars for the Servlet classes?
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
Sun does not provide the jars. You get them from your servlet womb vendor — his particular
implementation of the interfaces. If you use Caucho Resin, it will automatically use its version of the classes
and automatically recompile your java source as-needed. You have to read the womb docs. Often they make you copy
the entire set of system jars to your own directory for use.
Sun does provide some
so you can compile without having a womb, but that is not very useful. You can’t execute the code. To run,
you need a servlet womb.
javax.servlet.Filter is an interface to allow a transaction to be processed in
an assembly line. Each Filter does some of the work and passes on the input or
output to the next filter in the chain, and decides on who is next.
Getting Started
Getting your first HelloServletWorld working can be quite a challenge.
Debugging Tips
Learning More
javax.servlet.http.HttpServlet docs : available:
javax.servlet.http package docs : available:
javax.servlet package docs : available:
Books
 |
recommend book⇒Head First Servlets and JSP: Passing the Sun Certified Web Component Developer Exam |
| by: | Bryan Basham, Kathy Sierra, Bert Bates |
978-0-596-51668-0 | paperback |
| publisher: | O’Reilly  |
| published: | 2008-08-07 |
| A very complete book, partly because it aims to prepare you for the Sun exam. It is also a difficult book. |
|
| Greyed out stores probably do not have the item in stock |
 |
recommend book⇒Core Servlets and Java Server Pages |
| by: | Marty Hall |
978-0-13-089340-6 | paperback |
| publisher: | Prentice Hall |
| published: | 2000-05-26 |
| Complete text of the book available on line in pdf format. |
|
| Greyed out stores probably do not have the item in stock |
 |
recommend book⇒Java Servlet Programming, Second Edition |
| by: | Jason Hunter, William Crawford |
978-0-596-00040-0 | paperback |
| publisher: | O’Reilly  |
| published: | 2001-03-01 |
| highly recommended. Covers basics of JSP too. |
|
| Greyed out stores probably do not have the item in stock |
 |
recommend book⇒Web Development with JavaServer Pages |
| by: | Duane K. Fields, Mark A. Kolb, Shawn Bayern |
978-1-930110-12-0 | paperback |
| publisher: | Manning Publications |
| published: | 2001-09-15 |
|
| Greyed out stores probably do not have the item in stock |
 |
recommend book⇒Inside Servlets: Server-Side Programming for the Java(TM) Platform (2nd Edition) |
| by: | Dustin R. Callaway, Danny Coward |
978-0-201-70906-3 | paperback |
| publisher: | Addison-Wesley |
| published: | 2001-05-14 |
|
| Greyed out stores probably do not have the item in stock |
 |
recommend book⇒Developing Enterprise Java Applications with EE and UML |
| by: | Khawar Zaman Ahmed, Cary E. Umrysh |
978-0-201-73829-2 | paperback |
| publisher: | Addison-Wesley |
| published: | 2001-10-27 |
|
| Greyed out stores probably do not have the item in stock |