ServletContext Interface in Servlets

ServletContext is one of the predefined interface available in javax.servlet.* package, The object of the ServletContext is created by the web container at the time of deploying the application(which will be available one per application) . This object is used to get configuration information from web.xml file. If we need to share any common information between servlets, it is better to provide it from the web.xml file using the <context-param> element. Suppose if you have a web application which has more than one servlets and you need to share some common informations such as JDBC connection details etc.. Then ServletContext works better for you rather than ServletConfig which can accessed by only one particular servlet.

Important methods of ServletContext Interface

  • public String getInitParameter(String name): This method returns the value for the specified parameter name or NULL if the parameter name doesn’t exist
  • public Enumeration getInitParameterNames(): This method returns the names of the context’s initialization parameters as Enumeration.
  • public void setAttribute(String name,Object object): This method sets the object with a  name and stores the name/value pair as an attribute in the application scope.
  • public Object getAttribute(String name): This method returns the attribute for the specified name.
  • public void removeAttribute(String name): This method removes the attribute with the specified name from the application context.

Getting the ServletContext Object

We can get the ServletContext object to a servlet in the below ways

1.Using HttpServletRequest

HttpServletRequest has a direct method getServletContext() using which you can use to get the context object.

public class ServletContextExample extends HttpServlet
{
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException
    {
        PrintWriter out = response.getWriter();
        ServletContext servletContext = request.getServletContext();
        out.println(servletContext.getInitParameter("driverName"));
    }
}

2. getServletContext() method of Generic Servlet

Calling the getServletContext() method of the GenericServlet, Here we will be extending HttpServlet class but we know HttpSevlet is a sub class of GenericServlet.

public class ServletContextExample extends HttpServlet
{
   
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException
    {
        PrintWriter out = response.getWriter();
        ServletContext ctx =getServletContext();
        out.println(ctx.getInitParameter("driverName"));
    }
    
}

3. Through ServletConfig Interface

ServletConfig object has the direct method to get the context object.

public class ServletContextExample extends HttpServlet
{
   
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException
    {
        PrintWriter out = response.getWriter();
        ServletContext ctx = getServletConfig().getServletContext();
        out.println(ctx.getInitParameter("driverName"));
    }
}

getServletConfig() method gets you the config object, using that we can get the context object by calling the getServletContext() method.

Example of ServletContext

ServletContextExample.java

package com.javainterviewpoint;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletContextExample extends HttpServlet
{
   
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException
    {
        PrintWriter out = response.getWriter();
        //Getting the context object using getServletConfig() method
        ServletContext ctx = getServletConfig().getServletContext();
        
        //Getting context object using request
        //ServletContext ctx = request.getServletContext();
        
        //Getting context object of the GenericServlet directly
        //ServletContext ctx = getServletContext();
        out.println(ctx.getInitParameter("driverName"));
    }
}

web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee%20http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 <display-name>ServletsTutorial</display-name>
 <servlet>
     <servlet-name>ServletContextExample</servlet-name>
     <servlet-class>com.javainterviewpoint.ServletContextExample</servlet-class>
 </servlet>
 <servlet-mapping>
     <servlet-name>ServletContextExample</servlet-name>
     <url-pattern>/ServletContextExample</url-pattern>
 </servlet-mapping>
 <context-param>
     <param-name>driverName</param-name>
     <param-value>sun.jdbc.JdbcOdbcDriver</param-value>
 </context-param>
</web-app>

When we run the above code we will get the below output

URL : http://localhost:8080/ServletsTutorial/ServletContextExample

Output

sun.jdbc.JdbcOdbcDriver

Getting All Initial Parameters of ServletContext

package com.javainterviewpoint;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletContextExample extends HttpServlet
{
   
    public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException
    {
        PrintWriter out = response.getWriter();
        //Getting the context object using getServletConfig() method
        ServletContext ctx = getServletConfig().getServletContext();
        
        //Getting context object using request
        //ServletContext ctx = request.getServletContext();
        
        //Getting context object of the GenericServlet directly
        //ServletContext ctx = getServletContext();
        Enumeration enumeration = ctx.getInitParameterNames();
        while(enumeration.hasMoreElements())
        {
            String name = (String)enumeration.nextElement();
            String value = ctx.getInitParameter(name);
            
            out.print("Parameter Name : "+name+"<<<>>>> Parameter Value : "+value);
            out.println();
        }
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee%20http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 <display-name>ServletsTutorial</display-name>
 <servlet>
     <servlet-name>ServletContextExample</servlet-name>
     <servlet-class>com.javainterviewpoint.ServletContextExample</servlet-class>
 </servlet>
 <servlet-mapping>
     <servlet-name>ServletContextExample</servlet-name>
     <url-pattern>/ServletContextExample</url-pattern>
 </servlet-mapping>
 <context-param>
     <param-name>driverName</param-name>
     <param-value>sun.jdbc.JdbcOdbcDriver</param-value>
 </context-param>
<context-param>
     <param-name>username</param-name>
     <param-value>root</param-value>
 </context-param>
<context-param>
     <param-name>password</param-name>
     <param-value>root</param-value>
 </context-param>
</web-app>

Hit on the below url
http://localhost:8080/ServletsTutorial/ServletContextExample

Output

Parameter Name : username<<<>>>> Parameter Value : root Parameter Name : password<<<>>>> Parameter Value : root Parameter Name : driverName<<<>>>> Parameter Value : sun.jdbc.JdbcOdbcDriver

Leave a Reply

Your email address will not be published. Required fields are marked *