Servlets are Java-based web components that run on a server to process client requests and generate dynamic responses. This article explains the servlet life cycle and how to handle HTTP requests and responses.
The servlet life cycle is defined by three main methods provided by the javax.servlet.Servlet
interface:
Example:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class LifeCycleServlet extends HttpServlet { public void init() { System.out.println("Servlet Initialized"); } public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>Hello from the Service Method</h1>"); out.println("</body></html>"); } public void destroy() { System.out.println("Servlet Destroyed"); } }
HTTP GET requests are used to request data from a server. In a servlet, the doGet
method is used to handle these requests.
Example:
public class GetRequestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>This is a GET Request</h1>"); out.println("</body></html>"); } }
Configure this servlet in web.xml
with a URL mapping:
<servlet> <servlet-name>GetRequestServlet</servlet-name> <servlet-class>GetRequestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>GetRequestServlet</servlet-name> <url-pattern>/getRequest</url-pattern> </servlet-mapping>
HTTP POST requests are used to send data to a server. The doPost
method handles these requests.
Example:
public class PostRequestServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>Hello, " + name + "</h1>"); out.println("</body></html>"); } }
Configure this servlet in web.xml
and send a POST request using a form:
<form action="postRequest" method="post"> Name: <input type="text" name="name"> <input type="submit" value="Submit"> </form>
You can override both doGet
and doPost
in the same servlet to handle different request types.
Example:
public class CombinedServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().println("Handling GET Request"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().println("Handling POST Request"); } }
Understanding the servlet life cycle and the difference between HTTP GET and POST methods is essential for developing robust Java web applications. By combining these concepts, you can build web applications that efficiently handle client-server communication.