Tuesday, April 27, 2010

Difference between ServletConfig and ServletContext

* Signature: public interface ServletConfig
ServletConfig is implemented by the servlet container to initialize a single servlet using init(). That is, you can pass initialization parameters to the servlet using the web.xml deployment descriptor. For understanding, this is similar to a constructor in a java class.

Example code:
<-servlet>
<-servlet-name>ServletConfigTest<-/servlet-name>
<-servlet-class>com.javapapers.ServletConfigTest<-/servlet-class>
<-init-param>
<-param-name>topic<-/param-name>
<-param-value>Difference between ServletConfig and ServletContext<-/param-value>
<-/init-param>
<-/servlet>

* Signature: public interface ServletContext
ServletContext is implemented by the servlet container for all servlet to communicate with its servlet container, for example, to get the MIME type of a file, to get dispatch requests, or to write to a log file. That is to get detail about its execution environment. It is applicable only within a single Java Virtual Machine. If a web applicationa is distributed between multiple JVM this will not work. For understanding, this is like a application global variable mechanism for a single web application deployed in only one JVM.

The ServletContext object is contained within the ServletConfig object. That is, the ServletContext can be accessed using the ServletConfig object within a servlet. You can specify param-value pairs for ServletContext object in tags in web.xml file.

Example code:
<-context-param>
<-param-name>globalVariable<-/param-name>
<-param-value>javapapers.com<-/param-value>
<-/context-param>