Difference between ServletConfig and ServletContext in Java Servlet
ServletConfig and ServletContext, both are objects created at the time of servlet initialization and used to provide some initial parameters or configuration information to the servlet. But, the difference lies in the fact that information shared by ServletConfig is for a specific servlet, while information shared by ServletContext is available for all servlets in the web application.
- ServletConfig is an object containing some initial parameters or configuration information created by Servlet Container and passed to the servlet during initialization.
- ServletConfig is for a particular servlet, that means one should store servlet specific information in web.xml and retrieve them using this object.
Suppose, one is building a job portal and desires to share different email ids (which may get change over time) to recruiter and job applicant.
So, he decides to write two servlets one for handling recruiter’s request and another one for the job applicant.
Where to store email-ids?
Put email-id as a name-value pair for different servlet inside web.xml which can further be retrieved using getServletConfig().getInitParameter(“name”) in the servlet.
- ServletContext is the object created by Servlet Container to share initial parameters or configuration information to the whole application.
Suppose, the name of one’s job portal is “NewWebsite.tg”. Showing the website name at the top of webpages delivered by different servlets, one needs to store the website name in every servlet inviting redundancy. Since the information shared by ServletContext can be accessed by every Servlet, it is better to go with ServletContext and retrieve the website name using getServletContext.getInitParameter(“Name”) whenever required.
Implementation of examples of ServletConfig and ServletContext is shown below.
Servlet for recruiter
Servlet for applicant
- Output: Deploy the app and open urls on localhost:
- As shown above, different servlets get different email-id with same parameter name “Email” because of different values attached to it in the web.xml.
Each servlet has got their own <init-param> inside <servlet> containing email-id.
- Both servlets got the access of ServletContext parameter “Website-name”.Since, <context-param> is outside of <servlet> in web.xml, hence it is independent of servlet and accessible from whole app.
Below is the table of comparison between the two:
|ServletConfig is servlet specific||ServletContext is for whole application|
|Parameters of servletConfig are present as name-value pair in <init-param> inside <servlet>.||Parameters of servletContext are present as name-value pair in <context-param> which is outside of <servlet> and inside <web-app>|
|ServletConfig object is obtained by getServletConfig() method.||ServletContext object is obtained by getServletContext() method.|
|Each servlet has got its own ServletConfig object.||ServletContext object is only one and used by different servlets of the application.|
|Use ServletConfig when only one servlet needs information shared by it.||Use ServletContext when whole application needs information shared by it|