Java Servlet
The Servlet API, contained in the Java package hierarchy
javax.servlet, defines the expected interactions of a web container and a
servlet. A web container is essentially
the component of a web server that interacts with the servlets. The web
container is responsible for managing the lifecycle of servlets, mapping
a URL to a particular
servlet and ensuring that the URL requester has the correct access
rights.
A Servlet is an object that receives requests (ServletRequest) and
generates a response (ServletResponse) based on the request. The API
package javax.servlet.http defines
HTTP subclasses of the generic servlet (HttpServlet) request
(HttpServletRequest) and response (HttpServletResponse) as well as an
(HttpSession) that tracks multiple
requests and responses between the web server and a client. Servlets may
be packaged in a WAR file as a Web application.
Moreover, servlets can be generated automatically by
JavaServer Pages (JSP), or alternately by template engines such as WebMacro. Often servlets are used in
conjunction with JSPs in a pattern called "Model 2", which is a flavor of the model-view-controller pattern.
History
The original servlet specification was created by Sun Microsystems
(version 1.0 was finalized in June 1997). Starting with version 2.3, the
servlet
specification was developed under the Java Community Process. JSR 53
defined both the Servlet 2.3 and JavaServer Page 1.2 specifications. JSR
154 specifies
the Servlet 2.4 and 2.5 specifications. As of May 10, 2006, the current
version of the servlet specification is 2.5.
In his blog on java.net, Sun veteran and GlassFish lead Jim Driscoll
details the history of servlet technology. James Gosling first thought
of servlets in the
early days of Java, but the concept did not become a product until Sun
shipped the Java Web Server product. This was before what is now the
Java Platform,
Enterprise Edition was made into a specification.
Web containers
A Web container is a computer program that runs Web applications. Web
containers are also sometimes called Web engines. Like the other Java
APIs, different
vendors provide their own implementation. Below is a list of some of the
free web containers. (Note that 'free' means that commercial use is
free. Some of the
commercial containers, e.g. Resin and Orion, make ideal development
containers and are also free to use in a server environment for
non-profit organizations).
Non-commercial web containers
* Java System Application Server is developed by Sun.
* Apache Tomcat (formerly Jakarta Tomcat) is an open source web
container available free of charge under the Apache Software License. It
is used in the
official reference implementation and has a reputation for being stable.
* Jetty
* Jaminid contains a higher abstraction than servlets.
* Enhydra
* jo!
* Winstone supports specification v2.4, has a focus on minimal
configuration and the ability to strip the container down to only what
you need.
* tjws spec 2.4, small footprint, modular design