什么是请求转发

请求转发就是服务器从一个资源跳转到另一个资源的过程。
具体过程如下图:
请求转发 - 图1

代码实现如下:

servlet01:

  1. @WebServlet(name = "Servlet01", value = "/Servlet01")
  2. public class Servlet01 extends HttpServlet {
  3. @Override
  4. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  5. //第一步,获取请求参数
  6. String username = request.getParameter("username");
  7. System.out.println("username:"+username);
  8. //第二步获得的参数无误后,开始处理servlet01的业务
  9. System.out.println("servlet01业务处理完毕");
  10. //第三步,处理完servlet01的业务后,为了让servlet02也能进行操作,先要让客户的资源共享
  11. request.setAttribute("key","资源共享");
  12. //第四步,将客户调度到servlet02程序中
  13. RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Servlet02");
  14. //第五步,客户前往servlet02应用程序
  15. requestDispatcher.forward(request,response);
  16. }

servlet02:

  1. @WebServlet(name = "Servlet02", value = "/Servlet02")
  2. public class Servlet02 extends HttpServlet {
  3. @Override
  4. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  5. //第一步,获取请求参数
  6. String username = request.getParameter("username");
  7. System.out.println("username:"+username);
  8. //第二步,即获取共享的客户资源,用以检查servlet01业务是否已完成
  9. RequestDispatcher getRequestDispatcher = request.getRequestDispatcher("key");
  10. //第三步,处理servlet02的业务
  11. System.out.println("servlet02的业务处理完毕");
  12. }

运行过程:
image.png
运行结果:
image.png

注意

WEB-INF中的文件,在客户端地址栏无法访问,但可以使用请求转发来访问