Servlets are the Java programs that run on the Java-enabled web server or application server. They are used to handle the request obtained from the webserver, process the request, produce the response, then send a response back to the webserver. In Java, to create web applications we use Servlets. To create Java Servlets, we need to use Servlet API which contains all the necessary interfaces and classes. Servlet API has 2 packages namely,
- This package provides the number of interfaces and classes to support Generic servlet which is protocol independent.
- These interfaces and classes describe and define the contracts between a servlet class and the runtime environment provided by a servlet container.
Classes available in javax.servlet package:
|GenericServlet||To define a generic and protocol-independent servlet.|
|ServletContextAttributeEvent||To generate notifications about changes to the attributes of the servlet context of a web application.|
|ServletContextEvent||To generate notifications about changes to the servlet context of a web application.|
|ServletInputStream||This class provides an input stream to read binary data from a client request.|
|ServletOutputStream||This class provides an output stream for sending binary data to the client.|
|ServletRequestAttributeEvent||To generate notifications about changes to the attributes of the servlet request in an application.|
|ServletRequestEvent||To indicate lifecycle events for a ServletRequest.|
|ServletRequestWrapper||This class provides the implementation of the ServletRequest interface that can be subclassed by developers to adapt the request to a Servlet.|
|ServletResponseWrapper||This class provides the implementation of the ServletResponse interface that can be subclassed by developers to adapt the response from a Servlet.|
Interfaces available in javax.servlet package:
|Filter||To perform filtering tasks on either the request to a resource, or on the response from a resource, or both.|
|FilterChain||To provide a view into the invocation chain of a filtered request for a resource to the developer by the servlet container.|
|FilterConfig||To pass information to a filter during initialization used by a servlet container.|
|RequestDispatcher||It defines an object to dispatch the request and response to any other resource, means it receives requests from the client and sends them to a servlet/HTML file/JSP file on the server.|
|Servlet||This is the main interface that defines the methods in which all the servlets must implement. To implement this interface, write a generic servlet that extends javax.servlet.GenericServlet or an HTTP servlet that extends javax.servlet.http.HttpServlet.|
|ServletConfig||It defines an object created by a servlet container at the time of servlet instantiation and to pass information to the servlet during initialization.|
|ServletContext||It defines a set of methods that a servlet uses to communicate with its servlet container. The information related to the web application available in web.xml file is stored in ServletContext object created by container.|
|ServletContextAttributeListener||The classes that implement this interface receive notifications of changes to the attribute list on the servlet context of a web application.|
|ServletContextListener||The classes that implement this interface receive notifications about changes to the servlet context of the web application they are part of.|
|ServletRequest||It defines an object that is created by servlet container to pass client request information to a servlet.|
|ServletRequestAttributeListener||To generate the notifications of request attribute changes while the request is within the scope of the web application in which the listener is registered.|
|ServletRequestListener||To generate the notifications of requests coming in and out of scope in a web component.|
|ServletResponse||It defines an object created by servlet container to assist a servlet in sending a response to the client.|
Exceptions in javax.servlet package:
|ServletException||A general exception thrown by a servlet when it encounters difficulty.|
|UnavailableException||Thrown by a servlet or filter to indicate that it is permanently or temporarily unavailable.|
- This package provides the number of interfaces and classes to support HTTP servlet which is HTTP protocol dependent.
- These interfaces and classes describe and define the contracts between a servlet class running under HTTP protocol and the runtime environment provided by a servlet container.
Classes available in javax.servlet.http package:
|Cookie||Creates a cookie object. It is a small amount of information sent by a servlet to a Web browser, saved by the browser, and later sent back to the server used for session management.|
|HttpServlet||Provides an abstract class that defines methods to create an HTTP suitable servlet for a web application.|
|HttpServletRequestWrapper||This class provides implementation of the HttpServletRequest interface that can be subclassed to adapt the request to a Servlet.|
|HttpServletResponseWrapper||This class provides implementation of the HttpServletResponse interface that can be subclassed to adapt the response from a Servlet.|
|HttpSessionBindingEvent||This events are either sent to an object that implements HttpSessionBindingListener when it is bound or unbound from a session, or to a HttpSessionAttributeListener that has been configured in the deployment descriptor when any attribute is bound, unbound or replaced in a session.|
|HttpSessionEvent||To represent event notifications for changes to sessions within a web application.|
Interfaces available in javax.servlet.http package:
|HttpServletRequest||To provide client HTTP request information for servlets. It extends the ServletRequest interface.|
|HttpServletResponse||To provide HTTP-specific functionality in sending a response to client. It extends the ServletResponse interface.|
|HttpSession||It provides a way to identify a user across web application/web site pages and to store information about that user.|
|HttpSessionActivationListener||Container to notify all the objects that are bound to a session that sessions will be passivated and that session will be activated.|
|HttpSessionAttributeListener||To get notifications of changes to the attribute lists of sessions within this web application, this listener interface can be implemented.|
|HttpSessionBindingListener||It causes an object to be notified by an HttpSessionBindingEvent object, when it is bound to or unbound from a session.|
|HttpSessionListener||To receive notification events related to the changes to the list of active sessions in a web application.|
Servlet API provide GenericServlet class in javax.servlet package.
- An abstract class that implements most of the servlet basic methods.
- Implements the Servlet, ServletConfig, and Serializable interfaces.
- Protocol-independent servlet.
- Makes writing servlets easier by providing simple versions of the lifecycle methods init() and destroy().
- To write a generic servlet, you need to extend javax.servlet.GenericServlet class and need to override the abstract service() method.
Servlet API provides HttpServlet class in javax.servlet.http package.
- An abstract class to be subclassed to create an HTTP-specific servlet that is suitable for a Web site/Web application.
- Extends Generic Servlet class and implements Serializable interface.
- HTTP Protocol-dependent servlet.
To write a Http servlet, you need to extend javax.servlet.http.HttpServlet class and must override at least one of the below methods,
- doGet() – to support HTTP GET requests by the servlet.
- doPost() – to support HTTP POST requests by the servlet.
- doPut() – to support HTTP PUT requests by the servlet.
- doDelete() – to support HTTP DELETE requests by the servlet.
- init() and destroy() – to manage resources held in the life of the servlet.
- getServletInfo() – To provide information about the servlet itself like the author of servlet or version of it etc.
Servlet API Package Hierarchy
Below is the package hierarchy of Generic Servlet and HTTP Servlet.
Servlet API provides all the required interfaces, classes, and methods to develop a web application. we need to add the servlet-api.jar file in our web application to use the servlet functionality. We can download this jar file from Maven Repository.