The JavaTM Tutorial

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form

Trail: Servlets
Lesson: Overview of Servlets

## Architecture of the Servlet Package

> The `javax.servlet` package provides interfaces and classes for writing servlets. The architecture of the package is described below.

### The Servlet Interface

The central abstraction in the Servlet API is the `Servlet` interface. All servlets implement this interface, either directly or, more commonly, by extending a class that implements it such as `HttpServlet`

The `Servlet` interface declares, but does not implement, methods that manage the servlet and its communications with clients. Servlet writers provide some or all of these methods when developing a servlet.

### Client Interaction

When a servlet accepts a call from a client, it receives two objects:

- A `ServletRequest`, which encapsulates the communication from the client to the server.
- A `ServletResponse`, which encapsulates the communication from the servlet back to the client.

`ServletRequest` and `ServletResponse` are interfaces defined by the `javax.servlet` package.

### The ServletRequest Interface

The `ServletRequest` interface allows the servlet access to:

- Information such as the names of the parameters passed in by the client, the protocol (scheme) being used by the client, and the names of the remote host that made the request and the server that received it.
- The input stream, `ServletInputStream`. Servlets use the input stream to get data from clients that use application protocols such as the HTTP POST and PUT methods.

Interfaces that extend `ServletRequest` interface allow the servlet to retrieve more protocol-specific data. For example, the `HttpServletRequest` interface contains methods for accessing HTTP-specific header information.

### The ServletResponse Interface

The `ServletResponse` interface gives the servlet methods for replying to the client. It:

- Allows the servlet to set the content length and MIME type of the reply.
- Provides an output stream, `ServletOutputStream`, and a `Writer` through which the servlet can send the reply data.

Interfaces that extend the `ServletResponse` interface give the servlet more protocol-specific capabilities. For example, the `HttpServletResponse` interface contains methods that allow the servlet to manipulate HTTP-specific header information.

### Additional Capabilities of HTTP Servlets

The classes and interfaces described above make up a basic Servlet. HTTP servlets have some additional objects that provide session-tracking capabilities. The servlet writer can use these APIs to maintain state between the servlet and the client that persists across multiple connections during some time period. HTTP servlets also have objects that provide cookies. The servlet writer uses the cookie API to save data with the client and to retrieve this data.

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form