Create an application to show how to call a servlet from another servlet using sendRedirect method in apache tomcat server

There is another way to call a servlet from another servlet using sendRedirect method.
1) Create Index.html file by clicking on ‘new’ tab and select HTML.

Index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Practical Work</title>
</head>
<body>
<form action="first_servlet">
WRITE <input type="text" name="word" value="I am calling first servlet"/>
<button type="submit" name="calculate">Call First Servlet </button><br/>
</form>
</body>
</html>

2) Create a servlet that will redirect to another servlet. In order to send data, one requires to maintain a session.

First_Servlet.java

package com.programmerbay;

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

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class First_Servlet extends HttpServlet{
  public void service(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException
  {
  String word = request.getParameter("word")	;
  PrintWriter output = response.getWriter();
  
String word1 = word+".\n Now, It is calling second servlet";
  // redirecting it to second servlet
HttpSession session = request.getSession();
session.setAttribute("word", word1);
  response.sendRedirect("second_servlet");
  }

}

3) Write another servlet that will handle the data sent from the first servlet and print the message.

Second_Servlet.java

package com.programmerbay;

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

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

public class Second_Servlet extends HttpServlet{
  public void service(HttpServletRequest request,HttpServletResponse response) throws IOException
  {
    HttpSession session = request.getSession();
    String word = (String) session.getAttribute("word");
    PrintWriter output = response.getWriter();
    output.println(word+" \n usiing session");
    
  }
}

4) Modify the Web.xml file to map servlets.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  


 <servlet>
 <servlet-name>Invoke_First</servlet-name>
 <servlet-class>com.programmerbay.First_Servlet</servlet-class>
 
 </servlet>
 
 <servlet-mapping>
 
 <servlet-name>Invoke_First</servlet-name>
 <url-pattern>/first_servlet</url-pattern>
 
 </servlet-mapping>
 
 <servlet>
 <servlet-name>Invoke_Second</servlet-name>
 <servlet-class>com.programmerbay.Second_Servlet</servlet-class>
 
 </servlet>
 
 <servlet-mapping>
 
 <servlet-name>Invoke_Second</servlet-name>
 <url-pattern>/second_servlet</url-pattern>
 
 </servlet-mapping>
 
 
</web-app>

Output:

call one servlet from another

Leave a Reply