在实现之前我们首先应该了解请求转发请求重定向的概念和区别:https://www.cnblogs.com/haimishasha/p/5952129.html

       在Servlet中,我们是通过ReqDispatcher对象来实现请求转发,Servlet把请求转发给Servlet、HTML、JSP或其它信息资源,由第2个信息资源响应该请求,两个信息资源共享同一个request对象。

      有两种方式可以获取这个对象:

       

         //1.通过ServletContent.getReqDisPathcer()获取ReqDisPathcer对象,再调用该对象的forward()实现请求转发
        RequestDispatcher requestDispatcher= this.getServletContext().getRequestDispatcher("/test.jsp");
        requestDispatcher.forward(request,response);
        //2.通过Request.getDisPatcher()获取ReqDisPatcher对象,再调用该对象的forward()实现请求转发
        RequestDispatcher requestDispatcher=request.getRequestDispatcher("/test.jsp").forward(request,response);

 下面我们可以来看一个Demo:

  在TestReqDispatcher Servlet中将请求转发至test.jsp

  

package com.java.controller;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class TestReqDispatcher extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String data="今天天气很好";
        request.setAttribute("data",data);
        //1.通过ServletContent.getReqDisPathcer()获取ReqDisPathcer对象,再调用该对象的forward()实现请求转发
        RequestDispatcher requestDispatcher= this.getServletContext().getRequestDispatcher("/test.jsp");
        requestDispatcher.forward(request,response);
        //2.通过Request.getDisPatcher()获取ReqDisPatcher对象,再调用该对象的forward()实现请求转发
        //RequestDispatcher requestDispatcher=request.getRequestDispatcher("/test.jsp").forward(request,response);
    }
    public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

}

 test.jsp

  

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>大家好</title>
</head>
<body>
普通方式取出data:
<h2><%= request.getAttribute("data")%></h2>
EL表达式取出data:
<h2>${data}</h2>

</body>
</html>

  好了,我们看一下在浏览器输出的结果: