Often in web application an approach called MVC is used; according to it each request is initially processed by a servlet. The servlet invokes code that fetches or creates the business data, places that data in beans, stores the beans, and forwards the request to a JSP page to present the results.

In this example, our goal is to prepare sample bean object in servlet and pass it to JSP page behind servlet. Each request should result in a new bean instance, so here we apply request-based sharing. That means that our bean exist within single request.

Here is a bean shared:

package test;

public class SampleBean {

  ...
  public double getValue() { ... }
  public void setValue(int value) { ... }
}

A servlet processing initial request with the following forward to a JSP:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class RandomNumberServlet extends HttpServlet {

  public void doGet(

    HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    
    SampleBean bean = new SampleBean();
    
    // ... do something with bean:
    request.setAttribute("sampleBean", bean);
    
    String address = "page.jsp";
    RequestDispatcher dispatcher = request.getRequestDispatcher(address);
    dispatcher.forward(request, response);
  }
}

A JSP working on ready bean:

<jsp:useBean id="sampleBean" type="test.SampleBean" scope="request" />

<html>
	<head>
		<title>Request sharing</title>
	</head>
	<body>

		<h2>
			Bean value:
			<jsp:getProperty name="sampleBean" property="value" />
		</h2>
	</body>
</html>