HttpServlet

This is an abstract and subclass of GenericServlet class that is used to create Http protocol specific servlet. It extends GenericServlet class and has following method that has to be overridden by subclass. All methods are called by server. Some of them are invoked according to request of client.

The service() method of HttpServlet is not overridden by programmer. service handles standard HTTP requests by dispatching them to the handler methods for each HTTP request type (the doXXX methods listed below).

All methods throw IOException and ServletException

1.   
protected  void doGet(HttpServletRequest req, HttpServletResponse res)
Called through service method by server to handle GET request from client-side. You can override this method to process GET request as well as HTTP HEAD request. HEAD request is supported by doGet() returning only Header.
When invoked, server passes HttpServletRequest and HttpServletResponse object as parameters. HttpServletRequest object provides the parameters sent by client and HttpServletResponse object used to get the writer or output stream object to write response to client.
2.   
protected  void doPost(HttpServletRequest req, HttpServletResponse res)
Called through service method by server to handle POST request from client-side. You can override this method to process POST request.
When invoked, server passes HttpServletRequest and HttpServletResponse object as parameters. HttpServletRequest object provides the parameters sent by client and HttpServletResponse object used to get the writer to write response to client.
3.   
protected  void doDelete(HttpServletRequest req, HttpServletResponse res)
Called via service method by server to handle DELETE request from client-side. This method should implelemtned by programmer in such a way that client will use it to remove document or web page from the server.
4.   
protected  void doHead(HttpServletRequest req, HttpServletResponse res)
Called via service method by server to handle HEAD request from client-side.  Client will send HTTP HEAD request to get header information of response rather then body. Override this method to set headers only into response object.
5.   
protected  void doOptions(HttpServletRequest req, HttpServletResponse res)
Called via service method by server to handle HEAD request from client-side. The OPTIONS request determines which HTTP methods the server supports and returns an appropriate header.
6.   
protected  void doPut(HttpServletRequest req, HttpServletResponse res)
Called via service method by server to handle PUT request from client-side. Client use PUT request to place document or file on the server and it is similar to sending a file through FTP.
7.   
protected  void doTrace(HttpServletRequest req, HttpServletResponse res)
Called via service method by server to handle PUT request from client-side. This method is used for debugging so doTrace method returns Headers sent by client. There's no need to override this method.
8.   
protected  long getLastModified(HttpServletRequest req)
this method returns the time the HttpServletRequest object was last modified, in milliseconds since midnight January 1, 1970 GMT. If the time is unknown, this method returns a negative number (the default). Servlets that support HTTP GET requests and can quickly determine their last modification time should override this method. This makes browser and proxy caches work more effectively, reducing the load on server and network resources.  
9.   
protected  void service(HttpServletRequest req, HttpServletResponse res)
this method receives standard HTTP requests from the public service method and dispatches them to the doXXX methods defined in this class. This method is an HTTP-specific version of the Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) method. There's no need to override this method.  
10.             
void service(ServletRequest req, ServletResponse res)
Dispatches client requests to the protected service method. There's no need to override this method.  

Example:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
 
public class MyHttpServlet extends HttpServlet {
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       response.setContentType("text/html");
       PrintWriter pw=response.getWriter();
       pw.write("Hello from doGet method");
       pw.close();
    } 
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       response.setContentType("text/html");
       PrintWriter pw=response.getWriter();
       pw.write("Hello from doPost method");
       pw.close(); 
    }
}


Here you will see output : Hello from doGet method 
Here MyHttpServlet class is the resultant component that consists of relationships among Servlet interface , GenericServlet class, HttpServlet class and ServletConfig interface as follows.

So resultant servlet has all the properties and methods to process client’s request. ServletConfig interface is implemented by servlet container (e.g. tomcat) and object if passed to your servlet through init() method when you override it. 

No comments:

Popular Posts