Points To Remember
- Servlet is a java class that implements javax.servlet.Servlet interface.
- Servlets are initialized by the servlet containers using init() method.
- Servlets like any other java class can have constructors.
- Servlet must have a no argument constructor in case it have a non zero arguments constructor.
- Servlet needs an object of ServletConfig for initialization.
- Interfaces cannot have constructors.
Can we have Constructors in a Servlet ?
Yes we can, please read How a servlet is initialized by the servlet container. So this article will make clear, why we cannot use a constructor for initializing a servlet.However there is no problem in having a constructor in a servlet. We can have both argumented and no arguments constructor in a servlet.
Example
What we are trying to do is to create a simple servlet with a constructor and assign a value to a String variable named as "msg".Servlet : ServletConstructor
package com.ekiras.demo;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletConstructor extends HttpServlet {
private static final long serialVersionUID = 1L;
private String msg;
public ServletConstructor() {
super();
System.out.println("HI i am getting initialized");
this.msg = "Servlet Constructor Demo";
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Get method --> msg = " + msg);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
Deployment Descriptor : web.xml
<?xml version="1.0" encoding="UTF-8"?>When we run the above application in the web server like tomcat we will get the following output.
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Test</display-name>
<welcome-file-list>
<welcome-file>ServletConstructor</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>ServletConstructor</servlet-name>
<servlet-class>com.ekiras.demo.ServletConstructor</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletConstructor</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
HI i am getting initializedSo this makes it clear that there is no problem in having a constructors in a servlet.
Get method --> msg = Servlet Constructor Demo
Comments
Post a Comment