Create an application to call a servlet from another servlet using RequestDispatcher in apache tomcat server

Here’s the code to invoke a servlet from another servlet using RequestDispatcher interface.
1) Create index.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) Now, create a basic servlet and pass the data of textbox field from index.html to First_Servlet.java. Use requestdispatcher to rely the data to other servlet.

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;

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";
// Dispatching it to second servlet
RequestDispatcher redirecting = request.getRequestDispatcher("second_servlet");
request.setAttribute("passingWord", word1);
redirecting.forward(request, response);
}

}

3) After that, write the code for second servlet that will handle the message or information from first servlet.

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;

public class Second_Servlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response) throws IOException
{
String word = (String) request.getAttribute("passingWord");
PrintWriter output = response.getWriter();
output.println(word);

}
}

4) Edit the deployment descriptor.

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