Servlet interview questions

  1. What is a servlet?
    Servlets are modules that extend request/response-oriented servers,such as Java-enabled web servers. For example, a servlet might be responsible for taking data in an HTML order-entry form and applying the business logic used to update a company’s order database. Servlets are to servers what applets are to browsers. Unlike applets, however, servlets have no graphical user interface.
  2. Whats the advantages using servlets over using CGI?
    Servlets provide a way to generate dynamic documents that is both easier to write and faster to run. Servlets also address the problem of doing server-side programming with platform-specific APIs: they are developed with the Java Servlet API, a standard Java extension.
  3. What are the general advantages and selling points of Servlets?
    A servlet can handle multiple requests concurrently, and synchronize requests. This allows servlets to support systems such as online
    real-time conferencing. Servlets can forward requests to other servers and servlets. Thus servlets can be used to balance load among several servers that mirror the same content, and to partition a single logical service over several servers, according to task type or organizational boundaries.
  4. Which package provides interfaces and classes for writing servlets? javax
  5. What’s 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.Servlets > Generic Servlet > HttpServlet > MyServlet.
    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.
  6. When a servlet accepts a call from a client, it receives two objects. What are they?
    ServletRequest (which encapsulates the communication from the client to the server) and ServletResponse (which encapsulates the communication from the servlet back to the client). ServletRequest and ServletResponse are interfaces defined inside javax.servlet package.
  7. What information does ServletRequest allow 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. Also the input stream, as ServletInputStream.Servlets use the input stream to get data from clients that use application protocols such as the HTTP POST and GET methods.
  8. What type of constraints can ServletResponse interface set on the client?
    It can set the content length and MIME type of the reply. It also provides an output stream, ServletOutputStream and a Writer through
    which the servlet can send the reply data.
  9. Explain servlet lifecycle?
    Each servlet has the same life cycle: first, the server loads and initializes the servlet (init()), then the servlet handles zero or more client requests (service()), after that the server removes the servlet (destroy()). Worth noting that the last step on some servers is done when they shut down.
  10. How does HTTP Servlet handle client requests?
    An HTTP Servlet handles client requests through its service method. The service method supports standard HTTP client requests by dispatching each request to a method designed to handle that request.
This entry was posted in Java. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

2 Comments on Servlet interview questions

  1. dingo das
    Posted 10/27/2004 at 8:43 pm | Permalink

    when a Servlet doesnt need to call the super.init(ServletConfig) in its init() method
    Answer : When the servlet directly implements the javax.servlet.Servlet Interface

  2. Shivananda
    Posted 12/14/2006 at 12:15 am | Permalink

    Q: Explain the life cycle methods of a Servlet.

    A: The javax.servlet.Servlet interface defines the three methods known as life-cycle method.
    public void init(ServletConfig config) throws ServletException
    public void service( ServletRequest req, ServletResponse res) throws ServletException, IOException
    public void destroy()
    First the servlet is constructed, then initialized wih the init() method.
    Any request from client are handled initially by the service() method before delegating to the doXxx() methods in the case of HttpServlet.

    The servlet is removed from service, destroyed with the destroy() method, then garbaged collected and finalized.

    Q: What is the difference between the getRequestDispatcher(String path) method of javax.servlet.ServletRequest interface and javax.servlet.ServletContext interface?

    A: The getRequestDispatcher(String path) method of javax.servlet.ServletRequest interface accepts parameter the path to the resource to be included or forwarded to, which can be relative to the request of the calling servlet. If the path begins with a “/” it is interpreted as relative to the current context root.

    The getRequestDispatcher(String path) method of javax.servlet.ServletContext interface cannot accepts relative paths. All path must sart with a “/” and are interpreted as relative to curent context root.

    Q: Explain the directory structure of a web application.

    A: The directory structure of a web application consists of two parts.
    A private directory called WEB-INF
    A public resource directory which contains public resource folder.

    WEB-INF folder consists of
    1. web.xml
    2. classes directory
    3. lib directory

    Q: What are the common mechanisms used for session tracking?

    A: Cookies
    SSL sessions
    URL- rewriting

    Q: Explain ServletContext.

    A: ServletContext interface is a window for a servlet to view it’s environment. A servlet can use this interface to get information such as initialization parameters for the web applicationor servlet container’s version. Every web application has one and only one ServletContext and is accessible to all active resource of that application.

    Q: What is preinitialization of a servlet?

    A: A container doesnot initialize the servlets ass soon as it starts up, it initializes a servlet when it receives a request for that servlet first time. This is called lazy loading. The servlet specification defines the element, which can be specified in the deployment descriptor to make the servlet container load and initialize the servlet as soon as it starts up. The process of loading a servlet before any request comes in is called preloading or preinitializing a servlet.

    Q: What is the difference between Difference between doGet() and doPost()?

    A: A doGet() method is limited with 2k of data to be sent, and doPost() method doesn’t have this limitation. A request string for doGet() looks like the following:…&pN=vN
    doPost() method call doesn’t need a long text tail after a servlet name in a request. All parameters are stored in a request itself, not in a request string, and it’s impossible to guess the data transmitted to a servlet only looking at a request string.

    Q: What is the difference between HttpServlet and GenericServlet?

    A: A GenericServlet has a service() method aimed to handle requests. HttpServlet extends GenericServlet and adds support for doGet(), doPost(), doHead() methods (HTTP 1.0) plus doPut(), doOptions(), doDelete(), doTrace() methods (HTTP 1.1).
    Both these classes are abstract.

    Q: What is the difference between ServletContext and ServletConfig?

    A: ServletContext: Defines a set of methods that a servlet uses to communicate with its servlet container, for example, to get the MIME type of a file, dispatch requests, or write to a log file.The ServletContext object is contained within the ServletConfig object, which the Web server provides the servlet when the servlet is initialized

    ServletConfig: The object created after a servlet is instantiated and its default constructor is read. It is created to pass initialization information to the servlet.

    Question: What is a Servlet?
    Answer: Java Servlets are server side components that provides a powerful mechanism for developing server side of web application. Earlier CGI was developed to provide server side capabilities to the web applications. Although CGI played a major role in the explosion of the Internet, its performance, scalability and reusability issues make it less than optimal solutions. Java Servlets changes all that. Built from ground up using Sun’s write once run anywhere technology java servlets provide excellent framework for server side processing.

    Question: What are the types of Servlet?
    Answer: There are two types of servlets, GenericServlet and HttpServlet. GenericServlet defines the generic or protocol independent servlet. HttpServlet is subclass of GenericServlet and provides some http specific functionality linke doGet and doPost methods.

    Question: What are the differences between HttpServlet and Generic Servlets?
    Answer: HttpServlet Provides an abstract class to be subclassed to create an HTTP servlet suitable for a Web site. A subclass of HttpServlet must override at least one method, usually one of these:

    doGet, if the servlet supports HTTP GET requests
    doPost, for HTTP POST requests
    doPut, for HTTP PUT requests
    doDelete, for HTTP DELETE requests
    init and destroy, to manage resources that are held for the life of the servlet
    getServletInfo, which the servlet uses to provide information about itself
    There’s almost no reason to override the service method. service handles standard HTTP requests by dispatching them to the handler methods for each HTTP request type (the doXXX methods listed above). Likewise, there’s almost no reason to override the doOptions and doTrace methods.

    GenericServlet defines a generic, protocol-independent servlet. To write an HTTP servlet for use on the Web, extend HttpServlet instead.

    GenericServlet implements the Servlet and ServletConfig interfaces. GenericServlet may be directly extended by a servlet, although it’s more common to extend a protocol-specific subclass such as HttpServlet.

    GenericServlet makes writing servlets easier. It provides simple versions of the lifecycle methods init and destroy and of the methods in the ServletConfig interface. GenericServlet also implements the log method, declared in the ServletContext interface.

    To write a generic servlet, you need only override the abstract service method.

    Question: Differentiate between Servlet and Applet.
    Answer: Servlets are server side components that executes on the server whereas applets are client side components and executes on the web browser. Applets have GUI interface but there is not GUI interface in case of Servlets.

    Question: Differentiate between doGet and doPost method?
    Answer: doGet is used when there is are requirement of sending data appended to a query string in the URL. The doGet models the GET method of Http and it is used to retrieve the info on the client from some server as a request to it. The doGet cannot be used to send too much info appended as a query stream. GET puts the form values into the URL string. GET is limited to about 256 characters (usually a browser limitation) and creates really ugly URLs.

    POST allows you to have extremely dense forms and pass that to the server without clutter or limitation in size. e.g. you obviously can’t send a file from the client to the server via GET. POST has no limit on the amount of data you can send and because the data does not show up on the URL you can send passwords. But this does not mean that POST is truly secure. For real security you have to look into encryption which is an entirely different topic

    Question: What are methods of HttpServlet?
    Answer: The methods of HttpServlet class are :
    * doGet() is used to handle the GET, conditional GET, and HEAD requests
    * doPost() is used to handle POST requests
    * doPut() is used to handle PUT requests
    * doDelete() is used to handle DELETE requests
    * doOptions() is used to handle the OPTIONS requests and
    * doTrace() is used to handle the TRACE requests

    Question: What are the advantages of Servlets over CGI programs?
    Answer: Question: What are methods of HttpServlet?
    Answer: Java Servlets have a number of advantages over CGI and other API’s. They are:

    Platform Independence
    Java Servlets are 100% pure Java, so it is platform independence. It can run on any Servlet enabled web server. For example if you develop an web application in windows machine running Java web server. You can easily run the same on apache web server (if Apache Serve is installed) without modification or compilation of code. Platform independency of servlets provide a great advantages over alternatives of servlets.
    Due to interpreted nature of java, programs written in java are slow. But the java servlets runs very fast. These are due to the way servlets run on web server. For any program initialization takes significant amount of time. But in case of servlets initialization takes place very first time it receives a request and remains in memory till times out or server shut downs. After servlet is loaded, to handle a new request it simply creates a new thread and runs service method of servlet. In comparison to traditional CGI scripts which creates a new process to serve the request. This intuitive method of servlets could be use to develop high speed data driven web sites.
    Java Servlets are developed in java which is robust, well-designed and object oriented language which can be extended or polymorphed into new objects. So the java servlets takes all these advantages and can be extended from existing class the provide the ideal solutions.
    Java provides a very good safety features like memory management, exception handling etc. Servlets inherits all these features and emerged as a very powerful web server extension.
    Servlets are server side components, so it inherits the security provided by the web server. Servlets are also benefited with Java Security Manager.

    Question: What are the lifecycle methods of Servlet?
    Answer: The interface javax.servlet.Servlet, defines the three life-cycle methods. These are:
    public void init(ServletConfig config) throws ServletException
    public void service( ServletRequest req, ServletResponse res) throws ServletException, IOException
    public void destroy()
    The container manages the lifecycle of the Servlet. When a new request come to a Servlet, the container performs the following steps.
    1. If an instance of the servlet does not exist, the web container
    * Loads the servlet class.
    * Creates an instance of the servlet class.
    * Initializes the servlet instance by calling the init method. Initialization is covered in Initializing a Servlet.
    2. The container invokes the service method, passing request and response objects.
    3. To remove the servlet, container finalizes the servlet by calling the servlet’s destroy method.

    Question: What are the type of protocols supported by HttpServlet?
    Answer: It extends the GenericServlet base class and provides an framework for handling the HTTP protocol. So, HttpServlet only supports HTTP and HTTPS protocol.

    Question: What are the directory Structure of Web Application?
    Answer: Web component follows the standard directory structure defined in the J2EE specification.

    Directory Structure of Web Component
    index.htm, JSP, Images etc..
    servlet classes
    jar files

    Question: What is ServletContext?
    Answer: ServletContext is an Interface that defines a set of methods that a servlet uses to communicate with its servlet container, for example, to get the MIME type of a file, dispatch requests, or write to a log file. There is one context per “web application” per Java Virtual Machine. (A “web application” is a collection of servlets and content installed under a specific subset of the server’s URL namespace such as /catalog and possibly installed via a .war file.)

    Question: What is meant by Pre-initialization of Servlet?
    Answer: When servlet container is loaded, all the servlets defined in the web.xml file does not initialized by default. But the container receives the request it loads the servlet. But in some cases if you want your servlet to be initialized when context is loaded, you have to use a concept called pre-initialization of Servlet. In case of Pre-initialization, the servlet is loaded when context is loaded. You can specify 1
    in between the tag.

    Question: What mechanisms are used by a Servlet Container to maintain session information?
    Answer: Servlet Container uses Cookies, URL rewriting, and HTTPS protocol information to maintain the session.

    Question: What do you understand by servlet mapping?
    Answer: Servlet mapping defines an association between a URL pattern and a servlet. You can use one servlet to process a number of url pattern (request pattern). For example in case of Struts *.do url patterns are processed by Struts Controller Servlet.

    Question: What must be implemented by all Servlets?
    Answer: The Servlet Interface must be implemented by all servlets.

    Question: What are the differences between Servlet and Applet?
    Answer: Servlets are server side components that runs on the Servlet container. Applets are client side components and runs on the web browsers. Servlets have no GUI interface.

    Question: What are the uses of Servlets?
    Answer: * Servlets are used to process the client request.
    * A Servlet can handle multiple request concurrently and be used to develop high performance system
    * A Servlet can be used to load balance among serveral servers, as Servlet can easily forward request.

    Question: What are the objects that are received when a servlets accepts call from client?
    Answer: The objects are ServeltRequest and ServletResponse . The ServeltRequest encapsulates the communication from the client to the
    server. While ServletResponse encapsulates the communication from the Servlet back to the client.

    What is the difference between an application server and a Web server?

    Taking a big step back, a Web server serves pages for viewing in a Web browser, while an application server provides methods that client applications can call. A little more precisely, you can say that:

    A Web server exclusively handles HTTP requests, whereas an application server serves business logic to application programs through any number of protocols.

Post a Comment

Your email is never published nor shared. Required fields are marked *